Tibetan musical notation - <AUTHOR> http://www.openculture.com/2019/04/tibetan-musical-notation-is-beautiful.html <comment><USER2> I play the guqin (古琴), a Chinese zither-like instrument which I believe is the oldest instrument in the world for which musical notation exists. Like the Tibetan notation, it doesn't indicate rhythm or duration of notes, just succession. Until a hundred years ago or so, people were just assuming they knew what the melody sounded like, and to this day you will hear different interpretations of the same piece that simply make different assumptions about the duration of notes.

<comment><USER3> Wouldn't that be equivalent to guitar tabs?

<comment><USER4> Tabs are actually written in beats and bars. Technically you are correct that the duration of each note is not entirely prescribed however as it's set into a strict rhythm notes in guitar tab don't exceed their max duration in context.

This image illustrates it well

[https://i.stack.imgur.com/2hRnd.png](https://i.stack.imgur.com/2hRnd.png)

<comment><USER5> I'm not sure those rythm annotations below the notes are part of the "standard" tab notation.

But then, I'm not sure there's such a thing as a "standard" tab notation.

<comment><USER6> That style of notation is more of the "paid for" notation we're all familiar with. Something you'd find in a tab book along the front row of shelving at record stores (remember those!). For those of us who were in the internet tabs heyday: this was a delicacy - among simply things like having correct notation.

The whole point of tab is it's shorthand mentality (As I'm sure you're aware of). It can mean whatever you want it to mean. I grew up learning guitar on a tab system created by my teacher, which I've never really seen duplicated before, but was based off of chord diagrams (even for non-chords).

<comment><USER4> Yeah the books were great! I also discovered that Italians used solfa after seeing an Italian blink 182 tab book at a holiday camp!

So it had the chord names written like Do-M La-m...

</comment></comment></comment></comment></comment></comment><comment><USER7> Not related to Tibetan musical notation, but the notation of Gregorian chant is also an interesting system and quite accessible (and probably interesting) to musically inclined modern students, self-taught or otherwise (the scale is movable).

See:

[https://www.sanctamissa.org/en/music/gregorian- chant/choir/l...](https://www.sanctamissa.org/en/music/gregorian- chant/choir/liber-usualis-1961.html)

[http://media.musicasacra.com/books/chironomy.pdf](http://media.musicasacra.com/books/chironomy.pdf)

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

<comment><USER8> Another style I enjoy is Byzantine chant, though I only recently realized it has its own notation:

[https://cappellaromana.org/divine-liturgy- music/](https://cappellaromana.org/divine-liturgy-music/)

<comment><USER7> Indeed, Byzantine chant is glorious! It admits of many _styles_.

For example, the Antiochian and Russian (in translation to English, at least in parts):

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

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

This is a _most_ remarkable rendition of Russian Great Vespers:

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

I am moved every time I listen to it, a _masterpiece!_ I believe the setting is by Sergei Rachmaninoff.

<comment><USER9> Russian liturgical music is not Byzantine chant. Yes, traditions like Znamenny can ultimately be traced back to Byzantine music, but along the way they evolved into something different. Later, Western polyphonic singing that had nothing to do with the Byzantine tradition was imported, and that informed the work of many prominent 19th-century and early 20th century Russian composers of sacred works.

That is why in the Orthodox Christian world, people perceive such a distinct difference between the liturgical singing of e.g. Greece, Albania, or Romania, and the singing of e.g. Ukraine or Russia.

<comment><USER7> Fair enough, but there is an audible relationship — it's not apples to oranges, as discernible even in the recordings linked in my previous comment.

Similarly, in the West the one-voice Gregorian chants are not separated by a great gulf from the polyphonic pieces that gained prominence in the 1500s.

One can listen to a Gregorian choir sing the _Regina caeli laetare_ and then listen to a rendition of Palestrina's _Sicut cervus_ without the feeling of crossing into a wholly alien musical universe:

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

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

</comment></comment></comment></comment></comment><comment><USER10> I've always wondered, is there a better way to annotate music? Essentially, we are transcribing temporal patterns into spatial 2D patterns. Discrete notes were created to allow for hand written notation, but if we assume notation doesn't need to be handwriting-compatible, I wonder if we can do a better job of capturing details? Perhaps some kind of spectral/FFT scroll?

<comment><USER11> The map is not the territory. Furthermore, the language of the map limits how the territory can be described. So "better way to annotate music" depends, at least in part, on the kind of music you're annotating.

This really came home to me when I was studying frame drumming of the central Asian plains. In Western notation terms, this music has very complex and difficult "time signatures", but that's because it's not metric in the same way as European music. If you think of it in its own terms, it's actually pretty easy to understand. Just break the rhythm down into sub-beats of 2, 3, or 4 pulses. So for example, a 13 beat long line might be 23233. Try counting that out loud - one two one two three one two one two three one two three - and you'll immediately hear it. But it's hell to notate in Western notation. And it gets worse when pieces turn into meta-sequences that have "bars" of varying length.

I've long been involved with the free improvisation scene, and improvisation always happens within some sort of set of rules. How do you notate something that's made up on the spot, within a framework? Take blues guitar leads as an example. They tend to stick within pretty limited pentatonic scales, against the underlying triplet shuffle feel of American music, but they're not "notated", really.

This leads to other, alternative notation systems that more aptly describe the style of music at hand, like the Nashville Number System.

<comment><USER12> Additive meter is actually a well-known concept even in Western music. It's clearly needed even to make sense of, e.g. "5/4" or "7/4" meter, which yes, are sometimes found in the repertoire - because these are already ambiguous in practice: does the 5 in "5/4" mean "3+2" or "2+3"? You need to know that in order to understand the music and figure out how it goes - to make it "meaningful" as someone else said.

<comment><USER11> Additive meter just shows where the concept of "time signature" breaks down The pulse of the music is not apparent from the notation. So it doesn't even fully explain Western music, much less non-Western music. (That said, while 7/4 exists in the repertoire, it's exceedingly rare - European music tends to be very simple rhythmically, compared to Indian, Arabic, or most African music.)

</comment></comment></comment></comment><comment><USER13> Worth clarifying the curators of this text are Emma Lewis and Devin Zuckerman from the Buddhist Digital Resource Center, and not Google, as the article misleadingly suggests.

</comment><comment><USER14> This is very reminiscent of early European neumes: [https://en.m.wikipedia.org/wiki/Neume](https://en.m.wikipedia.org/wiki/Neume)

Here's a good example: [https://catapultingintoclassical.files.wordpress.com/2015/11...](https://catapultingintoclassical.files.wordpress.com/2015/11/neumes001.jpg)

</comment><comment><USER15> Some other fun examples of points in the music notation space are the various notation systems used by traditional Japanese musical instruments... For instance, the shakuhachi (a type of bamboo flute) has a system where various combinations of fingerings/blowing technique are each assigned distinct characters (the same pitch, but achieved with different fingerings, and therefore having different tone colors, will have different characters). Rhythm and ornamentation are then indicated with various annotations on these characters. You could maybe make the analogy that Japanese music notation relates to Western classical notation in a similar way to how Chinese characters compare to alphabetical systems...

Other instruments have similar (but generally mutually unintelligible!) systems, with different characters assigned to particular notes/techniques peculiar to those instruments.

</comment><comment><USER16> Off topic: Chanting in an ancient language (which you probably don't even understand) isn't what buddha taught and music does cause suffering (according to the teachings)

<comment><USER17> Well, there are different variants of Buddhism. Tibetan Buddhism is pretty different from, say, Zen.

<comment><USER18> Yes there are, but as an aside, Zen chants Sanskrit too. It's a common practice.</comment></comment></comment>


Nitrous.IO for Mac - Edit Code Locally, Run In the Cloud - <AUTHOR> https://www.nitrous.io/mac

<comment><USER2> This looks awesome. I had to stop playing the demo video, to go sign up immediately.

Nice free tier, but the rest looks a bit pricy.

UPDATE: After signing up and creating my first box, I cant find the mac application thats in the demo video to install :(

UPDATE2: I contacted them via chat, and while it isnt reachable by link once logged in, its at [https://nitrous.io/mac](https://nitrous.io/mac)

<comment><USER3> Linked at the bottom of the landing page:

[https://s3.amazonaws.com/action-mac/Nitrous- Mac-0.1.5.zip](https://s3.amazonaws.com/action-mac/Nitrous-Mac-0.1.5.zip)

<comment><USER4> [https://s3.amazonaws.com/action-mac/Nitrous- Mac-0.1.6.zip](https://s3.amazonaws.com/action-mac/Nitrous-Mac-0.1.6.zip) now

</comment></comment></comment><comment><AUTHOR> This has been in beta for a while, and we'd like to thank all our beta testers! We're very excited about this release and we believe this makes cloud-based development more approachable to users who are used to graphical text editors.

<comment><USER2> Having just tried it out (for the first time, briefly) is it purely for development, not production? Its great by the way. But do you see it as a dev server with the user organising their own production boxes elsewhere?

<comment><AUTHOR> Yes purely for development. All our boxes come bundled with the heroku toolbelt and google app engine for you to deploy your apps elsewhere.

<comment><USER2> Sounds good. Thanks.

</comment></comment></comment></comment><comment><USER5> Be awesome if the online code editor included Emmet [http://docs.emmet.io/](http://docs.emmet.io/) like jsFiddle. :}

</comment><comment><USER3> Congrats on the launch, this looks great! Have you guys testing the file syncing a git repo or is that not recommended?</comment>


Murphy's law is not a joke ! - <AUTHOR> http://dis.weebly.com/1/post/2007/05/murphys-law-is-not-a-joke.html <comment><AUTHOR> @nurall

Yes, good link. I don't agree with the other comment to your post, but that is not the point.

An important factor to take in account and that you didn't talk about is the cost of a try. Some can be cheap and some are expensive. The eralier one fails, the cheaper it is.

YC makes it all very cheap to increment your n. The selection process allows you to fail very early and thus with minimal cost. Some see their dreams fell in pieces. But they should see the positive side of it. They could have borrowed love money, spend it all and fail. Would mom and pop be able to see that the idea is bogus, would they be objective and honnest enough to recognize it, even to themselves ? I wouldn't bet on this.

I am just repeating in my words what PG said. I fully agree with his analysis and the YC combinator success confirms its validity. But apparently some people (like Jay) don't get it.

If I had the money, I would join YC as coinvestor. Not because there might be money to do out it. Just because it is usefull for these kids. There alot of smart kids out there that simply don't, and won't, have their chance. What a waste for them and for us all. I would do it as a long term investment with most probably no direct return for me. Maybe their first project will go nowhere, but the second, third our fourth may be the hit. Investing in these kids is doing something very usefull for them, for the added value they will bring to internet users, the economy, etc.

This startup news stand is also a really usefull thing and not only for people in SV. Thanks.

</comment><comment><USER2> Related post on the Probability of success/failure - <http://news.ycombinator.com/comments?id=7680>

</comment><comment><USER3> I wish maths was always taught this way.

</comment><comment><USER4> The singularity is near!</comment>


Seeing Double - <AUTHOR> http://www.newyorker.com/magazine/2016/05/16/a-world-without-mirrors <comment><USER2> "For this reason, the use of a mirror entailed a set of safety guidelines and instructions"

Interesting to see common superstitions about mirrors span cultures: In Ottoman times wall mirrors were commonly turned around at night to block evil spirits, so the backside of mirrors were richly decorated (e.g. [https://www.rubylane.com/item/151662-1826/Turkish-900-Silver...](https://www.rubylane.com/item/151662-1826/Turkish-900-Silver- Embossed-Wedding-Mirror)).

</comment><comment><USER3> > _But before there was any such thing as a mirror, human beings were still > self-aware_

There was never such a time, because in the span of our existence we've always had calm water surfaces to peer into.

</comment><comment> david-given Have you noticed that your reflection always appears to be staring you straight in the eyes?

The reason is obvious, of course. But once you start noticing, it never stops being creepy.

<comment><USER4> Optics is the creepiest of sciences, closely followed by nematology.

<comment><USER5> Nematology ? Why ?

From WP:

        In short, if all the matter in the universe except the nematodes were swept away, our world would still be dimly recognizable, and if, as disembodied spirits, we could then investigate it, we should find its mountains, hills, vales, rivers, lakes, and oceans represented by a film of nematodes. The location of towns would be decipherable, since for every massing of human beings there would be a corresponding massing of certain nematodes. Trees would still stand in ghostly rows representing our streets and highways. The location of the various plants and animals would still be decipherable, and, had we sufficient knowledge, in many cases even their species could be determined by an examination of their erstwhile nematode parasites."[19]</comment></comment></comment>


How to ask good questions - <AUTHOR> https://jvns.ca/blog/good-questions/ <comment><USER2> Having suffered severely from impostor syndrome for a few years, I caught myself asking a lot of really useless advanced questions that made me feel/look smart, and ignore the simpler but useful questions.

I was afraid that I would spill the beans on being a fraud who had no idea what he was doing, so I'd pretend that of course we'll use library X to write algorithm Y, but then bring up unnecessary complexity about implementation details.

One significant transition I made as I started to feel valuable and deserving of my position was to stop asking stupid questions and start asking simple questions.

</comment><comment><USER3> > _Do some research_

To me, doing research is the lowest hanging fruit with the highest return on investment. From a journalism context, I push students to hit LexisNexis and Google hard before they do interviews. Whenever a student complains that they don't have any interesting questions to ask, or the subject had nothing interesting to say, almost always the problem could have been mitigated with pre-interview research.

The benefits of doing research for interviewing:

\- You can learn the boilerplate of the subject, which serves the dual purpose of making you more nimble in interpreting the context of responses and saves you from wasting valuable question time of basic info ("So when did you start directing, Mr. Tarantino?)

\- You can learn the current or ongoing controversies of a subject, from which almost all interesting questions arise.

\- You find other interesting people to interview.

When your questions are derived from research, you save time by cutting through the boilerplate and any bullshit that might be offered as a response. Furthermore, there's an unquantifiable benefit in increasing _respect_ \-- that is, your subject will give you more serious, thoughtful answers because they see that you've put serious, thoughtful effort into understanding them.

You can gain this rapport if you're in a position of authority, or have the chance of multiple interviews. But in cases where you're just another possibly-threatening interrogator, doing your research is an easy and accessible way of increasing your authority, and thus, the quality of answers you receive. It can more than make up for in-person skills, depending on the situation and subject.

Edit: the OP suggests not being so strict on Gogling-before-asking, because she likes to ask basic questions during casual conversation, like over lunch/coffee. I think you can have your cake and eat it too. Sometimes I'll ask questions that I already know the answer to, as an icebreaker. But again, this requires research for the domain knowledge. Ideally, you want your icebreaker questions to be one that you anticipate the person is enthusiastic to answer. While they're saying what you think they'll say, you can spend that time gauging the person's mood and think of segues into other lines of questioning. Of course, once in awhile, they'll respond to your softball basic question with something that you didn't expect...and that in itself leads to potential insights.

<comment><USER4> as a an usual question answerer, people that come at me without doing basic google research pisses me off to no end and I get super unhelpful if I have to start the explanation from the ice age forward, especially if I'm not in a teaching settings.

<comment><USER5> I'm going to completely disagree with you. I've always (WITHOUT EXCEPTION) learned valuable information when I've _chosen_ to ask a basic questions I could have Googled. There is a _reason_ people choose to answer it.

Here is a typical basic question anyone could Google: "Could you explain the difference between C-style and C++-style arrays."

I guarantee you that the answer is better than the Google search.

Now let me search: [https://www.google.com/search?q=difference+between+C-style+a...](https://www.google.com/search?q=difference+between+C-style+and+C%2B%2B-style+arrays)

Yep. NOT ONE of the search hresults (I opened about 10) explains what they are, easily.

As a quick test, go ahead and ask your coworkers "Could you explain the difference between C-style and C++-style arrays." They are a hundred times more likely to give you better answers.

I thought I would be downvoted for this comment so I went ahead and got on IRC. This is the answer I received: hi - could you explain the difference between C-style and C++-style arrays?

<[respondent]> C-array is just a pointer to a bunch of values you hopefully know the count of <[respondent]> C++ std::array thing iirc has more type safety

That summarizes EVERYTHING. That's literally it. The key, key, key thing "you hopefully know the count of" comes FIRST. It's just a pointer. You hopefully know the count.

And then it mentions that this is information which std::array can track.

That's it. Try to find anything like those two lines out of all of the links. As far as UNDERSTANDING - as in, if there's a conceptual hurdle, you will never EVER get as easy and quick an understanding as if you ASK someone. NEVER EVER EVER.

<comment><USER4> also, I've to add this is an extremely bad question to google (not in general)

"Could you explain the difference between C-style and C++-style arrays"

to solve it with googling you need instead two searches (c array definition and implementation / c++ array definition and implementation) plus considerable brainpower to derive the difference.

what you're asking is thus not a piece of arcane knowledge, but involves a lot of thinking for the answerer.

a good question to ask would be 'where do I find a complete specification of c++ arrays?' \- I'd be perfectly happy to sharing resources and even help searching, because it shows you're willing to put in the work to understand yourself instead of relying on someone else to do the differential analysis for you and spoon feed you the results

<comment><USER6> This specific question formulation suffers from too vague terminology. If you asked me, I wouldn't even be sure what "C++-style arrays" means. IMHO, the most important part of the (imprecise) answer about "pointer vs std::array" was saying "std::array". Just googling that, immediately gives several results that all talk about "decaying to a pointer".

"Because std::array doesn't decay to a pointer when passed to a function, the size() function will work even if you call it from within a function:"

That's golden. It doesn't fully explain the C pointer/array differences, but it points out their fundamental problem.

Anyway it's not a good example of question requiring a lot of thinking. It _is_ standard knowledge for people involved with C++, so could be a very effective thing to ask someone more experienced, except it's so basic that googling it I currently get a good SO answer on first place: [https://stackoverflow.com/questions/7129717/what-does-c- styl...](https://stackoverflow.com/questions/7129717/what-does-c-style-array- mean-and-how-does-it-differ-from-stdarray-c-style)

I strongly disagree only people who read the fine "complete specification" have done their homework. Yes, interrupting coworkers is problematic and doesn't scale, but stackoverflow does (and IRC etc are not bad). I adopting Julia's post as my new non-hostile link to how to ask questions.

</comment></comment></comment></comment></comment><comment><USER7> I'd add another point to the list: when considering asking a question, first ask yourself why the situation is such that you have a question.

That's vague, so let me give an example. Let's say you want to ask, say, why data being sent over a network is chunked at a certain size. Before asking that question, first ask, "why _would_ it be chunked?" You then might start down the road of considering that maybe there a maximum size of data that can be sent over the wire, and dig in from there and answer your own question.

Most of the time, things are the way they are because someone made them that way - you're not discovering new land that nobody has seen before - and that someone probably had a reason. If you try to think about what that reason might be - if you ask "why would this be made to be this way?" \- you will often find a way to the answer to your original question on your own without having to ask anyone else.

Often, when learning a new library or abstraction, I ask myself, "how would I have designed this?" Most of the time, either the way I would have designed it is the way it is designed and it's then easy to understand, or it isn't and the difference between how I would have designed it and how it was designed points directly at something I hadn't considered or been aware of, giving me a place to start understanding.

Critical thinking and careful investigation are incredibly valuable skills that can push you ahead by leaps and bounds without needing anyone else to help you. Those skills do take time to develop, though.

<comment><USER8> > Most of the time, things are the way they are because someone made them that > way - you're not discovering new land that nobody has seen before - and that > someone probably had a reason.

This is so important when reading others code or re-designing a system. It is easy to be mentally lazy and just think that the prior system was designed poorly when in fact it is covering many cases you simply have not come across yet.

</comment></comment><comment><USER9> Since this is New Years and I have... had a few... but not too many since I have new son (3 weeks old who is sleeping hence why I'm writing this nonsense instead of wasting time at a party) I want to come to a more broader conclusion.

To ask a good question you have to know your audience! This includes asking a teacher, coworker, boss, a spouse and even a _computer_ or cloud of computers such as _Google_. You wouldn't want to ask or phrase the same questions that you ask Google that you ask your teacher (believe me I have googled things that are proper english and seem benign yet return horrible and embarrassing results... on the other hand I have googled pretty embarrassing things that I would never ask a human... usually medical).

Now the above probably seems pretty obvious to HNers but believe me it is surprising how globally it is not.

Also as the article does mention you do need to know who to talk to first but you also need to figure out who to ask followup questions.

I went to GaTech late 90s to early 2000s and there was a teacher there named Jim Greenlee (who for all extensive purposes was a bastard albeit effective bastard). Jim Greenlee was very much of the opinion that "human intervention should be almost always the last resort" and that it is better to learn and fail by doing.

Now I don't entirely agree with Jim but I have to say given the way things are improving with computers you really should learn how to ask them questions and probably first since they are increasingly becoming more effective at answering them.

We live in a time where you need to be effective with interfacing with both computers and humans.... Know your audience... and probably ask the computer first since they don't seem to have feelings... yet.

</comment><comment><USER10> > it spreads the load around

My biggest weakness/opportunity for growth is my unwillingness to ask for help/ask questions. This strategy is key to me trying to save face and it's a good way to learn more about my team's expertise.

> Why does rkt store container images differently from Docker? ... The answer > I got was super super helpful

IMO you'd have gotten a satisfactory answer just by virtue of the fact that you're posing a question about a difference from a competitive software product. And in this case it's the market leader by far. Whenever someone poses a difference in behavior or performance/specifications between two similar/compatible software packages it very often inspires a lot of interest.

Aside: I think that Julia's blog posts or at least this one in particular is a great highlight of female participation in software development. Not that men don't post stuff like this on occasion. But it seems like the focus is often more content regarding technical matters than social ones.

<comment><USER11> Know what you know, know what you don't know, and strive to move the latter into the former by asking questions. Someone unwilling to ask a question when they don't know something is a quick way to get me to fire you when that vanity runs into reality.

Stop trying to be perceived as important and focus on actually doing important things... the rest will sort itself out.

</comment></comment><comment><USER12> > I see a lot of senior engineers who frequently ask for clarifications – I > think when you're more confident in your skills, this gets easier.

> The more I do this, the more comfortable I feel asking someone to clarify. > in fact, if someone doesn't ask me for clarifications when I'm explaining > something, I worry that they're not really listening!

I think this is really powerful. I believe high skilled professionals tend to have a clear idea of they know and what they don't know.

</comment><comment><USER13> The best place to ask questions for me is the internet.

It is regularly so hostile and rules lawyerly that I have to collect everything I know about the problem into the post, and pre-empt every objection with an existing fact.

And, once I do that, I'm almost always close enough to the solution that I don't need to press "post." Just typing what I know into the Stack Overflow window, and imagining all the objections to the question, structures my question to the point of finding the answer!

<comment><USER14> So Stack Overflow is your version of the rubber duck?

[http://www.rubberduckdebugging.com/](http://www.rubberduckdebugging.com/)

</comment></comment><comment><USER15> The title made me think of Eric S Raymond. Don't miss the mention in the article.

<comment><USER14> I think that I agree with the OAs opinion of esr's _How To Ask Questions The Smart Way_. Quite a lot of rhetorical language.

I had the temerity to try writing a more neutral and very brief summary of the ESR page some time ago.

[http://forums.debian.net/viewtopic.php?f=12&t=116898](http://forums.debian.net/viewtopic.php?f=12&t=116898)

[New Year is well past in my timezone, and I'm cooking the dinner right now]

</comment></comment><comment><USER16> Ask credible questions

</comment><comment><USER17> "If you haven't already, would you mind reading about HN's approach to comments and site guidelines?"

This question does:

       - Identify terms you don't understand
       - Ask questions where the answer is a fact

does not:

       - Do some research  // profile flag user accessed faq
       - Decide who to ask // ^

Happy New Year, HN!

<comment><USER18> It's not a question so much as a request.

</comment></comment><comment><USER19> Grmbl, questions.

When your in IT, everyone has questions. They think it's all the same. I don't have any time anymore to fix a or B's computer. Then I have to worry if they are offended.

At my job, there's a junior who constantly annoys me. He starts telling his problem with absolutely useless info and then says what he thinks the solution would be ( he's always way off). I go to him, ask it to show it to me with fiddler or Google console tools and almost always you can see the problem there. It's absolutely B's.

Or he asks a stupid question where the only possible answer is yes, I think he's doing it to show off as smart ( ps. He's obviously not and after 2 years, he still doesn't do much)

God, I hate it</comment>


LeadsCon: a crash course in "show me the money" - <AUTHOR> http://www.currentlyobsessed.com/2010/06/23/leadscon-a-crash-course-in-show-me-the-money/

<comment><USER2> I'm a big fan of lead-gen of late -- that said, I'm not such a big fan of what many of the higher-ed lead gen providers are focused on, which is volume for volume's sake.

We'll be seeing the fallout of that approach in coming months & years, as the education loan default crisis comes front and center, as graduates of online colleges find that their earning potential doesn't meet their loan payback schedules.

IMO, they should spend more time on how to attract higher quality students for the programs (that is, students who complete the programs and go on to increasing their earning potential), and in the process, they'd build truly sustainable long-term businesses.</comment>


Built to Burn - <AUTHOR> https://99percentinvisible.org/episode/built-to-burn/ <comment><USER3> Sounds like they could learn lots from Australia. Controlled burns are a norm every summer, CFA has pretty much everything from the article in their advice ([https://www.cfa.vic.gov.au/plan-prepare/how-to-prepare- your-...](https://www.cfa.vic.gov.au/plan-prepare/how-to-prepare-your- property)), there are requirements for water tanks on new properties in many places. CFA mostly acknowledges the bush fire and lets it burn.

They did the same mistake with fuel buildup years ago, but it seems the transition to new system was much quicker.

<comment><USER4> Along with the majority of houses in suburban and rural areas having metal (Colourbond) roofs and brick walls means that the issue of embers discussed in the article would not be as dangerous to homes.

<comment><USER5> Brick walls are unfortunately not a good choice in earthquake-prone California.

<comment><USER6> What you are forgetting here is that people and the market build houses with a short lifespan in mind. They could as easily build new houses with reinforced concrete. And if there was that much earthquake consideration you would see support structures and dampeners as part of the regulation in non-trivial buildings ([https://resources.realestate.co.jp/buy/earthquake- building-c...](https://resources.realestate.co.jp/buy/earthquake-building- codes-and-technology-in-japan/)) (Also see regulation in Greece and Italy -- [https://earthquaketrack.com/p/greece/recent](https://earthquaketrack.com/p/greece/recent)).

The real estate market forces cheap wooden houses. It is not tradition or earthquakes... I feel here in California there is dangerous complacency regarding earthquakes ([https://www.economist.com/united- states/2018/02/03/america-i...](https://www.economist.com/united- states/2018/02/03/america-is-not-prepared-for-the-next-big-earthquake)). People fear them but the rarity has transformed the fear into wishful thinking and avoidance.

</comment></comment></comment></comment><comment><USER7> Living in a country where pretty much _everything_ has been built out of brick/stone/concrete for a long while now (with clay shingles), I find US building codes to be baffling.

Not criticizing, mind you, since clay shingles are still supported by wooden beams in older detached homes and those go out too in forest fires (which we also have, on a yearly basis and with tragic results) - I just don't get the rationale for small homes to be built out of wood these days - is it cost?

(Edit for typos)

<comment><USER8> Americans don't believe me when I tell them my relatively recent regular UK house is built out of brick!

They say things like 'it's a wooden frame with a brick facade, right?' or 'I'm sure the supporting structure isn't brick.' No it's brick. It's all brick. The walls on all sides in every room are about 30cm of solid brick with plaster directly on top. Even the internal ones.

If you want to run a new light cable or something you'll be using a hammer and chisel to make a channel to put it in.

<comment><USER9> I don't think you could do this in California due to earthquake-related parts of the building code.

<comment><USER10> Yeah, a brick house becomes a sandcastle in an earthquake.

<comment><USER11> We had the technology to build earthquake-proof houses for quite a while without needing to use timber framing which has all kinds of downsides.

[http://dme.engin.umich.edu/stubbornstructures/](http://dme.engin.umich.edu/stubbornstructures/)

The only advantage is cost and speed of execution, they call them McMansions for a reason.

<comment><USER12> Timber also has its upsides, including locking up carbon, and being easy to modify after the initial build.

<comment><USER13> Locking up carbon? The trees are produced / harvested according to demand, no? I think I may be misunderstanding your point in noting this.

<comment><USER12> Dry, moisture-free wood is about 50% carbon by weight.

So if the panelised timber frame superstructure for an rectangular two storey house of 150m2 is approximately 14 metric tonnes, you're locking up 7 tonnes of carbon for the life of the building (minus of course the carbon emitted to plant, prune, fell, transport, mill, treat, get the wood to site, install it etc.).

If you can use more timber through the construction, all the more effect.

<comment><USER11> Doesn't the same amount of carbon stays locked the same in a tree in the ground? I don't understand why building with wood helps in this case. There's plenty of space to grow more trees...

<comment><USER12> There's not an infinite amount of space to grow trees actually. A decent forest needs the right climate, water. Economically forestry must compete with other land uses such as grazing, orchardry, etc.

It takes pinus radiata about 25 years to reach maturity. Then it can be turned into buildings/ houses, and the carbon locked up in that structure, which can be e.g in the city or suburbs- somewhere there will never be suitable for forestry.

And then the forest can be replanted and the virtuous cycle begins again.

tldr; locking carbon up in timber gives more flexibility than just relying on standing forests.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> The sheer stupidity of having a wood shingle roof in a place with the Santa Ana winds astounds me. That's wasn't against code?

This was such a fascinating article. Classic government intervention, focusing on large projects that are ineffective and not backed by current science instead of direct interaction with the problem door to door in lots of smaller expenditures that would actually be effective.

<comment><USER15> Wood shingled roofs are currently against code. The wood shingle example was from 1980. Current code even disallows wood decks.

My childhood home burned in the Oakland hills fire - and it had a tile roof -- so roofing material is not enough. Having a defensible space also seems key.

On a related note - I watched a youtube video on a woman driving up and down the streets of Paradise to show people if their homes survived. The homes that survived all seem to be surrounded by a watered lawn. This reinforces maintaining a defensible space is key to survival.

<comment><USER16> In this particular disaster, there are more factors than defensible space. Some well-maintained, well-built homes with large yard spaces are ash now; other homes with no defensible space at all came out unharmed, including one with several cars in the yard and a 5 gallon can labeled "flammable" right against the garage.

Removing fuel from on and around your home is a good idea regardless. Beyond that, I don't think most of us are qualified to guess on the fire behavior in Paradise (or Redding, or Napa, or Santa Rosa...).

I will say that of the buildings still standing in Paradise, a disproportionate number of them seem to be brand new construction (<5 years old).

<comment><USER17> I don't know if you've ever been to or through Paradise, but its very similar to many foothill communities in the north and south Sierras, in the sense that the town was effectively built into the surrounding forests. The forest in that area is primarily Ponderosa, and pretty decent sized ones as well. In this sense, and I can speak from authority as I've spent far more time in Paradise than I would have preferred (reasons below), pretty much the entire town had negative defensible space. Most of the houses in Paradise are (were) fully surrounded by 50-120 foot pondos and under a closed canopy.

Likewise, most of the new construction was built on the ridge (Skyway) between Paradise and Chico, which is primarily California live oak and grassland.

A __huge __mitigating factor in all of this however, is the level of poverty in and around the (former?) town of Paradise.

Not sure how well this has been represented in the media, but Paradise as a community is poor as shit. There are just about -shit_all- jobs (outside the hospital) in that area that don't involve selling cigarettes and lotto tickets. Paradise, Concow, Magalia, pretty much some of the poorest areas of California I know of. Many of the families in that area lived on properties that had been built over several generations, handed down from gold-rush era mining claims. These aren't people who keep insurance on anything. Nor are they the kind of people who concern themselves with maintaining a defensible space around their homes.

<comment><USER16> I stayed in Paradise for a handful of days around a month ago. Nice people and town, and I'm really saddened to see what's happened to them.

As the article points out, there are some interesting areas where there are green or just lightly singed trees surrounding homes that are totally gone. Certainly there are also a lot of trees that clearly went up like torches. There was also a place where the fire came halfway up the front yard and then just ... stopped. If I remember right, that yard was mostly bare dirt though with just a light layer of pine needles, which don't burn well. Every place around it was completely gone, and I mean _completely_. They had a neighbor's house all of about twenty feet from their house. Neighbor's house is just dust, the wall on this house wasn't even darkened.

The new construction I was talking about were individual buildings or, in one case, a small series of retail spaces. Everything surrounding them was just ash.

So there may be some merit to what the article's saying. It kind of explains some of the oddities I've seen. I didn't get to survey the area in detail before it was destroyed though.

I've been out there one full day so far on the ground in a SAR team, and I'm scheduled to be out there again Sunday through Wednesday in overhead. I wish I could be out there more but my day job is being a bit difficult right now.

</comment></comment></comment></comment></comment><comment><USER18> The lessons of the Great Fire of London still apply. Yet discussion moved on to this idea that 'natural fires' should not be suppressed as this causes too much dead wood to build up on the forest floor meaning that the 'natural fire' burns too intensely.

That massive fire in Yellowstone way back in 1988 was when this new thinking set in. From then on the Forest Service could be blamed for poor management and allowing this kindling to build up, resulting in truly catastrophic fires. It was a seductive way of thinking and whilst everyone was thinking it the basic lessons of The Great Fire of London were ignored.

In The Great Fire of London the problem was the wind and embers being blown across town to start new fires. This overwhelmed the authorities of the time. The solution was to build houses with non-flammable materials. In that way an ember landing on a house would not cause another fire to start up.

The other detail of note was the use of parapets. In London roofs are always behind a parapet, so, if a house or property does go up in flames then the roof will not fall off the house but be contained within the four walls. In this way adjacent properties, e.g. across the street, don't go up in flames too.

Nowadays building codes in London expect a property to not go up in flames even if the adjacent house is fully ablaze. This is buying time, clearly there is expectation that the adjoining fire gets put under control within a few hours. It doesn't seem that in California there is this thinking, which is understandable if you do have lots of garden and some distance to the adjacent house. But I bet that the first people to populate London thought that way too, they never imagined the pasture land next to their house would become a housing estate some centuries later.

Another small matter is that of sprinkler systems. Architects do not like sprinklers even though they do a fantastic job of suppressing fire. They also design atriums with no vents in the roof specifically there to let hot air out if there is a fire. This is considered old fashioned thinking by the entire architecture business, they check the checkboxes on building codes at minimal cost and don't think from first principles about how to make a building work within its environment.

<comment><USER19> City fires are completely different from forest fires. For example, the parapets you're so focused on don't make much sense when houses are 100s of feet apart, as is the case in a lot of places that are burning.

Also, London is a different place than California. Buildings in California aren't built with wood for no reason; they do it to withstand earthquakes. There's a big difference between just fireproofing a building and simultaneously fire- and earthquake-proofing a building - the latter is far more difficult and expensive.

I don't see that many of the lessons from the Great Fire of London apply to the problem in California.

<comment><USER18> I did write that the parapets of London were just a detail, not the focus. I also mentioned that conurbations attract more people over time and land that was once sparsely populated soon gets crowded. In America this might seem unimaginable but if the internal combustion engine dies then so does American suburbia. Those 100ft exclusion zones are not going to last forever however you look at it. It could therefore be prudent to build your house so that if it goes up in flames it is not going to turn the whole town to ash, even if the whole town is not there yet.

My general point regarding the Great Fire of London being that fire prevention has been worked out a long time ago. Fire prevention with earthquakes is actually well worked out too. Despite American exceptionalism California is not special. Half of mankind lives in an earthquake zone. The reason for this is that the most fertile land happens to be in earthquake zones, you need some volcanic goodliness to make it so.

I accept the point made by the lumber lobby that wood is a great material for building houses. Wood can be marketed as fantastically earthquake proof if your quarterly sales matter more than the dreaded Spotted Owl. But is wood really what you want for a house that is an actual home? To last for generations? What if you live in Italy where earthquakes happen but there is no lumber lobby just up the road?

Time is money and convenience is king. It's the American Dream. There is no need to be encumbered by things like sensible building codes if there is no past and no imaginably sustainable future, just the urgent, dramatic now.

The culture of consumerism plays its part too. If you are a property speculator in a drought-stricken earthquake zone where fires ravage the countryside every single summer (unless it happens to be an el-Nino year when flooding takes over) then it could be hard to find a market for homes built to last for generations.

Why do that when you can flog a slapped together McMansion with double garage side portions for much more profit? It only has to last until the next boom/bust inflection, savings + loan scam or catastrophic 'act of god'. Hollywood's back lot sets are more substantial.

I very much like Californian vernacular architecture however I am far more likely to be taking pictures of the scenery rather than of any house when in California. The truly beautiful houses with character are outnumbered by seen- it-before identikit dwellings or those McMansions that have no taste whatsoever. I have actually got lost in several Californian built up areas due to the lack of unique landmarks. I haven't had that problem anywhere else, even Soviet era centrally planned housing can be navigated without feeling like you are stuck in some maze.

In summary, fires don't care if they are in California or anywhere else. The short-term-ist consumerist outlook that goes with the territory is the problem, not some unique combo of fires and earthquakes.

</comment></comment></comment><comment><USER20> _> Fire has no boundaries and no preference for where it burns_

That's a weird thing to say: there are definitely places that are more fire prone than others.

<comment><USER21> Been a couple days but, IIRC, that statement followed an explanation of why embers and certain kinds of roof design don't go together. (don't think it was intended to be generic)

</comment></comment><comment><USER21> The second part of this (podcast, see Episodes 317 & 318 in [http://feeds.99percentinvisible.org/99percentinvisible](http://feeds.99percentinvisible.org/99percentinvisible)) goes into changes in Montecito, CA. IIRC, their last exposure to wildfire resulted in very few house losses.

</comment><comment><USER22> The Paradise Fire might have been an entirely different beast than the survivable events that are primarily discussed in this article. (I still think this is a great article; bookmarking for reference.)

But the Paradise fire moved _so_ fast, and _so_ tall, I don't think anything stood a chance. Look at, for instance, the Safeway in the town — completely demolished.

Flew over the area the other day — got a first hand look at the smoke from above which we've all been breathing in down in the South Bay all week; tragic, devastating event.

Edit: primarily talking about the stuff related to landscape and building design. I'm in favor of controlled burns, but it's not trivial to start doing it given just how much fuel is built up in California.

<comment><USER23> >I don't think anything stood a chance. Look at, for instance, the Safeway in the town

Eh, I would disagree. Pull up google maps and drop in street view. This town, in the middle of fire country, is filled with pine trees. Many of them have ladder fuels under them. Tall fires happen because of crown fires.

</comment></comment><comment><USER24> Speaking with a guy from a forestry service who studied fire impact mitigation strategies, apparently the cheapest, effective approach is for each home to have an emergency water sprinkling system that covers the entire house and as much of the property as the owner wants to preserve.

Sure there's a cost to this but is it really so much different that having sprinklers in high rise residential buildings?

</comment><comment><USER25> It seems a sprinkler system on the roof, in addition to the yard, would go a long way in terms of embers. Just keep everything saturated?

<comment><USER26> As far as I know California is already short on water. Would a sprinkler in every house system be sustainable or even possible in such conditions that everything burns?

<comment><USER23> You would have to have a pressurized water storage tank at each house. It would be quite expensive and have a lot of maintenance for how rare the usage would actually be.

</comment></comment></comment><comment><USER11> The whole way houses and cities are built in California is to blame for this tragedy (not discounting the effects of global warming of course).

It's high time California realizes building wood framed boxes with walls of compressed paper with no defensible space between the wilderness and the houses is a BAD idea and we start building with more sensible materials like concrete, bricks and stone like Europe has been doing for centuries - <USER2> it works.

<comment><USER23> Eh, telling people to build with brick in earthquake zones is a bad idea.

Of course putting pine trees beside houses in fire zones is a bad idea too.

<comment><USER11> Ever heard of concrete?

Also, there's plenty of earthquake resistant techniques you can apply to masonry. Mediterranean houses are all built with steel-reinforced concrete and bricks even now and there's all kinds of seismic activity over there.

[https://clay-wienerberger.com/expertise/brick-buildings- for-...](https://clay-wienerberger.com/expertise/brick-buildings-for-seismic- prone-areas)

</comment></comment></comment><comment><USER27> Hmm, I thought controlled burns were best practice and was being done. Is that not the case?

<comment><USER15> Controlled burns are best practice but are not being done. For federal land, agencies have had their budgets repeatedly cut. This has left less money for thinning and other prevention work. Fire fighting money comes from a different "emergency" budget even though fires happen every year so it's not really an emergency. For private land creating a defensible space is on the books but is not being enforced.

<comment><USER28> "For private land creating a defensible space is on the books but is not being enforced."

That depends on the area...

I am a volunteer firefighter in Marin County (basically San Francisco) and we do defensible space consultations all summer and the paid firefighters of Marin County do indeed drive around all summer writing fix-it sheets for homeowners that are in the wildland-urban interface.</comment></comment></comment>


Perl 5.18.0 is now available - <AUTHOR> http://www.nntp.perl.org/group/perl.perl5.porters/2013/05/msg201940.html <comment><USER2> The changes:

<http://search.cpan.org/~rjbs/perl/pod/perldelta.pod>

</comment><comment> Su-Shee Perl 6 releases itself monthly for YEARS now.

<http://rakudo.org/how-to-get-rakudo/>

<http://rakudo.org/downloads/rakudo/>

<comment><USER3> Perl 6 isn't perl.

<comment><USER4> I think there should be some kind of changing of names. For a while it looked like it's another incremental step, if a big one. Which obviously requires running two implementations in parallel for a while -- similar to Python 2 and 3, or several operating systems and distros.

But right now, especially once Perl development really picked up, it might be time to "divorce" the two languages. It seems more like Algol60 vs. Algol68, or Modula-2 vs. Modula-3. Sure, there's a number in there, but it isn't just about the version of the main implementation.

Having said that, kudos to the Perl team. I really like that they now release new versions pretty regularly, which is a good sign to show people that Perl5 ist still very much alive and nobody needs to hold their breath for the time being.

If only I could use something more recent than 5.8 at work...

<comment><USER5> Perl5 users won't switch to Perl6 because they're working on Perl5 code and don't want to change their habits.

Non-Perl devs won't switch to Perl6 because the P word scares them.

So, yes, changing the name might be a good idea.

And making an enjoyable web-based tutorial.

<comment><USER6> Lets assume that I'm switching from Perl5. Why would I switch to Perl6 over something else? Even assuming Perl6 were to be become production ready tomorrow, there is a cornucopia of good languages these days. I'm sure Perl6 can claim to be more expressive than most but is that enough?

</comment></comment></comment></comment></comment><comment><USER7> Can someone explain the point of the lexical subroutines? [1]

In particular, I'm lost on the difference between

        sub outer {
            my $closurevar;
            my $inner = sub {
                ... use $closurevar...
            };
        }

and

        sub outer {
            my $closurevar;
            my sub inner {
                ... use $closurevar...
            }
        }

(I mean this as an honest question. That said, I do hope that I'm missing something and this is more than just a syntax gloss.)

[1]: [http://search.cpan.org/~rjbs/perl-5.18.0/pod/perlsub.pod#Lex...](http://search.cpan.org/~rjbs/perl-5.18.0/pod/perlsub.pod#Lexical_Subroutines)

<comment><USER8> In the end, everything is syntax. In the first solution, the inner sub would be called as "$inner->()" or "&$inner()". With lexical subs, we get the much nicer syntax "inner()". This decreases the syntactic pain when structuring your code to use nested functions, thus encouraging good design.

Oh, and I guess lexical subs can have prototypes, which were ignored when calling a coderef with `&` or `->()`. This allows to create really nice, but properly scoped pseudosyntax.

<comment><USER9> > This decreases the syntactic pain

        use 5.018;
        no warnings "experimental::lexical_subs";
        use feature "lexical_subs";

Don't use perl experimental features. Not portable. Not well thought.

May break horribly.

"state sub creates a subroutine visible within the lexical scope in which it is declared. The subroutine is shared between calls to the outer sub."

So you should be using "state sub"

Or use python which has non-experimental "inner functions"

<comment><USER8> You make some very good points esp. wrt verbosity. However, I don't care about portability or not using experimental features for personal or exploratory projects: stability is silver, conciseness is gold. The "state" subs are a consequent extension of the variable declaration keywords "my", "state", and "our". I can see myself using "my subs" in the future, the other possibilities have less practical use. "my subs" are proper closures, so they are not shared.

But, somebody will probably write a "lexsub" pragma that does away with the "no warnings ...", and portability becomes less of an issue over the course of time, much like I can nowadays treat the features of v5.10 as given.

Perl had nested functions since v5, just with akward syntax. Does Python have proper <del>variable declarations</del> closures? That is more of a dealbraker than non-experimental nested function syntax for me ;-)

<comment><USER7> Because accessing an "uninitialized" variable is a crash, rather than an implicit value, Python's need for "proper" variable declarations is much less than in a language that will happily just fill in a value. It may not be quite as good as proper Perl "use strict", but it's much closer to that level of goodness than Perl without "use strict". Python has seen fit to introduce a "use strict" for that very reason; Perl was in a world of hurt before it, Python is manifestly not.

I scare-quote "uninitialized" because what it really is is _nonexistant_ , which isn't the same thing.

</comment></comment></comment></comment></comment><comment><USER10> The dynamic scoping in Perl seems a bit troublesome to me. Maybe even a security issue. Can you prevent functions you call from accessing variables in your scope? Do you have to somehow sanitize your scope if this is an issue? Seems a little bit worrying. With the exception of closures inside nested functions, I wish functions just had their own scope and if you want them to have anything else, just pass it in.

<comment><USER11> This is why wise Perl programmers turn on use strict, and then declare variables with my. Now attempting to dynamically scope stuff is a compilation error. (Except for some built in variables, like $_. Which you don't use in real programs.)

This has been standard advice since the last millennium. But you can't change it without breaking backwards compatibility.

That said, I do have several good uses for local. But not normal ones. My favorite is to use local to dynamically scope entries in a hash. I wind up using this every year or two to put in an automatic check to catch infinite recursion.

<comment><USER12> > _variables, like $_. Which you don't use in real programs_

Oh really? What's wrong with $_ and since when it is?

<comment><USER13> It's kind of obtuse. If you have to type out "$_", you might as well declare it and give it a good name.

I personally have no issues doing:

        foreach @array {
          chomp;
          print;
        }

But as soon as I have to type "$_" I make a real variable.

<comment><USER12> What's wrong to type $_ if you want to print "`$_'\n" in your example? Etc. I don't see any problem with that as $_ is clearly states that's a loop counter. And let's don't even talk about map/grep/sort and schwartzian transform.

<comment><USER14> I don't think he sees that as a Problem. Only he thinks _using it explicitly_ is not to his taste. I have a similar attitude: make it explicitly a new var if it is going to appear in the code.

Your example is perfectly OK.

TIMTOWTDI, really.

</comment></comment></comment></comment></comment></comment><comment><USER15> Just curious: Is Larry Wall still involved in Perl development? Haven't heard from him for a long time...

<comment><USER16> He is solely working on Perl 6 now.

<comment><USER17> And is fairly active there: <https://github.com/TimToady>

</comment></comment></comment><comment><USER18> Only 82 more minor releases until Perl 6 will be available.

<comment><USER8> Almost ;-) The current perl version is 5.018000, so that would take 982 releases until the numbering scheme breaks down. Of course, Perl v-strings can have elements of INT_MAX each, but I doubt such high numbers would ever be used, for back-compat reasons.

</comment></comment><comment><USER19> perlbrew install -j 8 -v [http://cpan.metacpan.org/authors/id/R/RJ/RJBS/perl-5.18.0.ta...](http://cpan.metacpan.org/authors/id/R/RJ/RJBS/perl-5.18.0.tar.bz2)

</comment><comment><USER20> I understand why smartmatch is labeled experimental, but what's the "modern Perl" replacement for given/when? I only use it as a stupid switch statement but I don't want it breaking with Perl 5.22 either...

<comment><USER21> I feel like I was given the impression that they wanted to get smart match "right" and not abandon it. I guess my use of smart match was a mistake. =(

</comment></comment><comment><USER9> I was a Perl lover once.

And now it seems I understand the haters.

 _Just don't use Perl_.

The language seems fine, productive, even sublime at first but you will encounter some horrible design features.

Just read the following,

<http://markmail.org/message/h2spyi5za4qheuft>

\-- Perl's data structure serialization is leaky. Thought you made an int ? Whoa ... serialized as a string.

[http://blogs.perl.org/users/rurban/2013/02/no-indirect- consi...](http://blogs.perl.org/users/rurban/2013/02/no-indirect-considered- harmful.html#comment-370624)

\-- A language feature causing a burnout ? Well fuck me !

That's just a tip of the iceberg.

PHP, a fractal of bad design ?

Perl, a quantum bomb, waiting to tick off.

The Modern Perl movement is like saying "I'll close my eyes and crime ceases to exist."

No best practices will save you from broken language features.

The people who maintain Perl source code, are not a _ _fan_ _ of Modern Perl. They won't make "strict" the default or introduce signatures or better OOmodel.

The people who proclaim "Modern Perl" won't fork.

Even this release shows how clueless Perl maintainers are !

* They released a switch statement long long back

* And now they mark it even as "experimental" because of the leaky "my $_" scope.

Oh God ! I will never emotionally invest in another tool.

EDIT: Neutral language.

<comment><USER22> I downvoted you because of

a) The poor formatting of your post as a stream of conciousness

b) The condemnation of a language based on a single relatively minor bug

c) The unsupported assertions and unrelated criticisms like not enabling strict by default

<comment><USER9> I use points as I am a bad writer.

* Don't use $a, $b for variable names, affecting sort

* Don't use each for iterating over hashes

* Global effects of ..

* next operator is dynamic

        sub foo() {
            next; #breaks while loop
        }

        while(defined (my $e = shift @items)) { # "0", 0 is false
           foo();
        }

* <http://www.perl.com/doc/FMTEYEWTK/versus/perl.html>

* Exception model based on $_ and $@

* print "$foo's fun!";

* `use constant` is broken

* my $a, $b ... declares a global $b. Not DWIM at all.

These language features are not worth the debugging time.

Regarding c) I am not a fan of use strict. If the community's priority is introducing more features like "my $_" than sane exception handling, I don't want to be a part of it and I won't recommend that language to my boss or the next FOSS project.

Did I mention XS bugs ?

<comment><USER23> Perl is old. By old I mean powerful, mature, stable, and well known.

Some say it is hard to read. I don't know since I have been using it in production since version 4.

<comment><USER23> v 3 actually...

</comment></comment></comment></comment></comment><comment><USER24> Is python 3 the new perl 6?</comment>


Main is usually a function, so when is it not? (2015) - <AUTHOR> http://jroweboy.github.io/c/asm/2015/01/26/when-is-main-not-a-function.html <comment><USER2> Here is a link to the several times this has appeared here: [https://news.ycombinator.com/from?site=jroweboy.github.io](https://news.ycombinator.com/from?site=jroweboy.github.io)

I find these "hey there is this language called C and you can do some really weird stuff in it!" articles humorous because from the beginning of time there have been people who are fascinated by this aspect of the C language and gave rise to the whole obfuscated C contest thing.

The idea that a symbol references an address and its type is only a convenience in the source code always messes people up. When I've taught C to people there is always that one person who says "What if you cast a string pointer to a function and called it! Huh?" and I explain that is perfectly legal C and has been exploited for years and you can practically see their brain change conceptual planes in mid-air :-)

<comment><USER3> I like to start with the assembler, then just tell people that high level languages are fancy assemblers. Some of them restrict you to using the designer's favourite macros, some of them allow you to build on highly general tools at approximately the lowest level, but ultimately all computer programming languages are fancy macro assembler syntaxes.

<comment><USER4> This is an OK mental model until a wholly compliant C or C++ compiler blows it all to smithereens with an optimization exploiting UB.

You gotta write C or C++ for the abstract machine defined by the standards. Thinking about C in terms of some concrete assembly language or architecture can be problematic.

</comment></comment></comment><comment><USER5> The thing I'm wondering about with this is why ld by default creates only two LOAD segments, one r-x and one rw-. .text and .rodata are put into the former while .data is put into the latter. This is the only reason this works. So my question is why there isn't a third LOAD segment with access r-- for the read only data? If anything it would reduce the surface of where to find ROP gadgets slightly so couldn't hurt, no?

<comment><USER6> That's architecture-specific. On some machines there is indeed a separate "execute-only" segment in the ELF file. But on many architectures (x86) there has historically been no hardware support for that, and for compatibility reasons the standard linker output still maintains the same scheme.

<comment><USER5> It's not a lack of execute-only segment but of a read-only, no-execute segment I'm talking about. x86 has had support for that for exactly as long as it has supported no-execute, which the second LOAD segment is marked with (i.e. the one that .data goes in).

Platform support is irrelevant, systems not supporting the access flags simply gives you more access. E.g. running a modern Linux on pre-Athlon 64 CPUs will just cause all readable pages to be executable as well.

<comment><USER7> The compatibility requirement is the result of the historic lack of x86 platform support, though: x86 used not to support r-- permissions, so it put rodata in an r-x segment, so there are likely programs in the wild which accidentally rely on that, so the linker can't now tighten the rodata permissions without breaking some existing set of programs of unknown size. Whether you think that's a good tradeoff depends on your opinion on the size of that set of programs and how heavily you weight 'avoid breaking code that used to work' against 'tighten permissions for security reasons'.

It would be interesting to know if you can ask the linux linker to put rodata in its own r-- segment -- I scanned the docs but didn't see an option for it.

<comment><USER5> > x86 used not to support r-- permissions,

Depends on what you mean, the original page table entries have a R (Read/Write) flag, if not set the page is read-only. What you couldn't do was mark a page non-executable. But nevertheless the second LOAD segment is marked rw- and not rwx, so it would seem that it wasn't deemed a problem in the past having segments with unsupported permissions.

At the time when we got the NX bit it did happen that some programs broke because they expected executable data, but the security benefits were more important.

> It would be interesting to know if you can ask the linux linker to put > rodata in its own r-- segment -- I scanned the docs but didn't see an option > for it.

You have to write your own linker script, see e.g. [0].

[0] [http://www.cl.cam.ac.uk/~srk31/blog/devel/custom-elf- phdrs.h...](http://www.cl.cam.ac.uk/~srk31/blog/devel/custom-elf-phdrs.html)

<comment><USER7> By the r-- syntax I meant specifically 'readable, not writable, not executable' as distinct from rw- 'readable, writable, not executable' or r-x 'readable, not writable, executable'.

<comment><USER8> On i386 the descriptor cannot be both writable and executable at same time. But in order to support sane semantics for C, typical Unix OS (which for purposes of this discussion includes 32bit Windows) loads CS, DS and SS with different descriptor selectors that nevertheless alias to same range of linear addresses and thus essentially disable most of the MMU's protection logic and rely only on paging. And traditional 32bit i386 page table entries only have two flags: accessible at all (called "present") and writable.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> On the subject of machine code as data, there was an interesting text file released at this year's SIGBOVIK: [https://www.cs.cmu.edu/~tom7/abc/paper.txt](https://www.cs.cmu.edu/~tom7/abc/paper.txt) (you'll need to resize your browser window to read it properly -- for an easier reading experience you can also check out the PDF and video at [https://www.cs.cmu.edu/~tom7/abc/](https://www.cs.cmu.edu/~tom7/abc/)).

<comment><USER10> That is an amazing work of art. I only skimmed it briefly but it would make for great spare-time reading.

</comment></comment><comment><USER11> Discussed at the time: [https://news.ycombinator.com/item?id=8951283](https://news.ycombinator.com/item?id=8951283).

</comment><comment><USER12> The program entry point is actually _start (which does some setup and later calls main()) so for even more extreme TA befuddlement, write a program that doesn't even call main()!

<comment><USER13>
        int noMain()     __attribute__ (constructor);
        int noMain() {
            printf("Goodbye, main()");
        } // &etc.

<comment><USER8> This actually would not link, because _start() or something it calls into (depending on implementation of CRT on given platform) would contain unresolved reference to main. (and goven the fact that all this CRT startup code is usually one .o, you cannot just patch out the part that calls main(), you have to replace it completely)

On the other hand something around the lines of:

        void _start(){
          write(1, "Hello world\n", 12);
          exit(0);
        }

should probably work, given that you link it without CRT startup code (ie. gcc -nostdlib)

<comment><USER14> Now for more confusion, have a main function that _start doesn't call.

Now for even more confusion, have the main function (which never runs) call the _start function.

<comment><USER12> You are evil!

<comment><USER15> He should be writing some crackmes.

</comment></comment></comment></comment></comment></comment><comment><USER10> _We joked with him about how he needs to make a program that works, but the grading TAs wouldn't be able to figure out how it works._

Unless you come across a TA like me (I've been one before), who will comment on the fact that using xor+inc or push+pop would be shorter ways to set a register to a small immediate. ;-)

</comment><comment><USER16> > Since I knew the target system is going to be 64bit Linux

Knowing the target system makes a lot of these things quite a bit easier. I had really good luck in college knowing our graphics teacher was using a 286.

As a TA you pretty much can be a hardass or save time for the rest of the semester and just mark 100.

Another early scenario was declaring main() as void in some embedded systems. I guess there was nothing to return to but it was still odd.

<comment><USER17> It's weird how compilers complain if main() is void, despite it not having to return anything if it's int.

<comment><USER18> You have to return something. If you don't, the exit code is the value that happened to be in memory at this point.

<comment><USER19> N1256 188.8.131.52.3 p1: If the return type of the main function is a type compatible with int, a return from the initial call to the main function is equivalent to calling the exit function with the value returned by the main function as its argument; reaching the } that terminates the main function returns a value of 0. If the return type is not compatible with int, the termination status returned to the host environment is unspecified.

<comment><USER18> main() is __cdecl__ or __stdcall__ on the major platforms.

That calling convention on x86 specifies that the return value is red from the EAX register. So, when your main() function exits, the return value is red from EAX, it's that simple.

The compilers may add boilerplate code around the main, in fact main() is rarely the real main() function, but that doesn't change the spec.

<comment><USER17> Did you read the comment you just replied to?!

<comment><USER20> The two comments are not incompatible, they are just very different worldviews. One tells you what the standard says (that the termination status is unspecified if main does not return an int), the other tells you what usually happens (you get what happened to be in AX).

And as I've just tested, gcc doesn't return zero termination status if you reach the } at the end of main.

<comment><USER18> Calling conventions are as much a standard as the C spec.

The main() is called like a regular function, by the _system thing that executes programs_.

Depending on the compiler and the flags, the main() is not the real entry point of the program. It can add another entry point to do some magic, like setting the return code.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER21> The CLR uses a similar technique to take over control of execution of a managed EXE - [http://srevas.net/notes/2007/12/25/mscoree/](http://srevas.net/notes/2007/12/25/mscoree/)

</comment><comment><USER22> Unless the assignment in question specifies architecture, the TA could (should? I know I would) run it on a 32 bit Windows environment and mark it down for not working.

<comment><USER10> Not surprisingly, there are tricks one can use to figure out what the environment is, using the same binary; start here:

[https://stackoverflow.com/questions/38063529/x86-32-x86-64-p...](https://stackoverflow.com/questions/38063529/x86-32-x86-64-polyglot- machine-code-fragment-that-detects-64bit-mode-at-run-ti)

...and if you want to expand it to run on a SPARC or MIPS or something else...

[https://hackaday.io/project/18614-polyglot-one-binary- multip...](https://hackaday.io/project/18614-polyglot-one-binary-multiple- architectures)

The general idea is to find a set of bytes which can be interpreted in different (and valid) ways by all the architectures you want to support, and using those differences, jump to architecture-specific code.

</comment></comment><comment><USER23> Is it undefined behavior to have main be anything other than a function that returns int?

<comment><USER24> UB comes with high-level languages. "main" is not specified in the high-level language, but by the OS. You write some machine code, give it the name "main" and the OS jumps to that location and starts executing. One should adhere to the "C calling convention" (managing the stack correctly) if that code is expected to behave within the system.

But "main is not a function" does not produce undefined behavior.

<comment><USER19> > "main" is not specified in the high-level language, but by the OS. You write > some machine code, give it the name "main" and the OS jumps to that location

main() is specified by C. The OS as such doesn't know or care about main. Headers in the binary executable specify where the OS should begin execution, and this is rarely in main.

</comment></comment></comment><comment><USER25> ah, this reminded me of some embeded oses where driver came as precompiled arrayblobs, that are included with ifdef guards set in some central config tool</comment>


Triple-E Ship Leaves Port With World Record Load - <AUTHOR> http://gcaptain.com/watch-triple-e-leaves-port-with-world-record-load/ <comment><USER2> Seeing the video in the article I was reminded of a corporate video they did a few years ago. I know the director second-hand, and he was basically given free reign to go wherever he wanted and spend as much money as he deemed necessary to make a video that got the size and trust of the brand across.

This is the result: [https://www.youtube.com/watch?v=qjD9VvhXJrE](https://www.youtube.com/watch?v=qjD9VvhXJrE)

I think he succeeded - it's one of the best brand videos I've ever seen.

<comment><USER3> That's a really good video! Any idea what the final budget was? Would be interesting to know how much companies dish out for that sort of thing

<comment><USER4> I've heard that for things like this you start at $1m per finished minute, and then go from there.

This is about 12 minutes long, has a fairly well known British Actor narrating, a well known film director, involved lots of world travel and various types of specialist equipment operators, lighting and sound folks.

I wouldn't think you'd get away from this for anything under $20m, and wouldn't be shocked to hear it was $30m.

<comment><USER5> I've worked on feature film (90 or more minutes) productions that with a full crew cost <$400,000 to create. $20m for an advertisement is a gross overestimate. I would be shocked if it cost more than $100k to make this video.

<comment><USER6> Many helicopter/offshore shots in exotic locations in that feature film?

</comment></comment></comment></comment></comment><comment><USER7> 21 years ago I was in a Korean shipyard where the largest container ships of the day were being built. Their capacity was 6000 TEUs, one-third of the Mary Maersk. The captain of one of the ships (a 27 year old (!) German woman) told me most ports cannot handle the 6000 TEU vessels, so their line will be building mainly 4500 TEU ships.

One interesting thing is that those older, smaller ships had more powerful engines than the much larger current vessels! The engine installed on the 6000 TEU vessel was ~90,000 hp, and the ship was designed for sailing at ~25 knots, the justification being that the value of cargo onboard was so high that the cost of shipping was dominated by the interest charges!

<comment><USER8> First a note: The useful engine power of ships is logarithmically proportional to the size of the vesel. A ship that is twice as big will only require and engine that is half as big.

A problematic thing is they way ports generally work, you may generally not book a port for a specific arrival date. You have to rush to get there before other ships, to sit still outside and wait in line.

Not very good for fuel consumption and the environment.

<comment><USER9> > A problematic thing is they way ports generally work, you may generally not > book a port for a specific arrival date. You have to rush to get there > before other ships, to sit still outside and wait in line.

For most ports in North Europe that's not the case (though it used to be). You generally agree on a standard arrival date (day of week + time + number of moves), then you should arrive at that time. This differs per region though. For Africa, it's "different". You have terminals owned by customers, etc. More often you still have to rush, then wait for ages.

Maybe things are different if you're a small shipping line and the same terminal also working for a few big ones.

</comment></comment></comment><comment><USER10> Several years ago I traveled from Rio De Janeiro to Capetown on a freighter (although not nearly as large as this Triple-E ship!) There are some ships that still offer paid passage and staying on board of one of these enormous ships, manned by just a small crew, is an amazing experience. I got to visit all the areas of the ship, could wander about during the day, hung out on the bridge with the night watch, visited the engine room etc. Being on the bridge when the building sized ship docks at port is incredible to watch.

<comment><USER11> This sounds super cool, how do you arrange something like that?

<comment><USER12> A variety of websites can do it. See [http://www.seaplus.com/mainmenu.php](http://www.seaplus.com/mainmenu.php) and/or search "freighter travel".

It costs more than you might think, partly because meals are included.

<comment><USER11> That's a fascinating starting point, thank you!

</comment></comment></comment></comment><comment><USER13> Relatedly, 'The Box: How the Shipping Container Made the World Smaller and the World Economy Bigger' is a great little book. I don't see sense in retreading existing reviews, but I think it would offer something of interest for many in this crowd.

<comment><USER14> And if you can find it, the BBC TV documentary "The box that changed Britain" is a good one.

</comment></comment><comment><USER15> The containers are stacked higher and nearer the edge than I would've expected for an oceangoing ship. Do ships like this lose containers in rough seas?

<comment><USER16> Yes, they do. A few weeks ago this hit hacker news: [https://news.ycombinator.com/item?id=8062864](https://news.ycombinator.com/item?id=8062864). 62 containers were lost due to a "once in a 100 year wave." One of which contained Legos.

I'm not sure what the expected value is for number of TEUs lost per journey. I'd hope that it's near zero, but I don't know.

Edit: quick google. Estimates range from 1,000 (World Shipping Council)[0] to 10,000 (Singularity Hub)[1] lost per year. Either way, with 120 million containers shipped per year, it's quite low.

0\. [http://gcaptain.com/how-many-shipping-containers-lost-at- sea...](http://gcaptain.com/how-many-shipping-containers-lost-at-sea/)

1\. [http://singularityhub.com/2011/04/05/10000-shipping- containe...](http://singularityhub.com/2011/04/05/10000-shipping-containers- lost-at-sea-each-year-heres-a-look-at-one-2/)

<comment><USER17> And as a recreational ocean racing sailer, nothing is more terrifying than seeing one of these bobbing just below the surface.

<comment><USER18> This is the primary reason the catamaran I'm building has a titanium superstructure. I refuse to let an orphaned cargo container floating in the Pacific be my undoing on a circumnavigation.

<comment><USER19> When you strike a container at speed all bets are off, regardless of what material your boat is made of. You're in a catamaran, at least you have two hulls rather than just one. And it would appear that the part that is underwater is the most important bit when it comes to striking containers so I'm not sure why you think a titanium superstructure will help you if there is a gaping hole in your hull.

<comment><USER18> A titanium hull failure is superior to a fiberglass or wood hull failure. Even if I hit a container at speed, the worst scenario is the structure deforming, versus fiberglass failure scenarios.

<comment><USER19> A titanium hull is, but you mentioned _superstructure_ , which is everything _above_ the hull.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> If anyone is interested in container shipping in general and how software is applied to optimising it specifically I can shamelessly plug Markus Völter's Omega Tau podcast on these subjects [http://omegataupodcast.net/2014/04/146-container- shipping/](http://omegataupodcast.net/2014/04/146-container-shipping/)

</comment><comment><USER20> It's currently in the South China Sea

[http://www.marinetraffic.com/en/ais/home/centerx:114.6631/ce...](http://www.marinetraffic.com/en/ais/home/centerx:114.6631/centery:22.32802/zoom:8/mmsi:219018692)

[http://www.marinetraffic.com/en/ais/details/ships/9619921/ve...](http://www.marinetraffic.com/en/ais/details/ships/9619921/vessel:MARY_MAERSK)

<comment><USER21> That's a really high quality site for a community effort.

Now, I don't have to wonder about all the ships sailing on the Hudson river.

</comment></comment><comment><USER22> When I was in the USCG we would be underway at night off the west coast of the US. It'd be halfway through a midwatch and a huge blob would appear on the radar up off our port bow. That blob would go tearing down our port side with a ridiculous speed - and we weren't contributing much because we were just lagging along at 6 knots. Just an amazing sight after seeing salmon trollers on the radar all day long.

</comment><comment><USER23> More on the ship: [http://en.wikipedia.org/wiki/Maersk_Triple_E_class](http://en.wikipedia.org/wiki/Maersk_Triple_E_class)

</comment><comment><USER24> I thought this was the largest ship in the world. It looks like it will soon be eclipsed by a floating natural gas platform called Prelude.

[http://en.wikipedia.org/wiki/Prelude_FLNG](http://en.wikipedia.org/wiki/Prelude_FLNG)

</comment><comment><USER25> This is the path it has taken since it left Spain on 7/21: [https://imgur.com/2w8vg3R](https://imgur.com/2w8vg3R)

</comment><comment><USER26> Something something Docker containers.

</comment><comment><USER27> 17,603 TEU is the equivalent of 1/2 the Empire State Building in volume.

</comment><comment><USER28> i assume this is a panamax ship? is the suez canal wider than the panama canal?

<comment><USER29> This ship is larger than Panamax [[http://en.wikipedia.org/wiki/Maersk_Triple_E_class](http://en.wikipedia.org/wiki/Maersk_Triple_E_class)].

The biggest limitation on Panamax size is whether a ship can fit into the Canal's locks, but the Suez canal is a sea-level waterway with no locks, so the limit is a lot higher.

</comment></comment><comment><USER30> revolutionary transportation</comment>


Show HN: SimpleSQL, SQLite Database Reachable over HTTP - <AUTHOR> https://app.swaggerhub.com/apis-docs/redbeardlab/simplesql.redbeardlab.com/0.0.0 <comment><USER2> I like it! I've often wanted instant ephemeral DBs for testing and think SQLite is an excellent choice for it.

It might be nice to have a simple GUI for each DB. Perhaps leverage something like [https://github.com/simonw/datasette](https://github.com/simonw/datasette). Also a few sample DBs. Cool stuff!

<comment><AUTHOR> Thanks!

Feel free to subscribe to the mail list.

I will announce coming features like authentication soon.

</comment></comment><comment><AUTHOR> Guys, here there is the same page but with examples: [https://app.swaggerhub.com/apis- docs/redbeardlab/simplesql.r...](https://app.swaggerhub.com/apis- docs/redbeardlab/simplesql.redbeardlab.com/0.0.1)</comment>