Comparative Macrology - <AUTHOR> http://www.wilfred.me.uk/blog/2014/09/15/comparative-macrology/ <comment><USER3> About the Common Lisp section:

Using _fresh_ symbols is not enough. GENSYM creates uninterned symbols - <USER2> are not interned in a package. Thus referencing them in user code is not possible.

Shadowing 'SETF' in Common Lisp would be non-conforming. SBCL for example detects it and gives an error. The ANSI CL Standard, Section 184.108.40.206.2. [http://www.lispworks.com/documentation/HyperSpec/Body/11_aba...](http://www.lispworks.com/documentation/HyperSpec/Body/11_abab.htm) Still for user code in macro expansions it can be a problem.

If the SWAP macro really should work with places in a semantic compatible way, then it needs to do more. Compare with the built-in ROTATEF macro. It makes sure that place subforms are only evaluated once.

        ? (let ((a (vector 1 2)))
            (swap (aref a (print 0)) (aref a (print 1)))
            a)

        0
        0
        1
        1
        #(2 1)

Note that it prints 0 and 1 twice.

The built-in ROTATEF does it better: it prints them only once. This shows that the subforms are only evaluated once.

        ? (let ((a (vector 1 2)))
            (rotatef (aref a (print 0)) (aref a (print 1)))
            a)

        0
        1
        #(2 1)

The EACH-IT macro has a bug: the body needs to be put into a PROGN. Otherwise the LOOP macro might think that parts of the body are LOOP clauses.

        (defmacro each-it (list &rest body)
          `(loop for it in ,list
                 do (progn ,@body)))

For the purposes as an example, DOTIMES would be more idiomatic, since it provides the basic stuff like declarations and goto tags. It is also the traditional iteration macro for lists.

An alternative to PROGN would be LOCALLY, which also allows declarations. Thus one could declare IT to be of a certain type, for example.

</comment><comment><USER4> There is an interesting claim about Rust:

> However, it prevents you from writing generic macros that use any l-value – > we can't write swap!(x[0], x[1]) as we could in Common Lisp.

As long as `macro_rules!` has existed (I could be wrong about before 0.8 though), you can wrote a macro that takes any expression, and will error from the assignment when the expression is not an lvalue:

        macro_rules! swap {
            ($x:expr, $y:expr) => ({
                let tmp = $x;
                $x = $y;
                $y = tmp;
            })
        }

</comment><comment><USER5> The hygienic C macro is broken. It breaks if your variable happens to already be named "tmp": swap(x, tmp). This would work however:

      #define SWAP(x, y) {        \
          typeof (x) x##y = x; \
          x = y;              \
          y = x##y;            \
      }

Also, you can be tricky and "co-recurse" in macros, which is explained here: [https://github.com/pfultz2/Cloak/wiki/C-Preprocessor- tricks,...](https://github.com/pfultz2/Cloak/wiki/C-Preprocessor- tricks,-tips,-and-idioms)

Regarding each-it, I think its pretty doable in C. Right off the top of my head, this seems to work:

       #define eachIt(myArray) typeof(myArray[0]) it; for (int i = 0; i < sizeof(myArray)/sizeof(myArray[0]) && (it = myArray[i], 1); ++i)

This can now be used just as in the example:

       struct test_ { int one; double two; };
       typedef test_ test;

       test array[17];

       eachIt(array) {
         it.one = 1;
         it.two = 0.2;
       }

However, I _believe_ (?) that it depends on the version of the C standard whether this is hygienic or not. When I compile in GCC it certainly works fine because the i is counted as internal to the for loops scope, but I'm not sure that's always the case. There is also the separate question of whether "it" should be hygienic or not.

</comment><comment><USER6> I posted an explanation of how Dylan's macro system would handle this elsewhere (including [http://www.reddit.com/r/programming/comments/2gesag/comparat...](http://www.reddit.com/r/programming/comments/2gesag/comparative_macrology/ckihk2b)).

Dylan was one of the original languages to have an infix-syntax with a Lisp / Scheme style macro system. (It is fairly similar to Scheme's syntax rules, but there's an implementation of something more powerful that is used within the compiler but isn't currently available to users.)

The examples that he is demonstrating in the other languages would like this in Dylan:

        define macro swap!
          { swap! (?place1:expression, ?place2:expression) }
          =>
          { let value = ?place1;
            ?place1 := ?place2;
            ?place2 := value; }
        end;

and:

        define macro each-it
          { each-it (?collection:expression)
              ?:body
            end }
          =>
          { for (?=it in ?collection)
             ?body
            end };
        end;

Dylan's macros are hygienic by default, and as can be seen in the ``each-it`` macro, ``?=it`` is a way to violate hygiene without much difficulty, when needed.

My full post as linked above contains links to documentation and other minor details.

</comment><comment><USER7> At the risk of stating obvious - _typeof_ is a gcc-ism, not a part of the C standard.

<comment><USER8> Thanks, that saved me some keystrokes.

Here's the GCC manual page: [https://gcc.gnu.org/onlinedocs/gcc/Typeof.html](https://gcc.gnu.org/onlinedocs/gcc/Typeof.html), note that you can go "Up" to the main Extensions section where you'll find the sub-page for typeof.

Also, the OP does the usual "everything is a function in C" error, which is _weird_ in a text about macros in programming languages. The typeof extension, like sizeof, is _not_ a function, it's a unary prefix operator. But nobody seems to care about that for (the standard) sizeof operator, so I guess I shouldn't be surprised.

Also, of course the local temporary variable should be marked as const.

</comment></comment><comment><USER9> Tcl (1990) doesn't directly have macros, but with a calling convention that resembles fexprs it doesn't need them:

        proc swap {_a _b} {
            upvar 1 $_a a
            upvar 1 $_b b
            foreach a $b b $a {}
        }

Foreach is a builtin, but is trivially defined as:

        proc each {ls script} {
            for {set i 0} {$i<[llength $ls]} {incr i} {
                uplevel 1 $script
            }
        }

Perhaps more interesting:

        proc until {cond script} {
            tailcall while "!($cond)" $script
        }

</comment><comment><USER10> F-expressions are ancient (1960's era Lisp). newLisp dug them out from a Lisp landfill of discarded cruft; they do not chronologically belong in 1991. Tcl has them too, incidentally. That is to say, Tcl allows for user-defined interpretive operators that are very much like fexprs. Bash's eval can almost do something like this; an eval sees the surrounding scope. What's missing is the sugar to hide the eval.

"Text based fexpr":

        gen_swap_code()
        {
           echo "local tmp=\$$1;"
           echo "$1=\$$2;"
           echo "$2=\$tmp;"
        }

        fun()
        {
           local a=3
           local b=4
           eval $(gen_swap_code a b)  # sugar needed here
           echo $a $b
        }

        $ fun
        4 3

<comment><USER11> I've used Tcl and Scheme fairly extensively so it's interesting to compare them. Scheme has highly developed macros, and many implementations have non- hygienic macros along with syntax-rules. Most of the coders I know say it's rare to use anything other than the hygienic system, which is pretty easy to learn and quite powerful.

Tcl doesn't have comparable macros, though some writers say in Tcl coding, the whole thing is like writing a bunch of macros anyway, but I'm not sure I buy that.

I'm also not entirely clear what you meant by "user-defined interpretive operators ...". Current Tcl versions provide many facilities for specifying semantics of expressions (proc, ensembles, interpreters, lambdas, etc.) and the ability to redefine most any operator or built-in function if one so desires.

The philosophy of "it means what I say it means" can lead to strange constructions, but that is a basis for describing Tcl as "macro-like" in its abundant, highly flexible features. The many ways it reflects Lisp/Scheme-like traits is truly part of its appeal.

</comment></comment><comment><USER12> There is also a somewhat newish approach in addition to the venerable ones mentioned: a Katahdin-style syntax extensions, built upon the natural PEG extensibility.</comment>


Perl 6 Supplies Reactive Programming - <AUTHOR> http://perl6advent.wordpress.com/2013/12/19/perl-6-supplies-reactive-programming/

<comment><AUTHOR> If you want to start playing with Perl 6, it recently became significantly easier to install: [http://blogs.perl.org/users/ovid/2014/08/try-rakudobrew- and-...](http://blogs.perl.org/users/ovid/2014/08/try-rakudobrew-and-play- with-concurrency.html)

</comment><comment><USER2> jnthn also has numerous good talks[1] that the slides are fairly self explanatory for.

1: [http://www.jnthn.net/articles.shtml](http://www.jnthn.net/articles.shtml)</comment>


"I Don't Think the Virus Can Be Stopped Anymore", Says Harvard Epidemiologist - <AUTHOR> https://www.spiegel.de/international/world/i-don-t-think-the-virus-can-be-stopped-anymore-a-03d404e6-762b-42fb-ac48-e4a8f03a2f2b <comment><USER2> An article closer to home with no Spiegel-Spritzen. I think the "I Don't Think the Virus Can Be Stopped Anymore" is clickbait out of context to sell more Der Spiegels, marketed to people who are waiting for some final pronouncement of doom.

[https://news.harvard.edu/gazette/story/2020/03/officials- det...](https://news.harvard.edu/gazette/story/2020/03/officials-detail- universitys-move-to-online-learning-to-combat-coronavirus/)

Here is Marc Lipsitch quoted properly with a definition of "flattening the curve" which is the rational way to present the idea that containment is no longer possible.

[https://www.vox.com/2020/3/10/21171481/coronavirus-us- cases-...](https://www.vox.com/2020/3/10/21171481/coronavirus-us-cases- quarantine-cancellation)

Containment is no longer possible because the disease is becoming globally endemic and will probably survive in successive waves over several years and the only thing under our control at this point is to prevent a spike of cases. We must dispense with the idea that our parents or grandparents can be kept in a perpetual bubble and will NEVER get the disease. We might however take steps that ensure that it unfolds slowly enough that adequate medical care will be available.

</comment><comment><USER3> The time to act was weeks ago. We haven't even stopped international flights in from Milan.

[https://flightaware.com/live/flight/UAE205/history/20200310/...](https://flightaware.com/live/flight/UAE205/history/20200310/1410Z/LIMC/KJFK)

<comment><USER4> It is interesting that this sentiment keeps popping up regarding the US handling of the situation. The US was fast and early to react, especially compared to the US handling of the swine flu... and people seem to just completely ignore that fact or throw it out the window completely.

<comment><USER5> Fast and early compared to whom? We knew it was coming and it seems like we're still making preparations and only started after we unloaded a ship of sick passengers without proper planning.

</comment></comment></comment><comment><USER6> This has been true for some time.

The priority now is that slow its spread as much as possible so medical resources are not overwhelmed.

The scenario of a million people sick in one month is very very different from a million people sick over 3 months.

</comment><comment><USER7> Strange, I often read/hear that from German scientists too. But I wonder: why has China succeeded in (maybe only temporarily) stopping and reversing the exponential growth? South Korea seems also to be on the path of achieving this.

Of course, there is the possibility that numbers jump again like crazy once the heavy restrictions are lifted. But I still wonder why there is no second Wuhan situation somewhere else in China.

<comment><USER8> > But I wonder: why has China succeeded in (maybe only temporarily) stopping > and reversing the exponential growth?

I heard rumors that Chinese doctors got quotas of max cases they can report, then they have to make something else up.

Plus all other stuff that they enforce there, like mass spraying, presonal lockdowns etc. That must play role too.

Problem with China is that you can never trust what they report, as they are not allowing any outside org in to check /help/advice.

<comment><USER7> Yeah, you're probably onto something. They're probably keen on "shaping their version of the whole story"

</comment></comment></comment><comment><USER9> Weren't epidemiologists saying this in mid January after the first scientific analyses came out of China?

Not sure there's anything novel here. Just another epidemiologist continuing to try and get the word out and people continuing to ignore the science.

Maybe politicians will actually listen to someone from Harvard now though, one can hope.

<comment><USER4> I really love how an opposing opinion to "the appeal to authority fallacy" has somehow turned into "denying/ignoring the science!", can people not be allowed to dissect and create an opposing opinion or conclusion of the facts that are presented by these figures?

<comment><USER9> Of course they can, but this is just click bait is my point.

</comment></comment></comment><comment><USER10> Is there any point in linking to articles we can't read?

<comment><AUTHOR> How's that? I can read the article just fine.

<comment><USER11> ... after I turned on translate, and clicked on "Accept" (Akzeptieren).

</comment></comment></comment><comment><USER12> The log flatlined. What does that tell us?

<comment><USER4> That people love to fearmonger for views and ratings, also they want someone to blame that has absolutely nothing to do with the outbreak.

Personally I think this entire thing is blown extremely out of proportion by the media (at least in the US, where we are rated #1 at preventing things like this). Compare it at the same time to swine flu and the results are extremely interesting.

<comment><USER13> What do you think about Marc Lipsitch's analysis is overblown?

<comment><USER4> I wasn't referring directly to this article with the "fearmongering" opinion. However, in regards to Lipsitch's analysis he uses a lot of "may be, we don't know, etc.." speculation that seems to hint that even the experts don't quite have the full grasp of the situation yet either.

I am all for safety and notifying the public of immediate threats, and taking the correct precautions. But, at this point it seems increasingly that these predictions and analysis are being too quickly released with not enough information so you get great amounts of speculation which therein fuels panic.

</comment></comment></comment></comment><comment><USER14> -

<comment><USER15> That is explained in the following sentences.

</comment></comment><comment> the-peter There never was any hope that it could be stopped. The goal is to slow down the spread so the medical system isn't overwhelmed and people can be helped.

</comment><comment><USER16> Neither can the Coronavirus posts on HN it seems. There are a million trillion websites where you can discuss your favourite doomsday theories about this pandemic, can we please spare this place?</comment>


Was the thermal exhaust port on the Death Star really a design flaw? - <AUTHOR> http://scifi.stackexchange.com/questions/3200/was-the-thermal-exhaust-port-on-the-death-star-really-a-design-flaw

<comment><USER2> This is exactly what I love about the internet; a fictional question that is being debated seriously and intelligently.

<comment><USER3> And debated under the assumption that Lucas _wasn't_ just full of crap but happened to be an alright director at the time.

<comment><USER4> Yes, "at the time" being of tantamount importance.

</comment></comment></comment><comment><USER5> Yes.

To see why, look under your sink.</comment>


Catherine Deneuve Signs Open Letter Denouncing 'Me Too' Movement as 'Witch-Hunt' - <AUTHOR> https://www.rollingstone.com/culture/news/catherine-deneuve-signs-letter-denouncing-me-too-movement-w515248 <comment><USER2> Really has nothing to do about offending women, this is about powerful men using their power to force both men and women and even children to do things completely against their will for fear of having their career destroyed. The power differential is what makes this important, the entertainment industry is not a holocracy, you have an extreme hierarchy and its very easy for that power to be abused.

</comment><comment><USER3> > French cinema icon claims recent focus on outing sexual predators is > stymieing sexual freedom

No one ever had sexual freedom. It was just sexual freedom for the 1% who could afford gym memberships, not working in college, organic food, etc. Recently, now that the rich work so so much, I'm doubting even they are finding sexual freedom, whatever that is.

You would have had more sexual freedom in the 1950's.</comment>


New hydrogen explosion rocks stricken Japan reactor - <AUTHOR> http://www.reuters.com/article/2011/03/14/us-japan-quake-explosion-idUSTRE72D8EO20110314?WT.tsrc=Social%20Media&WT.z_smid=twtr-reuters_%20com&WT.z_smid_dest=Twitter

<comment><USER2> Turns out all the optimistic scenarios beloved by Hacker News were sadly wrong. The containment for reactor 2 is almost surely damaged now. If I understand correctly, the suppression pool is vital to maintain integrity primary containment as it vents extra pressure steam and is also the source for water that is pumped in to the primary containment to keep it cool. After the explosion pressure in the suppression pool dropped to 1/3, implying its seriously damaged. It may be only a matter of time till the primary containment itself is damaged.

Its not apocalypse yet, nor will it be apocalypse even if the containment fails. Chernobyl after all resulted only in a few hundred deaths. But there are a few more complicating factors here. Primarily, if reactor 2 does indeed go in to full meltdown and radioactivity escapes freely, how will the other reactors be maintained? They are still critical. Sadly I think several of the workers there will likely be giving their lifes for this.

Secondly, Japan is much more dense country than Ukraine/Belarus were. And finally, the country's infrastructure is not yet restored to normalcy. Surely power/water/communications all will further breakdown.

Still, Japan itself has recovered from even greater calamities - as the Prime Minister reminded us. I believe in this case, within a few months recovery will be with us.</comment>


Blocking ad blockers boosted Facebook's desktop ad revenue 18% - <AUTHOR> https://techcrunch.com/2016/11/02/add-cash-plus/ <comment><USER2> Not used FB in years. Nice it didn't die out like myspace.</comment>


How Long Can a Spinoff Like 'Better Call Saul' Last? - <AUTHOR> http://fivethirtyeight.com/features/how-long-can-a-spinoff-like-better-call-saul-last/ <comment><USER2> I think that he misses a subtle point. A lot of the failed spin offs were crap. So he must explore also the failure of new shows to the failure rate of spin offs to give better idea.</comment>


Ask HN: Who is Looking for a Co-Founder? (July 2011)  - <AUTHOR>

[Follow up last month: http://news.ycombinator.com/item?id=2608849]<p>Please describe:<p>- your expertise (startup and/or prior work)<p>- desired skill set(s) of a co-founder<p>- whether you have an idea that you are committed to or you are willing to explore other ideas<p>- areas of interest <comment><USER3> Expertise: 3rd year computer engineering student, run my own freelance web design & dev company since 17 - akpro.net. My personal portfolio, aysark.com. UI/UX & frontend developer with decent backend experience.

Desired skill set: We are looking for a backend (PHP/MySQL) and/or mobile developer. This is our priority atm, but if you have something else unique (ie. marketing/business guru)- shoot me an email. (Currently a team of 2 cofounders, looking for a 3rd to tie the knot)

Idea: Currently working on a new recently launched startup, Studygig.com - <USER2> search engine and hub for university/college students to find, share and list study material. Customer has been validated and idea has 2nd-mover advantage, with emphasis on product and traction.

Interest: Making the web a better place. Based in Toronto, Canada.

Contact: firstname.lastname@example.com

</comment><comment><USER4> Experience: Data Storage, Prior Startup founding experience (small angel funding, failed), MBA. Semi-technical - Enterprise Systems experience only, no development experience. All experience in Enterprise Domain, Like Customer facing Roles. Believe in Lean Startup.

A co-founder with prior startup experience, either technical/engineering or business development. Capability to commit some money and can live without income for at least a year. Business/Technical knowledge in one or more interests listed below a plus.

Interests: Data Storage, Big Data, Data Mining/Machine Learning. Currently looking at recommendation/similarity area. Focus on Enterprise Domain. Mobile Apps with Enterprise target may be of interest too.

Open to exploring ideas together.

</comment><comment><USER5> \- Apple Computer, eBay, Yardbarker, Apture now fulltime on Open Home Pro

-I need a cofounder who is a great backend engineer or loves iOS (Objective C)

-I'm committed to Open Home Pro, have over 8k users

-Currently based in Dog Patch Labs in San Francisco.

Andrew

<comment><USER6> @somagrand whats your email?

<comment><USER5> firstname.lastname@example.com

</comment></comment></comment><comment><USER7> My experience is in the industry domain, tech commercialisation and fundraising. Some start-up experience, just quit academia to turn my vision into reality.

You know your way around Ruby/Python, API development, Web Services, JSON, Apache, MySQL, Linux, Unix, Design Patterns or comparable Plus you have a burning desire to join and grow a start-up.

An incubator wants to fund our concept for a novel B2B platform. I'm looking for a second hands-on technical co-founder to round the team and to help us turn the mock-ups into an MVP and then on to launch and beyond.

Based in Cambridge/London UK. Get in touch with me at email@example.com

</comment><comment><USER8> (using throwaway account for this because I'm disclosing details of my current startup)

Background as software developer, currently sole founder of another startup which is cashflow positive (monthly revenue in thousands) but doesn't look like it will scale easily, hence looking at starting a new startup.

Have an idea for a startup operating in the advertising space, essentially taking a product that's available to entreprise companies (and typically sold with consultancy as an add-on) and making it available as "self-serve" to small & medium size businesses.

<comment><AUTHOR> What about a throwaway email address to contact you at?

</comment></comment><comment><USER9> -Previous startup was acquired. Have done other business and investments prior. Worked both on the business and technical side so skil

-Would be cool find another badass hacker to work with. Haven't really looked but anyone that wants to connect, feel free to reach out.

-No idea currently. Just exploring and hacking random stuff at the moment.

-Got a list of things I wouldn't be interested rather than things I am interested in. Anyone that is interested can email me. Email is in my profile.</comment>


Mentor Program in IT for a middle schooler in Atlanta - <AUTHOR>

Hi, I have been searching for a week without any success for a mentor-ship program during summer break for a middle school student who wants to be a software engineer, in or around Atlanta. If your company has any program even if its once a week, please let me know.<p>thanks ~a <comment><AUTHOR> Its for the son of a lady who works at my son's school. Any help would be greatly appreciated.</comment>


Ask HN: Accounting, financial app for SaaS companies - <AUTHOR>

I've been working on a startup idea dealing with online accounting. I've been struggling to define the sweet spot MVP to launch with in a continuum between full-featured QuickBooks and no-accounting inDinero.
One pain I've realized is that existing products aren't designed for recurring revenue SaaS companies. The easy accounting sites generally cater to freelancers and other service-based small businesses.
Would an app that shows graphs of revenue for recurring customers based on plans be something of value? Would that solve anyone's pain but my own? <comment><USER2> There's a huge unsolved need when it comes to accounting software. Good job identifying it!

The customer problem, as I understand it, is that accounting requires you to understand bizarre terminology and concepts (debits, credits, financial statements). Anybody who hasn't taken Accounting 101 and 102 would have a hard time using any accounting software I've ever seen. Even having taken accounting in college, most of us don't use it enough to remember all the details.

I would solve that problem by assuming the person using your software has no accounting background. Take out the jargon and replace it with familiar concepts. It's a wonderful UX challenge, but completely doable.

You have about a year to execute before I tackle this problem. Good luck!

<comment><AUTHOR> Great layout, you'll get your product much sooner than a year!</comment></comment>


Markdown.css – Make HTML look like plain-text markdown - <AUTHOR> http://mrcoles.com/demo/markdown-css/ <comment><USER2> While I can't imagine _why_ anyone would want/need to do this... it does do a great job at demonstrating the flexibility of modern CSS! The most clever bit (to me) is the underline characters on the <h1> element.

<comment><USER3> The underline on the <h1> just uses the :after psuedo class with some absolute positioning and some padding. Just like almost every other class here. I'm curious what sticks out to you as extra clever with the <h1> vs the other elements that also use :before / :after

<comment><USER4> The tricky part is rendering the correct _number_ of equals signs. Markdown.css fakes it by rendering a constant large number of equals signs, then setting the width so that only some are visible.

<comment><USER5> It seems to work by printing lots of `=` beneath, and then hiding the overflow. Inspecting and changing the title's width reveals more `=` and makes it possible to display half of one.

</comment></comment></comment></comment><comment><USER6> I don't get all the hate for this. I think it's very nifty and actually has a number of easy applications right off the top of my head. You've basically just built an html-to-plaintext conversion utility, using your browser's HTML parser/render instead of writing your own. You've taken a difficult-to-parse syntax and changed it to plaintext, after which it can be marked up (or down) as needed for whatever application you have in mind.

Cool.

(immediate "tags" that my brain went to upon seeing this: printer mode, accessibility modes for visually impaired, text-to-kindle, text-to-audio)

<comment><USER7> > You've basically just built an html-to-plaintext conversion utility

That's not what this is. Try copying the markdown so you can edit it as you suggest and you will find it doesn't work. The output _looks_ like markdown, but it isn't markdown, and that's the source of the negative reactions. Having a one-to-one correspondence between representation and rendering is the main thing that makes markdown useful. Making something look like markdown but not actually be markdown strips it of nearly all of its utility.

<comment><USER8> > _Having a one-to-one correspondence between representation and rendering is > the main thing that makes markdown useful._

And looking simple with minimal formatting is the second thing. This idea taps on that second thing.

<comment><USER7> If that's your goal, and your source is already in HTML, then the best solution is no CSS at all.

<comment><USER9> Isn't the default styling of HTML in browsers mostly just due to historical accidents?

<comment><USER7> Probably. So?

</comment></comment></comment></comment></comment></comment><comment><USER10> Cute. But is there any way to make the markdown formatting text actually selectable/copyable? Right now I can't select it, and if I copy the text surrounding it, the markdown formatting simply vanishes.

<comment><USER11> There is. You just need to manipulate the selected text as described here [http://stackoverflow.com/a/36582615/308851](http://stackoverflow.com/a/36582615/308851) and [https://github.com/niklasvh/jquery.plugin.clipboard](https://github.com/niklasvh/jquery.plugin.clipboard) here.

</comment></comment><comment><USER12> I was quite surprised to learn about the attr function [0] that allows you to query the selected element's attributes, but it's actually been around for a while now and is supported by most (/ all?) browsers. Pretty nifty.

[0] [https://developer.mozilla.org/en- US/docs/Web/CSS/attr](https://developer.mozilla.org/en-US/docs/Web/CSS/attr)

</comment><comment><USER13> As the author notes, there's a similar project here: [https://fvsch.github.io/remarkdown/](https://fvsch.github.io/remarkdown/)

Personally, I'd consider using this for projects where I want the plaintext aesthetic, but also with the semantic elements that HTML provides for accessibility/interactivity purposes.

</comment><comment><USER14> Lol, loving all the comments asking what the usecase is or pointing out how it's not functional.

Here are some other things I've built in the past because the code and/or the idea was interesting to me: [http://mrcoles.com/failed- projects/](http://mrcoles.com/failed-projects/) | [http://mrcoles.com/dragondrop/](http://mrcoles.com/dragondrop/) | [http://mrcoles.com/tetris/](http://mrcoles.com/tetris/) | [http://mrcoles.com/low-res-paint/](http://mrcoles.com/low-res-paint/) | [http://mrcoles.com/piano/](http://mrcoles.com/piano/) — don't bother asking for a usecase ;)

</comment><comment><USER15> What I don't get is why Markdown is always displayed as _plain text_ , when it's supposedly a format to represent styling. Why can't we have a version of Markdown that gets syntax highlighting according to the actual written markup, without hiding the markup code? I.e. making identical the "code" form and the final "rendered" form.

For example, writing " * this is highlighted * " would be shown as " * _this is highlighted_ * ".

 _Edit_ : I've just found [http://hackcss.com/](http://hackcss.com/) in the comments below, which seems to _get it_ and does what I've explained above, highlighting headers and code with a bold, darker font.

<comment><USER16> Some newer Markdown editors will style the raw Markdown in addition to providing the rendered form, such as StackEdit[1] or Nanote[2] (my own work).

[1] [https://stackedit.io/editor](https://stackedit.io/editor)

[2] [https://nanote.co](https://nanote.co)

<comment><USER17> For a desktop editor, see: [http://www.typora.io/](http://www.typora.io/) (non affiliated, I just like it, wanted to write something similar)

<comment><USER15> Yes, Typora's _live preview_ is more or less what I was thinking, showing the markup just for the item rigth below the cursor.

I'd still add a mode like Microsoft Word's "show formatting marks", so that the user can decide whether to see the full markdown text or only the word or line being edited.

</comment></comment></comment></comment><comment><USER18> I for one, applaud this type of experiment over the next new CSS grid framework that does the same thing as thousand others that came before.

</comment><comment><USER19> Yes! and just for the record I wrote a similar thing 3 years ago [https://github.com/NKjoep/i-love- markdown.css](https://github.com/NKjoep/i-love-markdown.css)

</comment><comment><USER20> It would be way more useful if you could copy the "markdown version" (as a quick way to create Markdown files), but a lot of characters such as "##" can't be selected/copied because its using the css rule "content" to create them[0].

Unfortunately a proper solution for this would need to modify the HTML (JavaScript) to add such characters.

[0] [http://stackoverflow.com/questions/19914349/how-can-i- make-g...](http://stackoverflow.com/questions/19914349/how-can-i-make- generated-content-selectable)

<comment><USER21> Why are css content characters not copy/pasteable?

That seems broken.

<comment><USER22> Probably because they _should_ only be used for 'decoration' rather than actual content - this is css, after all.

</comment></comment></comment><comment><USER23> or to actually convert HTML to markdown: [https://github.com/leeoniya/reMarked.js](https://github.com/leeoniya/reMarked.js)

disclaimer: mine

<comment><USER24> or to convert rich text to markdown: [http://markitdown.medusis.com](http://markitdown.medusis.com)

(same disclaimer!)

</comment></comment><comment><USER25> Another similar project is [http://hackcss.com/](http://hackcss.com/) (which was inspired by this one).

</comment><comment><USER26> Shame you can't select all the selectors for markdown.

<comment><USER27> IIRC, Firefox used to have this behavior. It no longer does.

<comment><USER28> Could be wrong here, but I don't think it did. I remember when the feature was first implemented, and I thought that the fact that you could not select pseudotext was just a temporary thing while they finished their implementation. Unfortunately it never happened.

<comment><USER29> Opera did this iirc

<comment><USER27> That was probably it. I knew _one_ of them did.

</comment></comment></comment></comment></comment><comment><USER30> I ask about Pandoc in every Markdown thread, but only because I'm interested in the success of Markdown.

That said... why not Pandoc? Just too heavyweight for a browser?

<comment><USER31> Is there a JS port? I <3 Pandoc and use it to publish projects to PyPI and Github with one readme.

<comment><USER30> No but that would be very interesting.

</comment></comment></comment><comment><USER32> I'm curious on your intended or expected use cases?

</comment><comment><USER33> I don't understand the love for markdown. The problem is it ignores a single line break. Comments on hn and reddit do that too. Result: people posting a list of things intended to be one per line, instead become concatenated on 1 line with spaces. I know there is a way, two spaces at end of previous line. That method is hard to maintain if editing, has nothing to do with plain text, easy to forget, and most don't know.

It should turn a line break into br, then markdown would be alright.

<comment><USER34> With an 's#\n#<br/>#g' substitution you now have to choose between readable source text (lines < 80 characters) and responsive rendered HTML (lines don't break until boundaries).

<comment><USER33> Valid point for in text editors and code.

The problem is many input fields in websites trending to use it now. I think BBCode was more suitable for that. Markdown is easier than BBCode on one hand, but the newline thing ruins it for simple replies to posts.

</comment></comment></comment><comment><USER35> What's the use case? I'd rather go the other way around... Markdown -> HTML</comment>


Meeting everyone on a new team - <AUTHOR> https://www.annashipman.co.uk/jfdi/meeting-everyone.html <comment><USER3> I did something very similar when I joined my last team. I like Anna's questions. One of the questions I asked was 'who do you go to for advice and bouncing ideas off'. This gave me a great view of the key knowledge nexus points and how people are connected to each other in the team.

After I'd spoken to everyone, I created a report for the executive committee summarizing all topics that had come up multiple times, and highlighting individuals that were widely relied on.

<comment><USER4> Oh man, I love that "who do you go to for X?" question. I'm starting as an SWE on Monday, so that's big on my mind.

<comment><USER5> what is SWE?

<comment><USER6> More importantly, who do you ask "what is SWE" to?

<comment><USER7> Seriously in any big company who can you go to ask what acronym $TEXAS means is an important question.

<comment><USER8> In the big company I work for there are several valiantly started and quickly forgotten TLA dictionaries available on various SharePoint sites. Yet none had the few critical ones people were using when I started. Wondered if the popular jargon changed or different groups had splintered their technical talk.

<comment><USER9> We even have an internal web app. After years, still new acronyms are added every day.

<comment><USER10> _We even have an internal web app. After years, still new acronyms are added every day._

A previous employer had one of these. Submitting a new acronym required a change request and took several weeks to make onto the site. Needless to say, it was useless for its intended purpose.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> > This is confidential. If you say something about someone else I'm not going > to go and tell them.

Warning to all of you in non-managerial position: be very wary of confidentiality proclamations. It happened to me that my manager ran immediately to the CEO, when I said I'm going to start looking for a new job in 3-6 months time. I told him that I specifically don't want this information to leak, but yeah, everybody knew it by the next working day.

Lesson learned: never tell anything sensitive or important in your 1-on-1s with the manager. Except pleasantries, hobbies and other useless stuff.

<comment><USER12> Very true. For me saying this conversation is confidential has a negative connotation. It raises some flags like:

1\. Are we going to talk about something which we can't broadly address? 2\. How do I trust someone new on the team to actually keep things confidential, what have they done to earn my trust? 3\. I'm going to be more guarded about what I say, because now I'm thinking this person will probably want to misconstrue what I'm saying to their benefit.

Talking about career conversations. I wouldn't tell anyone about my career plans until the day I have to. In my experience telling people early has no tangible benefit.

<comment><USER11> It's stupid in hindsight, but I just wanted to give him a chance to better prepare for me leaving, like start looking for new developer(s) or shift plans, etc.

<comment><USER13> I don't think it's stupid at all, it just shows you had a not so great manager. They could have used this information to start preparing without revealing the specifics. Unfortunately it's these types of incidents that make people weary of engaging in this level of candidness.

At the company I just left, I felt extremely comfortable telling my direct manager I was interviewing. By the time I got an offer we had a plan in place for my departure.

It's certainly a situation specific action, and it's unfortunate that more managers aren't equipped to handle this adequately.

<comment><USER14> > I don't think it's stupid at all, it just shows you had a not so great > manager.

No, it was epically stupid. The manager was actually very good at their job for reporting that a key team member was planning on leaving and the process for replacement and knowledge transfer needed to begin ASAP.

What both you and the GP haven't figured out is your manager is not your friend, their duty is to the company and you can be friendly but you can't ever let yourself forget you're both their for a paycheck.

If either of you slip information to the other that jeopardizes that person's paycheck you've done them a disservice and force them to choose between financial stability and perceived loyalty to you.

The most pernicious propaganda I've seen in startups and small companies is that _we're a family_ and you can come to me at any time about anything. That's absolute dogshit and you need to put the coolaid down, family doesn't negotiate pay raises and equity, families don't quit or fire each other.

<comment><USER11> I disagree with almost everything you've said. That remark about financial stability is laughable at best.

Look, I don't have any problem with my coworker(s) being more loyal to the company than to me. I do have problem with lying, though. Lie to me once and I'll never want to deal with you again.

</comment></comment></comment></comment></comment></comment><comment> josep-panadero I have done that in my previous two jobs. And I find it easier to do as soon as I join a new company than later. Once I get involved in projects it requires more effort to get the time. And to know everyone and their opinions is very important to get up to speed. The views of managers/product/developers/testers are not perfectly aligned. Also, it is a great opportunity to understand the views of the less vocal members of the teams. Finally, it is important to present yourself, so people have an easier time to rise any concerns when they arise.

Sadly, right now, I am technical leader for too many teams but once the situation is solved (we are hiring a new architect) my focus is on getting more regularly in contact with all teams and not just the ones working on the topics that require my attention. There are always small things that go unsaid unless done in a one on one.

One year later, I repeated - just for three teams - the ones on ones and asked for personal feedback and the general "Is there anything you think I should know about?" again. It was very insightful, and I was able to get more into the nuance of the people's views as I had more knowledge about the company.

I recommend, if you have the opportunity, to go to training on coaching. I got the training as a manager several years ago, and I found that type of training very useful for all positions and an important part missing in the software engineering curriculum. It is very difficult to help to solve technical problems without knowing the views of the people that would design and implement the details of the system. Spending time to create rapport it always pays off, and - for me - it is something fun to do.

</comment><comment><USER15> That's a great piece, thanks for sharing!

Knowing that engineering teams are overloaded most of the time, I've got that question for first 1:1s: "If you have a week without having to closing tickets, what would you do for the project?" Those are not necessary an items for my to-do list, but clearly showing people's priorities and what they think is really important.

</comment><comment><USER16> At a "lower" level, I've done something a bit along those lines when starting at my last job: I picked a bunch of people from each team at the company and reached out to them to schedule a one-on-one about them, the way they see things, their experience so far, their team, and a short introduction on my part.

It wasn't about trying to be ten steps ahead of anything or about taking any statement as absolute truth, but to understand different perspectives, to explain in quick and simple terms the reason why I had joined and in what ways I could help them, and to establish those contacts to facilitate future interactions. Every single discussion was worthwhile, because I understood a lot about the company really quickly (which helped me in my work) and every time an issue came up I could easily feel empowered to connect with those people and be put in touch with the right person, or to hear the non-official stuff that is sometimes harder to share across teams and therefore help the team with a little bit more personality than by slinging tickets across boards.

Assuming you're not working in a place with an overwhelming amount of psychopaths (which I assume is a reasonable goal for the majority of people), I would say that caring about other people does pay back quickly and significantly (as shallow as that might sound).

</comment><comment><USER17> As a software developer, being introduced only to the managers and not the team as part of the interviewing process is one of the biggest red flags (except during social distancing times, of course). Picking up the vibe is an excellent way to know whether I'll be able to contribute as much as possible. It doesn't have to be time consuming at all; simply joining a standup should be plenty.

For example, are the tech lead and managers listeners or talkers? Do they solve problems, delegate them or ignore them? Is the team as a whole enthusiastic about the work? Are there rock stars, cowboys, social justice warriors, dominant/submissive personalities, blamers, micromanagers or virtue spiralists? A little bit of even several of these is probably inevitable in any team, but it's possible to take any one of these to a toxic level.

<comment><USER18> Don't know why this is being downvoted, its right on. I need to know I'm working for, but I also need to know who I'm working with.

Probably can't actually peg all potential problem team members, but getting a chance to do so is valuable and shows good will on the part of the employer.

I guess some people are upset at the characterisation of "social justice warriors" as a negative. Don't really want to get into the politics part - <USER2> that's kind of the point. There _is_ a place for politics at work, when it can alleviate genuine suffering, but advertising which in-group you belong to isn't it. That goes for both sides of the political divide.

</comment></comment><comment><USER19> I would like to work with her.

I've had bosses occasionally call me in for these types of open questions. It's really useful. But there's also a bit of mystery to when it happens and why it is not equally distributed across the team. There's a bit of "teacher's pet" anxiety associated with it.

There's another thing that can happen in these confidential conversations which she was not in a position to do at this point... Sometimes the boss can explain the political landscape he/she finds themselves in, such that you can contribute better insights to help them protect your team.

</comment><comment><USER20> Would a similar strategy be valuable for an IC (individual contributor) joining a new team? For example, setting up 1-on-1 meetings with direct teammates soon after joining.

<comment><USER21> Yes! This is what we do. We even explicitly typically put it in your 30 day plan.

</comment></comment><comment><USER22> > With a team of ~50, that's a lot of hours, and I was also working four days > a week so each meeting takes up a greater proportion of time.

At thirty minutes a pop these meetings come out to 25 hours. That does not strike me as "a lot of hours" given that this is talking to everyone who works in your department. Put another way is like a sanity check on the biggest and most important category of your department's budget, at roughly 1% of your annual time.

<comment><USER23> At the exec level, a good 70-80% of your time is probably unable to budge, so 25 hours of discretionary time _is_ a big investment - probably most of your discretionary time for a calendar month. It sounds like it was well worth it though.

<comment><USER24> Uh, why would your time not budge? As I've become more senior I've also been left more and more alone to determine what is important to be doing at any given time.

<comment><USER25> As an executive, your calendar will fill up fast with meetings, planned and unplanned. 1:1's with direct reports, 1:1 with your boss, your staff meeting, your boss' staff meeting. Meetings to manage down, meetings to manage up. Meetings with product, meetings with sales, meetings with operations. Various steering committee meetings to move larger initiatives forward. Meetings with customers and prospective customers. Meetings that need your decision, your expertise, or need to bring you up to speed on evolving issues.

And many of these meetings need preparation in advance to be productive. So your time is quickly depleted. Many executives do their deep thinking in the early morning or on the weekends since their day is a day of interruptions.

At least that has been my experience in my last 3 roles.

<comment><USER26> I once worked with an exec who had an interesting solution to this: he accepted meetings of 30minutes max. Hard limit (which is a good idea regardless of length ofc).

He was quite senior, so most people wanted to meet him rather than vice versa, so he could 'afford it', which someone in a more junior position probably couldn't pull off.

These meeting were the most effective I've ever experienced. No smalltalk no beating around bushes, there's no time! Regularly I need to discuss 4 to 6 issues with him, which meant my prep needed to be perfect and laser focused. He would read your preparatory docs fortunately, I can't work without unprepared meetings either.

<comment><USER27> That works sometimes, but only if it makes sense for one side of the meeting spending the necessary time to make such a presentation. If the meeting takes 2x as long unprepared, but it took you longer to make materials it can be more of a toss up. I wouldn't look at such prep as the hallmark of a good meeting, but more as an adaptation to a particular constraint.

Of course, difficult to communicate ideas (such as in science) require preparation or they are unintelligible and the meetings are a waste of time.

<comment><USER26> No prep often means two things:

1) the meeting will be as fast as the slowest reader/understander. Personally I dislike having to wait until the meeting to learn about its content in depth. 2) No recall. Many people do not remember things that weren't written down. Good minutes may help, but given the effort investment I prefer good prep docs. More succinct.

Making good materials usually means you can reuse them, so in my experience that pays for itself.

</comment></comment></comment></comment></comment></comment></comment><comment><USER28> With remote working becoming so prevalent the thought has crossed my mind about what it might be like to start a new job without having much contact with most people who work there.

Seems like it would be harder to become friends with coworkers, or easy feel isolated in your work (particularly outside of software development).

<comment><USER29> My company is fully remote. I schedule a 30 minute 1:1 social call with a random colleague once a week. I find this is a good balance for me personally -- it ensures I get enough social contact (in addition to my other meetings and 1:1s with my managers) but it's not a huge chunk of my work week taken up.

On the calls we talk about random stuff like our hobbies, what's going on in our lives, what we did this week. Occasionally we talk a bit about work but we usually try to keep it as socially focused as possible.

I've found that it contrasts well with the typical situation of being in an office. In office I find there is continuous social interaction, but it can be more shallow (banter, quick chat, etc), whereas a 1:1 format like this allows you to develop a deeper connection with each person and have more nuanced discussions.

<comment><USER30> We do as well, we use a slack bot that pairs people that are member of a specific together every Monday.

I think it's this one <[http://www.randomcoffees.com/](http://www.randomcoffees.com/)>.

</comment></comment></comment><comment><USER31> Perfect timing. I just joined a company this past week as a software engineer. Day one, I knew 5 people, only topically. By the end of week 1, I have introductions/1:1s scheduled for 30+ top-notch people at the organization. Here's the method I used to do this:

I created a really comprehensive intro email about myself (work stuff, personal stuff, passions, etc). I wrote this in Google Docs, so it would be easy to paste into Gmail, and preserve the nice formatting. In this email, I included several questions (see below), which I wanted to ask the person. I got these questions from a few sources, including "The first 90 Days" book, along with some other questions I found through Google. At the end of the email, I marked in bold: Suggest 3 other amazing people for me to connect to, and why you recommend them.

I sent the emails out, and got replies within 1-2 days - 75% provided me with 3 names! If some did not provide me with names, I politely followed up with warm, thankful email, but also a reminder to please send me name, which each of them did.

I then sent out "cold" emails to THOSE people, starting with "X person said to reach out you" (helping bring a familiar name immediately at the beginning of the email). I used the exact same email template for that, along with asking for more names.

I used a Google spreadsheet to keep track of all the people I reached out with, along with columns for questions, the people they referred, and who referred them.

At current, I have 15 1:1s scheduled for next week, and tentatively 5-10 scheduled for the week after. I'm using labels in Gmail to flag "@ Waiting" for the people who have not responded, so that I can follow up after a few days.

In the meeting invites I sent to folks, I included the agenda items in the description, so it was top-of-mind for them, as they checked their calendar.

I'm using a note taking tool called Obsidian ([https://obsidian.md/](https://obsidian.md/)) to take notes on all the conversations I'm having with people. This tool lets you write in markdown, and quickly crosslink topics (like a personal wiki). The goal is to create a knowledge base of information, based on all the "here's what you need to know" topics that people share with me.

Finally (and important). I made sure to set expectations with my manager before doing this. I basically told him: (1) I am going to setup conversations with many people this first 2 weeks of work. (2) I will use this output of these conversations to build a learning plan of topics which these people suggest focusing on, (3) I will then synthesize these notes, and will share them with you (manager). (4) You and I will review the learning plan, and prioritize it together. (5) We will use this plan, along with our weekly 1:1s to build out a 30/60/90 day plan.

This was important, because it allowed me to "buy time" before being thrown into a million meetings, assignments, etc. Each person I have spoken to so far has had different suggestions on what the first several things to focus on, learn, etc are. However, they have all been incredibly valuable - and in many cases, they are things I would not have immediately known to even list down.

The great part about this approach (in my opinion), is that all of the people I'm meeting are essentially pre-selected for awesomeness by someone awesome. All of the conversations have been enormously valuable.

The feedback I've gotten from the people has been really great, and validating!

Bonus: I have been using an app called UpHabit ([https://uphabit.com/](https://uphabit.com/)), which is a "Personal Relationship Manager". It lets you tag people (e.g. by skill, passion, etc), and then assign regular reminders to reach out to them (e.g. "connect with this person every 3 months"), and lets you take notes on the conversations you had. I have found this tool enormously valuable, as its allowed me to "scale" my personal network, and trust that important people don't get forgotten. I find myself a very LIFO person (the people I most recently connected with, I'll remember to connect with. The folks from long time ago, I often forget). This tool has been helping me re-invigorate my personal/professional relationships.

Note: I have no affiliation with either of the tool recommendations in this post, aside from finding them very useful!

Below are the questions I included in my intro email. If anyone would like to see the "full" email, I could probably generify it, and share directly.

\--- Tell me about yourself! If you feel comfortable sharing, I'd love to hear what you are personally passionate about, and what topics, processes, areas etc you are passionate for at X.

What is your role & your responsibilities at X?

What's a "day in the life" like for you? This helps build empathy and understanding for your world, and how I could best help.

What are your top 3 priorities in the next two months? What specifically are you hoping to achieve?

What do you feel are the top 3 challenges/blockers (1) facing X, (2) facing your team, (3) you professionally at X?

What is your understanding and expectations of me and my role?

How do you envision us working/partnering with one another?

If you were in my shoes, what would be the top 3 things you would prioritize, learn, or focus on in the next month or two?

For each of the above, what would be an actionable next step to make progress? (it could be as simple as, "reach out to X person", or "read this blog post")

What do you think would be some realistic, achievable and impactful "quick wins" or contributions I could make, for me to consider taking on as I get started at the company?

Very Important: Suggest 3 amazing people at X for me to reach out to, who you think connecting with and learning from would help make me successful in my journey at X. Be sure and tell me what about these people is so amazing & awesome!

<comment><USER32> As this currently reads, this evokes intense feelings of vitriol at the mere hypothetical of a peer attempting to coerce me to engage in a pathologically transactional relationship I would want zero part of. In the most satisfying job roles, I would expect to endure hardship for the sake of others' success, and this would immediately put me on notice that such endurance would likely be wasteful and painful in its lack of reciprocal personal investment. It would also signal that engagement in technical subject matter was merely a means to an end rather than an inherent fascination, which would make me significantly less likely to feel comfortable sharing the war stories that drive the motivation behind the current state of the team.

Am I missing something here? The post itself comes across as in-good-faith, so I'm having a hard time reconciling...

<comment><USER33> It's certainly... a lot.

Kind of reminding me of a coworker who kept a secret tracker of everyone in the office's dogs and kids. She considered herself a networking genius, but imo it was kind of creepy.

<comment><USER34> Sounds like it wasn't very secret...

</comment></comment></comment></comment><comment><USER35> I work remotely, where most of my team doesn't (well, didn't before Covid). I took the habit of initiating conversations with new employees, remotely or whenever I visit the office. It doesn't take much but it's worth it. It brings more trust and ease up future relations. Surprisingly, I've noticed some people can be isolated from their colleagues even when sharing the same office.

</comment><comment><USER36> In my time of bouncing between jobs and meeting new teams on a regular basis I found that the biggest hurdle for me was remembering where everyone sat in the org. So I made a little app to keep track of this (Collaborative Groups)

</comment><comment><USER37> good article and agree that continued 1:1s with a team of 60 wouldn't be worth it. i'd switch to a group meeting format or have 1:1s with key leads

</comment><comment><USER38> Why is this blog called JFDI? What does it stand for?

<comment><USER39> Just fucking do it?

</comment></comment><comment><USER40> > When I joined the Financial Times as Technical Director for FT.com, I > inherited a team of around 50 engineers. One of the first things I did was > meet each of them for a one-to-one. I was initially resistant, but it was > extremely valuable, I'm glad I did it, and I would definitely do it again in > a future role.

I recently joined a startup, and I am glad I did not meet everyone (except learned a lot of faces in video meetings) because of COVID-19. More precisely, the second wave has been officially recognized by the government last week. Remote working is the status quo, and it will remain that way. Not my preference, normally, but it'll remain this way for the time being. Perhaps an interesting article in 2021.

<comment><USER41> why were you resistant at first?

<comment><USER42> The &gt in the first paragraph means they're quoting the article.</comment></comment></comment>


History by lawsuit: the "inventor of e-mail" targets Techdirt - <AUTHOR> https://arstechnica.com/tech-policy/2017/06/shivas-war-one-mans-quest-to-convince-the-world-that-he-invented-e-mail/ <comment><USER2> In 1974 I started Computer Science at the University of Waterloo in Canada, and I got my first email accounts (plural) on various timesharing systems. The one that I used most was on a Honeywell 6050 TSS system (we called that one Honeybun, or the 'bun for short) and using the campus comms network, we would login to check email from several buildings on campus, many times a day. That comms network also allowed dialup modem access using acoustic couplers and I remember one department that had a TI Silent 700 terminal with acoustic coupler and modem, specifically so that they could connect to the 'bun.

And the IBM VM 370/CMS system also had email. People on that system developed a way to interconnect mainframes across the globe using a system called BITNET that was an email predecessor of the Internet proper.

On the 'bun we had the MAIL command which was either part of Honeywell's GCOS TSS or perhaps was one of the enhancements that we got from Bell Labs. When the University started setting up UNIX systems using the software from BELL Labs, we interconnected the UNIX email systems with the 'bun. Then by 1976 Waterloo folk had built an enhanced email system call Space Mail (because the command to invoke it was to type one space by MAIL) which had almost all the features of modern email systems such as revoking a message that you had sent by deleting it from the recipient's mailbox.

I suspect that no single person invented email. We lived in a world surrounded by paper mail delivery systems so at the earliest possible moment, anyone who could, was writing code to emulate mail systems in the computer. It's that simple.

<comment><USER3> I always thought the various email-related RFC's pretty much destroyed Ayyadurai claim.

For example, [https://tools.ietf.org/html/rfc561](https://tools.ietf.org/html/rfc561) is from 1973.

</comment></comment><comment><USER4> For the sake of historical accuracy, and for the sake of honest journalism, this lawsuit needs to bedecided in favor of Techdirt and to impose no financial hardship on Techdirt.

Ideally, Ayyadurai would be ruined as well -- as a cautionary tale for other miscreants.

<comment><USER5> > _Ideally, Ayyadurai would be ruined as well_

Paying the other side's legal fees is enough. The problem with injecting vengeance under a veneer of deterrence into the justice system is it dissuades honest suits. The risk of being "right" but not legally correct (per the court's interpretation) becomes too great.

<comment><USER6> There is plenty of good precedent for allowing countersuits in cases of frivolous litigation.

<comment><USER7> Not really. The bar is remarkably high, and judges are very reluctant to throw around substantive penalties.

The real solution is to force the lawyers to bear some of the burden when they lose. As it stands, the lawyers win regardless of how good or bad their case was.

<comment><USER8> Wouldn't that just discourage lawyers from taking cases that might not win?

<comment><USER7> As opposed to right now where they will happily take even completely lost cases as long as they get paid? I'll take that risk, thanks.

First, I'm not talking about criminal cases. I'm a firm believer that someone defending against a criminal conviction needs every single advantage they can get. The government is a well-funded, implacable enemy and you need every bit of help to fight it if you are innocent.

However, I have been part of several civil cases where the judge has basically said "I have rarely seen such horrific behavior from both client and lawyer--I have no real penalty sufficient that I can impose." And this was after the lawyer was blowing off _court imposed_ deadlines and fines.

The American civil legal system is set up for "the truth is somewhere in the middle even if it skews to one side or another." When you have genuinely bad actors on one side, it can be abused very badly, and it doesn't have very good self-correction.

</comment></comment></comment></comment></comment></comment><comment><USER9> I hate that he tries to play the victim card. He claims people don't want to agree with him because he is a lower class "brown" person and did the work as a 14 year old. People don't believe him, because he is just plain wrong. It has nothing to do with his age not heritage. And there is plenty of evidence to suggest he is wrong.

</comment><comment><USER10> The August 1982 registration discussed in the article was entitled "Computer program for electronic mail system." There are many subsequent registrations for things named "email." The copyright office catalog has 1977 registrations for a newsletter about "electronic mail & message systems" ("covering technology, user, product and legislative trends in graphic and record communications.") There is a 1979 registration for a book about "The Electronic mail market in Europe" and another for "Electronic mail in the 1980's."

</comment><comment><USER10> The individual that is the subject of the article is mixing terms, which is curious for one with ready access to counsel. A "copyright" registration does not indicate that one is an "inventor." One way to look at his omission to try to enjoin all from using the term "e-mail," is as an admission that the word was incidental to the registration, is and was not protected, and that it never mattered for the registration whether his use of the word was original.

Brings to mind mismarking of products as being subject to patent protection, which, of course, is against the law. Would be just charmed to see an extension of those principles to improper assertions of copyright protection.

</comment><comment><USER11> I personally traced the history of email back to at least 1971: [https://eager.io/blog/history-of-email/](https://eager.io/blog/history-of- email/)

After writing that someone let me know about this guy and his claims, and I think I added a somewhat flippant section on it. Of all the people who might have 'invented' email, it certainly wasn't him.

<comment><USER12> It's so weird that this guy thinks he invented email in 1982. I wrote one of the first email programs for PC-DOS in 1982 [1] [2], and we certainly didn't think we were "inventing" email. As you note in your article, it had been around for years! (We called it "electronic mail" back then.)

The only novel things about our program were:

1\. It used a graphical user interface built with the character mode graphics on the IBM Monochrome Display.

2\. We had the ability to connect to multiple email services using a scripting language, along with point-to-point dial-up connections to other users of our program.

But the email services we connected to had been around for quite a while before that. How else would we have gotten the idea of connecting to them - and more than one of them?

We had definitely never heard of this guy and his EMAIL program!

[1] [https://archive.org/stream/byte- magazine-1983-11-rescan/1983...](https://archive.org/stream/byte- magazine-1983-11-rescan/1983_11_BYTE_08-11_Inside_the_IBM_PC#page/n199/mode/2up)

[2] [https://books.google.com/books?id=6i8EAAAAMBAJ&pg=PA28&lpg=P...](https://books.google.com/books?id=6i8EAAAAMBAJ&pg=PA28&lpg=PA28#v=onepage&q&f=false)

The references are from 1983, but we were working on the program though most of 1982.

</comment></comment><comment><USER13> It's unfortunate, but he's not actually trying to scam anyone. He truly believes that he invented email. Furthermore, he has become paranoid in the belief that there is a huge conspiracy to discredit him.

<comment><USER5> > _he 's not actually trying to scam anyone_

Consider replacing "actually" with "intentionally"? He's actually trying to sell a lie. Whether he knows it's a lie might be another matter, and I'll grant you the benefit of doubt around his delusion.

<comment><USER3> Try this:

Go to Google and ask it "who invented email".

Interestingly, Bing gives a different answer.

<comment><USER14> remember if you find that an answer that google finds is misleading or inaccurate there's a box right there you can click to provide feedback

<comment><USER3> If you go to do that, they tell you your input won't affect the ranking of any page. So what's the point of giving feedback?

<comment><USER15> There is no direct effect on rankings of any page because bad search result does not necessarily mean the web page is bad. Also it is dangerous to leave users affect the results in such a simple way. The point of giving feedback is to help the search team improve their algorithms.

</comment></comment></comment></comment></comment></comment><comment><USER16> >Gawker paid Ayyadurai $750,000 to settle all claims //

Why? It says they were already battered from another lawsuit, I don't see why that means you should make a pay out to someone else who's lying; what specific claims had Gawker made that were supposedly false?

It keeps saying in the article this charlatan demands recognition. He appears to think having a copyright in a 40 y.o. program listing gives him a current patent?? Supposing he had invented email there seems no legal basis to give him any credit at all.

Ars were hella careful to give the false claims the last word.

<comment><USER14> If I were Gawker and going under because a predatory billionaire was going after me I'd throw as much money in other directions as possible as the ship sunk too.

</comment></comment><comment><USER17> I felt like I had won something when he got so sick of me telling the truth on Twitter that he blocked me.

He did not invent email as we know it today. He copywrited a term that described something people had already been doing for many years. That is not invention.

<comment><USER18> There's no such word as "copywrited". The closest word is "copyrighted", but you can't copyright a term. You can get a _trademark_ for a term, but it seems that's not what this is about either.

<comment><USER16> "copywrited" is pretty understandable and definitely a word, it may not be a mainstream dictionary word however.

A section of text produced by a copywriter has been "copywrited". It's ugly and unnecessary use of language IMO, I side with [https://www.rensch.com/copywrite.html](https://www.rensch.com/copywrite.html) more.

It has nothing whatever to do with intellectual property _rights_ however.

<comment><USER19> Given that the past participle of "write" is "written" and the preterite is "wrote", the forms of "copywrite" should be "copywrote" and "copywritten", not "copywrited."

<comment><USER20> That seems logical, unfortunately the only response which can be made is "English is weird".

(Though people do try to generalise rules like this, I see a lot of foreigners try to write "payed" instead of "paid". Similar idea, and equally logical.)

</comment></comment></comment></comment></comment><comment><USER21> Well t'internet continues to be disruptive. This seems to be the opposite of eg vacuum cleaners being referred to as Hoovers or ball point pens as Biros.

RFC 822 does not use the term email (nor does RFC 733) and yet I'm fairly sure (I was was only 12 in 1982) that email (e-mail and others) was a regularly used term back then for several message types that involved computers.

A copyright enforcement in just the US does not rewrite history.

<comment><USER19> RFC 822 and RFC 733 use "electronic mail", which is clearly meant to be the same term as e-mail and email.

The point about "I got a copyright for EMAIL, therefore the US government recognized me as the inventor of email" belies either a fundamental misunderstanding of what copyright is and isn't or a malicious attempt to deceive and defraud.

<comment><USER22> It's not just a misunderstanding of copyright itself, but also a misunderstanding of what copyright registration means. US copyrights have been automatic since 1978: [https://www.copyright.gov/help/faq/faq- general.html#register](https://www.copyright.gov/help/faq/faq- general.html#register). You get it the moment you write something down on paper, or otherwise "fix [it] in a tangible medium." He is probably talking about copyright registration, which is a requirement before suing someone in the US for infringement. It's just a rubber stamp.

</comment></comment></comment><comment><USER23> So his claim is entirely based on the fact he copyrighted a program he called "email" and the usual redefinition of terms and playing the victim?

And his father is a black belt in ikebana and will beat us up if we don't agree, I guess...

<comment><USER24> Correct. And that despite not having anything to do with what we now call email, he copyrighted his program. So despite people using the term before his program, owning the copyright was more powerful.

He needs to lose badly and soon, before those people die and can't testify against him.

</comment></comment><comment><USER25> Wow, this is just like that dude running around calling himself the inventor of the chromebook.

</comment><comment><USER26> It seems that he is using the tactic of racial conspiracy to muddy the waters. When you can't win on facts alone, make it about race and conspiracies.

</comment><comment><USER27> Sounds like a scam. Can government prevent such open scams?

</comment><comment><USER28> Wow. Ayyadurai won $750,000 in a lawsuit from by-then-bankrupt Gawker Media. In fact it was billionaire Peter Thiel, who just wanted to ruin Gawker and was behind this result. Duh. What a waste of $750k.

"Denton wrote that "we expected to prevail" in the Ayyadurai and Terrill lawsuits, "but all-out legal war with" billionaire Peter Thiel, who financially backed Harder, was untenable in terms of cost, time and human toll.[37]" . Wikipedia.

</comment><comment><USER29> Another lunatic with an Alex Jones connection.

</comment><comment><USER30> Im assuming he has not watched Mike Judges Silicon Valley.

</comment><comment><USER31> I rarely comment, but the article, until the last page was great. It felt very bait and switch -- pull you along with the story, then, oh yeah... you could vote for this guy, and be just as terrible as he is.

While the article is very biased against him, which I would usually feel is fine (and without further researching the topic, I'd agree he seems pretty terrible), but if there's a possibility that this is politically motivated let people know up front. Why not add his political affiliation early in the first page, instead of waiting until the very the end?

And to be clear, I don't believe that he "invented email."

<comment><USER32> His political affiliation isn't terribly relevant. The problem is that he wants to rewrite history and claim fame that's not his. He may want to run as a Republican now, but he's also convinced Noam Chomsky to support his claim. Politics isn't the point. Here's a guy who's very effective at scamming people into believing his lies and supporting his false claims.

</comment></comment><comment><USER33> Shiva is a great guy. I strongly encourage readers to watch or listen to him actually speak, rather than get that third-hand.

I'm glad that he won against Gawker and am cheering for him to defeat Elizabeth Warren for Senate. He is the kind of smart, wise, and experienced technocrat that we could use in government, with an actual numerical sense and experience staffing teams and making payroll.

<comment><USER5> > _[Ayyadurai] is a great guy_

Great people don't sue news outlets to claim credit for things they say they did decades ago. They sue for royalties, or better yet, shut up and do things. This guy checks all the boxes for a sociopathic fraud.

<comment><USER34> He really comes off as a sociopath if you check his Twitter, where he calls someone a moron, keeps attacking Elizabeth Warren, and treats Alex Jones/Info Wars as a serious media outlet [0]. Also, it's hilarious that he considers himself the target of a racist conspiracy but goes to great lengths to deny that Trump's and Bannon's racist politics. And this is a guy who is running for senate.

[0] [https://twitter.com/va_shiva](https://twitter.com/va_shiva)

<comment><USER33> I have spoken to him at length myself.

If you don't think Infowars is a serious news outlet, maybe you haven't watched them? In about 20 years they have had I think 3 retractions, which a propaganda rag like CNN or the Washington Post has to do _weekly_.

I would wish that HN would have more people who care about primary sources - that is what my academic training taught me. Perhaps if you listened to any of Bannon's speeches rather than malicious rumor and hearsay, you would have a different opinion.

<comment><USER35> They had to do one a month or so ago because they were peddling an insane theory involving yogurt.

<comment><USER36> And pizzagate

[http://www.npr.org/sections/thetwo- way/2017/03/26/521545788/...](http://www.npr.org/sections/thetwo- way/2017/03/26/521545788/conspiracy-theorist-alex-jones-apologizes-for- promoting-pizzagate)</comment></comment></comment></comment></comment></comment>


Draw and save circuits online - <AUTHOR> https://www.circuitlab.com

<comment><USER2> A bit of previous discussion from launch day (2 weeks ago): <http://news.ycombinator.com/item?id=3644160>

We were subsequently covered by Slashdot, Engadget, Hack a Day, EDN,... so we've seen plenty of traffic over the last few days!

A sample of user feedback we've heard: [https://www.circuitlab.com/blog/2012/03/05/t-1-week-a- post-l...](https://www.circuitlab.com/blog/2012/03/05/t-1-week-a-post-launch- thank-you/)

<comment><USER3> can you make the wiring a bit more fluid? and maybe add on some kind of "snap" indication? like if i want to connect two components that aren't in the same x or y axis i can just click on one terminal and then on the other, and the wire will snap in place. but overall, this is a great tool for cranking out a quick circuit diagram. good stuff

</comment></comment><comment><USER4> I remember back when i was learning electronics i used a circuit simulator. One would place circuits on a virtual board, connect up the wires, press play then see a realtime simulation of how the circuit would function including current flow, voltage, etc. It even laid out circuits for you! Really, it was fun to use.

In comparison this fails the fun test.

<comment><USER5> I am also missing the real-time simulation, after seeing Bret Victor's talk and his demo.

[http://www.youtube.com/watch?v=PUv66718DII&feature=playe...](http://www.youtube.com/watch?v=PUv66718DII&feature=player_detailpage#t=1402s)

</comment></comment><comment><USER6> If the circuit editor is launched without cookies enabled, a message is displayed that users have to accept cookies in order to guard against cross- site request forgeries. I didn't get that impression from the Wikipedia article linked from the message. Is the claim disingenuous or am I missing something?

</comment><comment><USER7> Could you add text support? I want to be able to label the in/outputs of the digital logic gates. Great web service, thanks!

</comment><comment><USER8> I would upvote this 700,000 if I could.

I absolutely love the application's idea and the implementation.

</comment><comment><USER9> I wish I knew how to make circuits, because that looks like fun!

</comment><comment><USER10> damn...this is so great....i always wanted this.... i dont need ny tools now....:D

</comment><comment><USER11> I'd rather build it and see - it's more fun.</comment>


Creating Really Teensy ELF Executables for Linux - <AUTHOR> http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html <comment><USER2> This article is surprisingly better (and longer ;) than I expected, but it skipped over explaining one important distinction; "ELF" is an executable file format, but "a.out" is more than just a default file name; it's also the name of a totally different executable file format.

Originally, the "a.out" executable format, and hence, the "a.out" file name were due to being the "assembler output" of Ken Thompson's assembler in 1968. Most all UNIX-based systems have moved to using newer ELF format, but there are a few hold-outs still using the older a.out format. As for why ELF formatted executable files are still given the file name "a.out" by default, even when they are not in the "a.out" executable format, it's just a historic artifact (or annoyance) due to compilers and linkers.

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

<comment><USER3> This is the original article that all the other "tiny elf" or "tiny executable" articles are based on. It was written 15 years ago.

</comment></comment><comment><USER4> That's what I loved about DOS com executables. Possibly the smallest program was:

      int 20;

which got translated into CDh 20h (4 bytes!)

<comment><USER5> That's 2 bytes, not 4. A byte goes from 00 to FF.

</comment></comment><comment><USER6> I'm impressed. The author did a lot of mangling to allow the code to be as small as possible. Other than ELF and a.out format, (which is discused by @jcr) I wonder if there are other formats understood by Linux ?

</comment><comment><USER7> Nice. Perhaps have a look at uclibc and busybox... :-)

<comment><USER8> These are not really small anymore. Look for musl libc [1] and toybox [2] instead.

[1]: [http://www.musl-libc.org/](http://www.musl-libc.org/)

[2]: [http://www.landley.net/toybox/](http://www.landley.net/toybox/)

</comment></comment><comment><USER9> I was hoping that the final size would be 42 :)

</comment><comment><USER10> Care to update for 64 bits?

<comment><USER11> Here are the uncommented changes I made to each stage:

[https://github.com/abraithwaite/teensy](https://github.com/abraithwaite/teensy)

</comment></comment><comment><USER12> [https://news.ycombinator.com/item?id=8642734](https://news.ycombinator.com/item?id=8642734)</comment>