Is Scheme Faster than C? - <AUTHOR> http://www.cs.indiana.edu/~jsobel/c455-c511.updated.txt <comment><USER2> This makes me so nostalgic. Ah, to be back in school when the hardest thing I had to do was math, and I didn't have to worry about anyone wanting to modify my code or coming to me saying, "Hey, dkarl, we just signed a huge contract, and part of what we promised is that a 2 in the hundreds place of the left operand will be treated as a 3 when we do multiplication for this customer. What base? I don't know, rebel base alpha. I'm just the project manager. The product manager answers those kinds of questions. And make sure it's configurable, because the customer has been going back and forth a bit about the specifics, and we don't think we'll be able to nail them down before we deploy."

<comment><USER3> I would hope that your work is a _healthy_ mix of the kind of elegant design thinking covered in the post and real world pragmatics. Also your example problem doesn't even sound particularly bothersome to implement in Scheme.

<comment><USER2> It wouldn't be hard to implement in Scheme -- I'd actually love to work in Scheme -- but if another developer asked me how to update the code for a second customer and I replied, "Start with this Scheme source code, make your changes, then apply this series of transformations and translate the resulting code into C," I would get doused in gasoline and set on fire.

<comment><USER4> Of course you would be. That's because everything after "make your changes" is supposed to be applied by the Scheme compiler, possibly with assistance or annotations from the programmer (e.g. macro expansion, tail recursion elimination). Doing it manually is the Wrong Way (TM) unless you're in a PL/compilers class.

<comment><USER5> Did you read the story that this whole discussion is about? Everything after "make your changes" was the procedure that was followed in the story. The final result was a C program that was substantially faster than anything which the Scheme compiler could ever produce.

No Scheme compiler would be likely to do those transformations for you.

<comment><USER6> Read the Orbit thesis.

<comment><USER7> Orbit was ground-breaking, but it's Stalin that's _the_ most powerful optimizing compiler for Scheme, or perhaps any other language.

<comment><USER6> Sure but it's mentioned in-thread already, while Orbit explains the CPS and others well.

<comment><USER7> Yep. I responded before reading the whole thread.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> Neat story - he was systematically applying optimizations that compilers could do if they had full knowledge of the semantics of the program. By transforming the program into continuation-passing style, he performed a very similar step that modern compilers do when they transform a program into static single assignment, _then_ optimize the program. For a full treatment of what I mean, see A Correspondence between Continuation Passing Style and Static Single Assignment: [http://www.cs.purdue.edu/homes/suresh/502-Fall2008/papers/ke...](http://www.cs.purdue.edu/homes/suresh/502-Fall2008/papers/kelsey- ssa-cps.pdf)

</comment><comment><USER9> _Out of a class of about 15 students, only one person beat me (and only barely), and he wrote significant portions of his program directly in Assembly Language. The next fastest after me took nearly twice as long to do the same work.

...A runtime profile of my program revealed that the majority of time was spent in the C routines "malloc" and "free."_

For all of the beginning programmers and most of the student programmers out there: Yes often a fast JIT VM might actually beat your C or get pretty close! If you ever become a good programmer, then you can do much better than the JIT in key situations.

EDIT: There's a self evaluation method here for aspiring C programmers. Start benchmarking your code against the same thing in LuaJIT. You're not "good" until you know how to routinely beat it by a factor approaching 2. And that's necessary, but not sufficient.

<comment><USER10> He does not use a JIT, he translated his code into C by hand.

<comment><USER9> I never said _he_ did. I think it's good to point out there's a lot of beginner C code out there involving significant memory management that's not much better or slower than the best JITs.

EDIT: Added "involving memory management"

EDIT: To students doing C programming: Be honest, now, but have you ever checked?

</comment></comment></comment><comment><USER11> Wish the code was available to take a peek at. Talking about optimizing transformations, the Stalin scheme compiler is quite freakily good at that.It would have been interesting to run this code through Stalin and see what happens.

From the author Je rey Mark Siskind's research statement:

      It uses the results of flow analysis to perform life-time analysis,
      escape analysis, points-to analysis, and must-alias analysis. ...
      It also uses the above analysis to support flow-directed region-based
      storage management, where run-time garbage collection is replaced
      with static allocation and deallocation on a per-abstract-value
      and per-program-point basis. It also performs flow-directed
      lightweight CPS conversion,.. to support extremely efficient first-class continuations.

It is quite remarkable that even without any type annotations Stalin can hold its own against a hand written C and often beat it as well.

<http://en.wikipedia.org/wiki/Stalin_(Scheme_implementation)>

(Has escaped chrismonsantoization)

<comment><USER12> Stalin download doesn't seem to have changed since 2006.

Is "Stalin can hold its own against a hand written C and often beat it" just your paraphrase of wikipedia's quote from a bare assertion in Jeffrey Siskind's Purdue research statement - or due you have some numbers to share?

<comment><USER11> The Sourceforge version might be more updated. But I doubt it will differ by much from what you have, the changes in the version are in the minor numbers.

Numbers circa 2008: take a look at section 6 in ftp://ftp.ecn.purdue.edu/qobi/TR-ECE-08-02.pdf and ftp://ftp.ecn.purdue.edu/qobi/TR-ECE-08-03.pdf These are numbers from StalinGrad. A automatic differentiation engine written in Stalin (hence the Grad).

Also the thread [http://groups.google.com/group/comp.lang.lisp/browse_frm/thr...](http://groups.google.com/group/comp.lang.lisp/browse_frm/thread/ee481e354a7c8ccc/9801ba2edd839daf?hl=en&lnk=gst&q=integrate-1D#9801ba2edd839daf) that got me interested in Stalin in the first place.

With all that said, any reason to distrust research statements ? Those are usually taken seriously in academia. One only jeopardizes his position by bluffing.

</comment></comment></comment><comment><USER6> Really, what he's saying is that it saves a lot of time to prototype code in a _convenient_ language, and then translate parts to optimized code in a _fast_ language (where necessary), once good algorithms have been worked out. Many fast languages get their speed by trading away flexibility.

This is not specific to Scheme, though - while it's a good prototyping language, so are Lua (my favorite, and LuaJIT reduces the need for C), awk, Python, etc.

Knowing how to implement the prototyping languages' constructs efficiently in the "fast" language is important, though.

Of course, "fast" and "convenient" can also be the same language, such as prototyping in Common Lisp and then adding declarations. OCaml is also quite good.

<comment><USER2> He did say the semantics-preserving transformations were easier in Scheme:

 _This is where Scheme really won. Because of its extremely algorithmic--- almost mathematical---nature, Scheme can be easily manipulated in a sort of algebraic style._

</comment></comment><comment><USER13> The conclusion is the most inspiring part of this:

> Real efficiency comes from elegant solutions, not optimized programs. > Optimization is always just a few correctness-preserving transformations > away

<comment><USER14> Unless you define "elegant" as "conceptually optimized" or something like that, this is just nonsense. There are many cases where a superior algorithm will run circles around an elegant but not so efficient algorithm -- and no number of "correctness-preserving transformations" will bridge that gap.

<comment><USER15> I believe that's the point. I can imagine though there are instances where it is easier to code up a better algorithmic solution in higher level languages than it would be in C. Lazy data fetches would be a prime example. Obviously, it can be done in C like any Turing complete language. However, it's easier in something higher level.

<comment><USER14> Wouldn't that be much better expressed as something like "It's easier to do elegant optimizations in a high-level language", then? Finding the best algorithm to use is almost always the single best optimization you can do to a piece of code. And that certainly is easier to do in a higher level language.

On the other hand, the original quote seems to regard elegance and optimization as opposed. (And really gloss over the step of porting your elegant routines by hand to C!)

</comment></comment></comment></comment><comment><USER16> _Is Scheme Hand-Compiled Into A Single Main Routine in C Faster than C?_

Fixed that title for you.

</comment><comment><USER17> Scheme employs tail-recursion optimizations. An unoptimized recursive algorithm would indeed run faster in Scheme.

But I'd be interested in how the port to C actually happened. That is, if he translated the functional aspects of the algorithm, or if he just copied intermediary C code that a Scheme compiler can generate.

<comment><USER18> I had the fortune of working with Jonathan Sobel at IU and hearing this story.

We were taught to translate a recursive program to continuation passing style in a way that many variables could be translated to registers directly. If I remember correctly, Jonathan translated this from Scheme to C and just compiled that result.

<comment><USER19> I'd be interested in the actual application of that. Scheme and Lisp don't seem to lend themselves to a powerful object oriented design very much. Since that is IMO the highest order task in programming, I have never been that interested in them.

I guess if you only write number crunching code, then yeah. But if you write an app (web or client) - what good is Lisp?

<comment><USER20> Clearly, you have never been exposed to CLOS, the most powerful object oriented system of our time.

<http://en.wikipedia.org/wiki/Common_Lisp_Object_System>

There is also Arc, the language Paul Graham and Robert Morris wrote for the web. This site is written it it.

<http://arclanguage.org/>

<comment><USER9> Hint: If you're stuck for something to publish and present at an OO conference, just reimplement something done in previous decades with CLOS/Lisp or Smalltalk in a newer 'hipper' language. This is only a half-joke. This actually works!

<comment><USER21> And then denigrate Lisp for all the features you haven't stolen from it yet.

</comment></comment></comment></comment></comment></comment><comment><USER22> Every language should be faster* than C in some way otherwise no-one would use it.

Scripting languages are faster to code in.

Fortran is faster at complex matrix maths.

Lisp is faster to code in _and_ faster to run for a large set of computing problems.

C wins the trade-of of speed-to-create vs speed-of-execution for most system programming tasks but usually when compared to bare assembly code. But there are a large number of problems that it is horribly unsuited for. Hence we end up with c-programs with accidentally embedded lisp implementations.

* - where faster can also mean faster to code to a secure standard.

<comment><USER23> > Hence we end up with c-programs with accidentally embedded lisp > implementations.

See Greenspun's Tenth Rule: Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.

And of course the famous corollary: Including Common Lisp.

<http://en.wikipedia.org/wiki/Greenspun%27s_Tenth_Rule>

<comment><USER6> XML is proof that Greenspun's Tenth Rule applies to data, as well. :)

<comment><USER21> I've said this before, but JSON is actually more like sexprs than XML is.

<comment><USER6> Agreed, but XML does a far better job of re-implementing sexprs _badly_.

</comment></comment></comment></comment></comment><comment><USER24> I thought this was going to be another one of those benchmarking articles, but it was really a great exercise in how lateral thinking can produce clean solutions.

The more I hear about the Lisp family of languages, the more I want to give them a try sometime...

<comment><USER19> Neat as this may be - optimizing a trivial algorithm is not something you'll encounter out of school.

The lesson learned is a good one though: Good design always wins. In real life, that's obvious almost immediately, yet the concept seems to elude the vast majority of programmers.

In reality the difficulty in programming is creating powerful, flexible designs. If you can look at your own code a year later and say "wow - this is good" - then you win.

<comment><USER25>
      > ... optimizing a trivial algorithm is not
      > something you'll encounter out of school.

Sometimes it is. For me, it happens a few times a year.

More importantly, the techniques, methods and mind set are critical daily in the code I and my employees write.

But we aren't doing web development.

<comment><USER26> I agree.

There's also another thing that happens, which is to look at a big mess of twisty code and think about it, finally seeing that it should have been done as a simple algorithm. Then you get to delete a lot of code and replace it with a small bit of clear code.

There are many more ways the simple things learned in school help in the real world.

</comment></comment></comment></comment><comment><USER27> FYI, this approach, in general and completely automated, is taken by the Spiral Project DSP generator: <http://spiral.net/index.html>

DSP transformations are represented in a Scheme-like language. The optimizer performs operations on this language then compiles to C code.

I worked on the Spiral project on things tangental to the DSP generator, but wrote my own optimizing DSP compiler based on Spiral technology for class in university.

</comment><comment><USER28> I think this is rather useless and pointless.

My daily work for the last few weeks has been optimizing speedwise our pipeline.

Usually what we do is OpenMP (openmp.org) the code where it's possible (we deal with lots of DXT compression, mipmaps, normal map calucations, etc.)

Then where possible decrease the floating point accuracy to point where it's acceptable, and use SSE2 through some veclib.

It's all in C (C++) and the difference can be 1:10 and even more.

All I'm saying is this - you sit down, find your bottleneck and do something about it. But simply saying this is faster than this is pointless.

That to be said the language shootout is how it should be done - you have people using (trying at least) to use the same algorithms in different languages by allowing certain language (implementation) optimizations, or available libs.

Yes, I've seen LuaJIT, and LispWorks (which I love dearly) producing better code than C++, especially when comes to std::string put in stdext::hash_map<> simply because it's just harder to intern stuff in C++ (unless you do it manually). In Lua every string is interned, and in LispWorks (and in Common Lisp in general) as long as it's symbol it can be interned.

<comment><USER12> Hint - say "benchmarks game" to show you've checked the website sometime in the last couple of years ;-)

</comment></comment><comment><USER29> I was in this program at IU, and later worked with Jonathan at Cisco-- and I actually remember this exact story being told by one of my AI's in class.

Guess it's become part of IU lore :-)

<comment><USER30> Seems to be that way. Never worked with Jonathan but I did do my undergrad at IU. Both 311 as well as 422 (? compilers) were a ton of fun. I may still have the code for scheme to C lying around somewhere... If you are a programmer and have never used scheme I'd recommend having fun one weekend with it.

</comment></comment><comment><USER31> The kind of hand transformation from a Lisp-like language into C/asm is described very well in Dan Friedman (2001)'s talk, _The Role of the Study of Programming Languages in the Education of a Programmer_ <http://www.cs.indiana.edu/hyplan/dfried/mex.ps>

Friedman is at Indiana, so the similarity in the transformation is no surprise. I'm surprised the arty doesn't mention Friedman.

</comment><comment><USER32> "This is where Scheme really won. Because of its extremely algorithmic--- almost mathematical---nature, Scheme can be easily manipulated in a sort of algebraic style. One can follow a series of rewrite rules (just about blindly) to transform a program into another form with some desirable property. This was exactly what I needed."

Can anyone explain this with an example? I have been pondering what he meant with this for a long time.

<comment><USER33> " 'One can follow a series of rewrite rules (just about blindly) to transform a program into another form with some desirable property. This was exactly what I needed.'

Can anyone explain this with an example? I have been pondering what he meant with this for a long time. "

see the cps-transform rewrite rules in "Essentials of Programming Languages". The first edition has the densest and most extensive explanation. The third edition has the clearest, but a _relatively_ attenuated exposition.

<comment><USER32> if this proves to be true, I'm most grateful for your tips. Maybe you could be even more specific providing a page number/chapter?

[http://books.google.com/books?id=GtPoyremy4EC&printsec=f...](http://books.google.com/books?id=GtPoyremy4EC&printsec=frontcover&dq=essentials+of+programming+languages&hl=en&src=bmrr&ei=a_ZgTcjFH8XxsgaD78y1CA&sa=X&oi=book_result&ct=result&resnum=1&ved=0CCwQ6AEwAA#v=onepage&q&f=false)

</comment></comment></comment><comment><USER34> The use of gotos rather than function calls is interesting... man that's gutsy programming! I'd never thought to do that when considering optimizations.

<comment><USER31> If you were to hand transform your high-level code into assembler, you would have little choice.</comment></comment>


Show HN: Guff, all the SASS framework you'll ever need - <AUTHOR> http://kenwheeler.github.io/guff/

<comment><AUTHOR> If anyone has any suggestions or recommendations, I'm all ears. This is brand new, hope I covered everything.

</comment><comment><USER2> Similar projects you probably know about already:

[http://bourbon.io](http://bourbon.io) [http://neat.bourbon.io](http://neat.bourbon.io)

They appear to be available through both Rubygems and Bower.

<comment><AUTHOR> All the bourbon/compass/etc stuff is great, but it's so full featured that it's too much at times. With this, I aimed to take the best stuff, the shit I actually use day to day, and make a super lightweight and easy to wrap your head around framework.</comment></comment>


What does Ruby have that Python doesn't, and vice versa? - <AUTHOR> http://stackoverflow.com/questions/1113611/what-does-ruby-have-that-python-doesnt-and-vice-versa

<comment><USER3> A subjective rant: I tried to get into Python about 5 years ago - <USER2> through 'Dive Into Python' and used it for several projects.

Once I tried Ruby for a few projects, I never looked back: I now only use Python when I need a library that is only available for Python.

So, try both for a few small projects and take your pick.

BTW, I think that being proficient in just one scripting language is enough. I split my work time between Ruby, Common Lisp, and Java - perhaps not an optimum choice, but flexible enough for most problems that I need to solve.</comment>


How Vodafone-Subsidiary Cable and Wireless Aided GCHQ's Spying Efforts - <AUTHOR> http://international.sueddeutsche.de/post/103543418200/snowden-leaks-how-vodafone-subsidiary-cable <comment><USER2> All this knowledge and unfortunately, zero sign of any real policy change.</comment>


Ask HN: Is There a Need for a Test Case Automation in Regression Testing? - <AUTHOR> In the past, I've developed tools for markets/problems that don't exist and wasted lots and lots of time.  I'm pretty desperate to get some honest feedback from testers, QA people and engineers.
Here it is:
The point is to Save you time.  This Chrome Plugin automates the Test AND the construction of the test.  Click each div on a page to create a new test point.  No coding necessary.
Just for context, here's the landing page: https://swif.club/?s=hn2
From there you can sign up and install the plugin.  Perhaps, try using it on wikipedia.org: it generally works there.
Any and all feedback (positive OR negative) would be welcome! <comment><USER2> Well, there's definitely a market for this kind of thing - here's a summary of some options in the space, prompted by the announcement that Selenium IDE will stop working in future Firefox versions.

[https://medium.com/@briananderson2209/in-search-of-the- selen...](https://medium.com/@briananderson2209/in-search-of-the-selenium- ides-successor-33bc7eaefe7f)</comment>


Optimize for now! - <AUTHOR> http://www.37signals.com/svn/posts/896-optimize-for-now <comment><USER2> _We started on a single server for everything when Basecamp was first launched. There was no point in growing a huge farm of machines if the thing was going to flop anyway._

It's this sort of thing that drives me nuts about the 37signals' blog. Let me rephrase it:

 _When I started my trucking company, it was a one-man venture. So, I only bought one truck, since that's the most I could drive myself at the same time. Buying a whole fleet of trucks would not have made sense._

Just because advice is correct doesn't mean it's useful. Something can be very correct and still very stupid.

<comment><USER3> What the advice misses is that even at an early stage, you need decisions in place that allow scaling. For example, if you buy 1 truck for your one-person shipping company, you can move 1 container at a time. Adding a second truck lets you move 2 containers. 37signals is smart--they built their software so that it could grow to 2 servers--but they left that out of their advice. There must be a path from simple to complex.

<comment><USER4> > they built their software so that it could grow to 2 servers

This is somewhat debatable -- all software _can_ be grown to multiple nodes, it's more a question of how much work is involved.

They built their software to meet needs. Then, later on, they worried about the other stuff. That's a good way to determine whether the other stuff is _worth_ worrying about.

See also the WebVan analogy for an example of the converse.

</comment></comment></comment><comment><USER5> I feel like this particular piece of advice should be post-fixed with "... but don't be stupid!"

In particular, keep an eye out for n^2 loops and the like. Watch for shard- jumping queries. Easy stuff like that can go a long way.

<comment><USER6> And keep a list of potential problems that won't scale.

'Hey we serialize a list of ALL users for this...that won't scale!'

<comment><USER4> Yes it will, if you break it up onto multiple shared memcached servers. Or re- think how you're serializing it. Or why. Or use a distributed hash table (although if you own all the machines, memcached is easier and faster to ramp up).

Basically, all of these exceptions people are cleverly bringing up are exactly the sorts of things that get in the way. Do everything well enough to get a usable product. Throw it out in front of customers. If you need to make it better because people are beating down the door, go for it; that's a much better problem to have than a scalable but unused resource soaking up your operational budget.

</comment></comment></comment><comment><USER7> I couldn't agree more. Needing to scale up is a GOOD problem to have. Many startups don't make it to that stage. Plan for the future (ie have room, and ways to get money for more servers), but don't live in the future (don't grow a server farm from day 1).

</comment><comment><USER8> Good thing 37signals.com isn't in the bridge building business.

</comment><comment><USER9> This seems like good advice, but to me it would be interesting to read about what can be done to minimize growing pains.

If a developer only focuses on the immediate future, it seems like they could be caught off guard in the case of rapid growth. This might leave them scrambling while their app crawls and users become upset (or decide to use something else) because things are unresponsive. Twitter comes to mind here.

</comment><comment><USER10> Just today I was talking to a team lead here about abstracting away from a truly terribly proprietary template language for a CMS. His first thought was "that's a good idea, but we'd have to make sure it would be easy to move that code to a different CMS in the future." There's just no way to make that happen, so the idea probably won't get off the ground because management wants things future-proof.

I see where they are coming from, but it means everybody suffers instead of just enjoying improvements in the present.

</comment><comment><USER11> Smart strategy, build what you while you can and scale as you need. (this falls inline with PG's launch early and often and also the cost of a startup is low with this idea)

</comment><comment><USER12> Good post. On my personal project I am always tempted to add pointless scaling/generalizing stuff. Shades of "worse is better"...

</comment><comment><USER13> On my project I put a lot of effort into scalability: the typical use case involves no running code on the server, only static content. With just tens of users so far, in retrospect I should have given more work to my PR skills.</comment>


Fast geodesic measurements in Go - <AUTHOR> https://github.com/JamesMilnerUK/cheap-ruler-go <comment><USER2> The usual way to do this is to convert latitude and longitude to ECEF (Earth centered, Earth fixed) coordinates.[1] This includes the corrections for the Earth being slightly pear-shaped. Then, given 3-element vectors for each point, compute the great circle distance between those points based on simple spherical geometry. This works everywhere, including at the poles.

The FCC formula is based on the old V and H coordinate system that the Bell System used for long distance in the electromechanical era. That was for North America.

There's tons of code out there for this, because every GPS device with a map has to do these calculations.

[1] [https://www.mathworks.com/matlabcentral/fileexchange/7942-co...](https://www.mathworks.com/matlabcentral/fileexchange/7942-covert- lat--lon--alt-to-ecef- cartesian?focused=5062966&tab=function&requestedDomain=www.mathworks.com)

<comment><USER3> The standard LLA to ECEF function uses the WGS84 reference ellipsioid, not pear shaped

</comment></comment><comment><USER4> Why is the distance function not implemented with Haversine's methods?

[https://github.com/JamesMilnerUK/cheap-ruler- go/blob/master/...](https://github.com/JamesMilnerUK/cheap-ruler- go/blob/master/cheapruler.go#L74)

Is there a reason to do this with looping?

<comment><USER5> The basic answer is speed and accuracy. The approximations implemented here are within 0.1% of the Vincenty method for distances under 500km, which is useful in all kinds of situations. The Haversine formula works for spheres, so it's not as accurate as the Vincenty method for the Earth (a flattened sphere), and it uses more trig functions than this approximation, so it's slower and less accurate for lon/lat distance calculations.

I work with Vlad (the author of the original Javascript [https://github.com/mapbox/cheap-ruler](https://github.com/mapbox/cheap- ruler)). At the time it was created, we were basically just looking for the fastest method to get accurate distance calculations on lon/lat values within "short distances". Vlad found that this approximation fitted our needs well (i.e. the types of distances we typically needed to calculate distances for), and performed the best.

For really accurate measurements, you typically need to use a projection system that's targeted at the area you're measuring in. The earth isn't even a perfect flattened sphere, it's covered in lumps and bumps, so if you need _really_ accurate measurements, you need to use one designed for the bump you're measuring on. Some great illustrations here: [http://www.icsm.gov.au/mapping/datums1.html](http://www.icsm.gov.au/mapping/datums1.html)

</comment></comment><comment><USER6> Implementation of Helmert transformation in Go [https://github.com/the42/cartconvert/blob/master/cartconvert...](https://github.com/the42/cartconvert/blob/master/cartconvert/cartconvert.go#L1009)

</comment><comment><USER7> Transverse Mercator with an accuracy of a few nanometers

[https://link.springer.com/article/10.1007%2Fs00190-011-0445-...](https://link.springer.com/article/10.1007%2Fs00190-011-0445-3)

</comment><comment><USER8> It would be great if there were some usage examples in the readme or the godocs.

<comment><AUTHOR> I'm looking into doing this at the moment. Also would like to add some benchmarks. I've added an example for distance measurement in the godocs and in the README.</comment></comment>


Carberp Source Code Leaked - <AUTHOR> https://threatpost.com/carberp-source-code-leaked/ <comment><USER2> Bootkit alone is probably worth $40k - [https://github.com/hzeroo/Carberp/tree/master/source%20-%20a...](https://github.com/hzeroo/Carberp/tree/master/source%20-%20absource/pro/all%20source/bootkit)

The code looks better than a lot of commercial kernel code of comparable complexity, and it _is_ complex. From readme -

      --

_Bootkit is a driver for loading other drivers at the OS boot time. Driver is loaded before the initialization of NT kernel (i.e. before the start of the PatchGuard) and it can patch arbitrary kernel code. The driver gets launched before every other drivers, including the boot-time ones, and it can monitor and control their loading. No digital signature is required.

Supported Windows versions - from XP to W8 inclusively.

Supported platforms - x86 and amd64.

Boot-loader works with all types of NTFS partitions.

The code is metamorphic, it consists of several blocks that are randomly rearranged with each build. The IPL (initial loader) code is encrypted and it is incrementally decrypted during the execution. Considered together, this means that each build of the bootkit is binary unique. The driver is also encrypted when stored on the disk and it is decrypted by IPL upon loading._

      --

All in all, this is quite a leak. Very few people can code something like this and it's a unique chance to peek at and learn from their work.

<comment><USER3> >code looks better than a lot of commercial kernel code

Sounds like we need another of Fabien Sanglard's source code reviews:) Normally I'd stay away from this sort of thing, but if it's a good as people say, I might have to check it out myself.

</comment></comment><comment><USER4> I don't understand how people comprehend this shit. Not only is it malicious, it's absolutely hideous.

<comment><USER5> Shitty coders with shitty morals write shitty software for shitty people

<comment><USER6> It might not read quite like the poetry, but this is definitely not _shitty_ code.

Of course, I agree with you completely wrt their morality.

</comment></comment></comment><comment><USER7> Out of curiosity, where could one actually obtain this source code?

<comment><AUTHOR> Here [https://github.com/hzeroo/Carberp](https://github.com/hzeroo/Carberp)

</comment></comment><comment><USER8> Some times I feel like the world I live in is from a science fiction novel.

<comment><USER9> I'm sure all the tropes exist today in some form or another (and they needn't be products of the new millenium, either - I've been seeing reportage from Naipaul's cramped Bombay well since the 70s, wrought out of an incredible amount of tiering and complete alienation between the tiers) but we consider them individual failures of society, and god knows if we'll ever suspend the ideals from our rhetoric in order to assemble the full enchilada.

</comment></comment><comment><USER10> D*mmit. Guess I finally should break down and burn a linux bootdisk for banking.

<comment><USER11> Ahhh, but what system can you trust to burn the linux boot CD on?

<comment><USER12> Not to mention by the time you burned it it would be well out of date (security patches). If you're going to go that route you'd be better off buying a USB stick with a write-lock (Kanguru sells some).

<comment><USER13> Kanguru has some really nice thumb drives. I own two and would recommend them to anyone. Keep in mind, you can also store private keys on them.

<comment><USER14> > you can also store private keys on them

As regular files (e.g. `cp ~/.gnupg/secring.gpg /media/kanguru/`) or can you somehow import them such as with a smart card?

I carry multiple devices at the moment but it would be nice to consolidate.

<comment><USER13> Only as regular files, but with the write lock you can be sure that they don't get deleted.

</comment></comment></comment></comment></comment></comment><comment><USER15> $40,000 dollars sounds cheap

<comment><USER16> Really? How many hours do you think it'd take to write something like this?

<comment><AUTHOR> botnets make that much everyday

<comment><USER17> Assuming that, you'd think the author of this codebase would have done some sort of calculation on expected daily return from renting a botnet created via this software, and priced it accordingly. There is a calculation similar to what I described to determine what a successful poker bot is worth.

Otherwise it would make more sense to just run it themselves -- although that would of course expose them to [more] legal risk. Reminds me of bitcoin mining -- can you make more money selling ASIC miners or just mining BTC with the ones that you've built?

<comment><USER15> Probably stolen software that requires work to deploy.

</comment></comment></comment></comment></comment><comment><USER18> What is the legality of selling this as opposed to using it? I assume it's legal?

</comment><comment><USER19> Does it go around W8 protected boot? From what I understand it cannot.

But how it goes around the signature requirement of drivers is very clever.</comment>


The Top Passcodes You Should Never Use On Your iPhone - <AUTHOR> http://nakedsecurity.sophos.com/2011/06/14/the-top-10-passcodes-you-should-never-use-on-your-iphone/

<comment><USER2> Good article here about what makes for a really good password with lots of analysis and stats - [http://www.troyhunt.com/2011/06/brief-sony-password- analysis...](http://www.troyhunt.com/2011/06/brief-sony-password- analysis.html)</comment>


Markdeep – plain text documents with diagrams, equations, and Markdown syntax - <AUTHOR> https://casual-effects.com/markdeep/ <comment><USER2> If I need graphic charts/diagrams, I've already passed the markdown stage. There's absolutely no workflow I can think of that is improved by my sitting there and trying to ASCII Art my way into a diagram. Does anyone go, hey, you know what would make my note-taking or web design faster and easier? Spending 20 minutes making an ascii art diagram instead of slapping the same three figures out in powerpoint in 20 seconds.

I love markdown. It's an elegant tool for many situations. My own workflow depends on using Kiwi and Noteplan on my phone with a common dropbox directory for their files, which is a project directory for Sublime on my notebook and desktop. All of my organization is a centralized set of markdown'd text documents, be it my calendar or my knowledge base, sync'd across all of my devices and super-easily edited, searched, or converted to web pages.

But there is a point where using a simple and elegant tool stops being simple and elegant - it can only be tortured so far outside its intended use-case before it stops being useful.

<comment><USER3> I kind of want the opposite of this: A GUI tool I can draw some diagram stuff out in that renders down to ASCII art.

Bonus points if it renders to Markdeep (or an equivalent) to be re-rendered as SVGs or whatever later on.

Edit: Here we go - [http://asciiflow.com/](http://asciiflow.com/)

<comment><USER4> There's also [https://monodraw.helftone.com](https://monodraw.helftone.com) that lets you draw directly in ASCII.

<comment><USER5> Well actually that's more like Unicode Art ;)

</comment></comment></comment></comment><comment><USER6> Anybody remeber the dos version of Wordperfect 5 or 5.5? It had a mode, AFAIK triggered by pressing F11 or was it F12 where every formatting operation like inserting a new page, bold or italics was displayed as a control sequence. Wordperfect didn't care if you five times marked a text as bold and required you to "unbold" five times to continue writing in regular font.

I used to be a wizzard operating in this mode and many of my school-mates reached out for me to get their homework assignment properly formatted.

Somehow this WP5.5 format reminds me of that Markdown extension. Thankfully markdown is much richer in semantics.

<comment><USER7> My mother published 5 books with WordPerfect and adamantly refused to learn any desktop publishing system that didn't have Reveal Codes.

When she says she doesn't understand what I do for a living, I tell her that I work with Reveal Codes, all day. It's more right than wrong.

</comment></comment><comment><USER8> I don't get why we need these Markdown "flavors". Most Markdown renderers allow you to pick and choose different extensions, and graphs have been possible in Markdown for a long time with things like Mermaid, which I think does graphs a lot better than this time consuming ASCII-art format.

<comment><USER7> I'm sure you know what you mean by the difference between Markdown "flavors" (bad, don't need) and Markdown renderers that let you pick and choose different extensions (good, more of that please).

But, I don't.

<comment><USER9> A flavor is a slightly different syntax, a renderer is the software that outputs format x from markdown. So flavor A can only be rendered by renderer A, but vanilla markdown can be rendered by all renderers. Different renderers can produce different output based on the options you give them, though

<comment><USER7> Sure, and Markdeep handles vanilla Markdown just fine. It also offers some extensions, which can't be standard by definition. I don't see a problem with that, and I definitely don't understand the distinction the grandparent was trying to make.

</comment></comment></comment></comment><comment><USER10> I've been using [https://github.com/rust-lang/mdBook](https://github.com/rust- lang/mdBook) with plugins: [https://github.com/dylanowen/mdbook- graphviz](https://github.com/dylanowen/mdbook-graphviz) the plugins are all done via stdio so any language works

</comment><comment><USER11> There already is support for this (and more) in man pages.

[https://www.troff.org/prog.html#dformat](https://www.troff.org/prog.html#dformat)

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

      $ <<EOF nroff -p | col -b
      > .PS
      > lineht = lineht / 2
      >
      > box "\fIletter.tr\fP"
      > arrow
      > circle "tbl"
      > arrow
      > Eqn: circle "eqn"
      > arrow
      > Troff: circle "troff"
      > arc cw
      > line down
      > arc cw
      > left
      > arrow
      > circle "grops"
      > arrow
      > box "\fIletter.ps\fP"
      >
      > up
      > line <- from Troff.n
      > arc
      > line
      > box "\fItmac.m\fP"
      > .PE
      >
                                 ──────
                           tmac.m
                                         │

      letter.tr──── tbl ───── eqn ─────troff
                                              │

                             ─────     ─────
                    letter.ps    grops

</comment><comment><USER12> The implementation is clever, but. But. Does it do the one damn thing that no other MarkXXX dialect properly supports: poetry? by which I mean, can you have a text block ("stanza") in which each line is a block that has full formatting (i.e. do not try to pawn me off with a code block!) but in which white space if fully respected (i.e. arbitrary indention is retained), and the ability to right-align an annotation ("line number") is available?

And can you use it to write a play script (see any copy of Hamlet) and/or a film script?

<comment><USER13> If you can get down with emacs, then org mode had you covered: [https://orgmode.org/manual/Paragraphs.html](https://orgmode.org/manual/Paragraphs.html)

<comment><USER14> That doesn't cover you for lines of poetry that are broken across lines of dialog.

</comment></comment></comment><comment><USER15> (Not-so)-fun fact - the source of Markdeep is a single 5000 line long javascript file :( [1] I wanted to integrate it with my Pelican[2] workflow but I'm not touching that with a 10-foot pole.

Why javascript projects tend to be this way?

1 - [https://github.com/morgan3d/markdeep/blob/master/1.09/markde...](https://github.com/morgan3d/markdeep/blob/master/1.09/markdeep.js#L5006)

2 - [https://github.com/getpelican/pelican](https://github.com/getpelican/pelican)

<comment><USER16> You're likely looking at the output of a build process, instead you should have a look in the source code that is likely on github.

<comment><USER15> > you should have a look in the source code that is likely on github

I did and it's not there. The repo in my link _is_ the source, unfortunately.

</comment></comment></comment><comment><USER17> Markdeep is fantastic. I wrote a fairly long article [1] with a lot of code samples, and it was so nice to not worry about formatting. The styling is elegant without having to try :).

[1] [https://glinscott.github.io/lz/](https://glinscott.github.io/lz/)

</comment><comment><USER18> Its seems much more time consuming to do ASCII art than easy programing functions as plot(x, y, …) or box("content",black-line), circle("content",red- fill), "content"arrow(blue-line)"content" and so on.

</comment><comment><USER19> For those who, like me, thought at first glance that this might be deep _learning_ related, there's an explanation near the bottom:

(Bear with me, posting this from mobile)

      The name "markdown" conveys styling in the opposite direction of the "markup" tag syntax. Markdown beautifies text without explicit tags, based on common practices from ASCII e-mail and plain-text documents.

      "Markdeep" is farther "down" from "markdown" on the autostyling and beautification path. Markdeep combines an easy-to-use and browser-friendly packaging with new unique features such as diagrams.

<comment><USER20> Now you've posted this comment using a mobile device, try reading it. Did you find it annoying? Perhaps you could edit it. Thank you.

<comment><USER21> There are better ways of pointing out that the markup used isn't optimal.

</comment></comment></comment><comment><USER22> Another alternative is Perl's "POD" format, even if you're doing something not at all Perl related.

It's a fairly established common format that can be translated into text, HTML, markdown, man pages, etc.

<comment><USER23> Does it support diagrams and equations?

<comment><USER22> Sort of.

=begin HTML

=end HTML

Is pretty broadly supported for output formats that can support it.

</comment></comment></comment><comment><USER24> Neat, but the browser-side rendering for some examples is very slow on my tablet (tens of seconds). At first I assumed the article I was reading was plain text.

It should probably be done server-side with a static site generator.

<comment><USER25> As far as I understand, you can convert Markdeep to static HTML using rasterizer: [https://github.com/romainguy/markdeep- rasterizer](https://github.com/romainguy/markdeep-rasterizer)

</comment></comment><comment><USER26> Check out Markdown Preview Enhanced [https://shd101wyy.github.io/markdown- preview-enhanced/#/](https://shd101wyy.github.io/markdown-preview-enhanced/#/)

This has support for mermaid, slides etc.

</comment><comment><USER27> All these ascii diagramming tools look very promising. I just shudder to edit a diagram, though, and, say, move a box a bit to the left... How are these diagrams not write-once edit-never?

I'd like to be storing design docs and specs in git instead of confluence with draw.io diagrams, but so far haven't found any WYSIWYG round-trip-able integrated-into-intellij tools.

Intellij supports plantuml and doubtless a few other schemes, but do any of them have the equiv of a draw.io editor integrated?

</comment><comment><USER28> I could have sworn there was a renderer for gviz+dotty that did the left half (text ascii plots) but can't seem to DDG it for the life of me. Did I imagine it?

</comment><comment><USER29> See also [https://ivanceras.github.io/svgbob- editor/](https://ivanceras.github.io/svgbob-editor/)

</comment><comment><USER30> Just to add a point of reference, here is one slide set (of many) that I have prepared exclusively using Markdeep. It is full of character-based diagrams, of course. Font: Pragmata Pro.

[https://db.inf.uni- tuebingen.de/staticfiles/publications/com...](https://db.inf.uni- tuebingen.de/staticfiles/publications/compiling-PLSQL-away-slides.pdf)

</comment><comment><USER31> Interesting, yet, I think diagrams require a graphical editor that can be used to author and modify diagrams. I've done plenty if ASCII-art-ish things in embedded/FPGA code (example: timing diagrams. Not something I would consider doing with any regularity. Creating them is painfully time consuming, editing even more so.

BTW, I use MarkdownPad with live side—by-side preview. Love it.

</comment><comment><USER32> Does this index a file tree and create a document table of contents? I'd love to have a public version of g3docs.

<comment><USER33> This is what stops me. Where I work I need an autogenerated table of contents.

<comment><USER32> I need TOC, search, predictable URLs, plain markdown (no templates, no complexity, etc), and all the features of this thing.

</comment></comment></comment><comment><USER34> I've been enjoying using a similar tool called docsify[1], which is a static page that renders markdown files in browser. Basically as self-contained as Markdeep / TeXMe but more flexible.

[1] [https://docsify.js.org/](https://docsify.js.org/)

<comment><USER35> I strongly dislike projects that don't have a visible demo page. How do I even know if I like this without setting everything up first?

<comment><USER34> The link I provided (their documentation page) is the demo page. The source code is at [https://github.com/docsifyjs/docsify/tree/master/docs](https://github.com/docsifyjs/docsify/tree/master/docs) which is a single static index.html that renders a bunch of markdown files.

</comment></comment></comment><comment><USER36> Every such project has to strike a balance, and the balance struck here looks really good to me. Nice job.

</comment><comment><USER37> Most good ASCII diagram generators are mac only. Like monodraw.

I wish there was something of similar quality for linux (or web generated).

No asciiflow doesn't come close.

I have also been trying to use mermaidjs, but asset quality is not close to monodraw

</comment><comment> awinter-py native chart elements in HTML would be useful I think

particularly for applications like wikipedia, where a lot of graphs are pasted images and the original data is gone

styling them and dealing with different chart types will be tricky in the same way every charting tool out there is tricky to use (d3, matplotlib, everything that doesn't restrict to a small set of chart types & push default style)

</comment><comment><USER38> autoreload every 5 seconds (usefull while editing):

      <meta http-equiv="refresh" content="5" >

</comment><comment><USER39> Those ASCII drawings doesn't become more sexy by converting to SVG. Use a SVG editor (or hand code it, it's fairly simple xml). Not only will it be faster then drawing using text, it will also look better.

<comment><USER40> Depending on the svg editor and font's installed, you will get mixed results and not everyone has the time or skill to write correct svg by hand. Pretty quickly you will find out that this approach creates too many problems if you want to collaborate with more than 2 people.

<comment><USER39> yeh, I hate it when people edit my hand written SVG images in a program that makes them 100x larger and unreadable. Where all they had to do was to copy one line of xml and edit coordinates.

</comment></comment></comment><comment><USER41> ASCII seems like a lot. Are there no simpler methods?

<comment><USER8> [https://mermaid-js.github.io/mermaid/#/examples](https://mermaid- js.github.io/mermaid/#/examples)

<comment><USER42> I'm guessing the parent is being down-voted for simply pasting a link with no context.

For the kind of diagrams I typically want to include in a Markdown document (a quick DB ERD, a class diagram, a deployment diagram, state charts, or sequence diagrams), those things can be described in a simple descriptive form and then drawn from that. I don't want to draw.

I think a good tool for that is Mermaid.JS (see the parent link).

However, what I think the Markdeep approach has over the Mermaid approach is that Markdeep fits the general ethos of Markdown much better: start with a readable doc. I would agree that an ASCII art picture is more readable than Mermaid.JS.

It'd be nice to see approaches like Mermaid with a bit more energy into making the markdown behind the diagrams a bit more readable relative to where they are now, so that consumers of the raw markdown have an easier time.

</comment></comment></comment><comment><USER43> Markdeep is a great project and supports a lot of impressive features. However, if you care about conforming to CommonMark, I would request you to try out TeXMe. I initially wrote TeXMe for me and my friends. After a Show HN post about it, it has found a lot of other users too. TeXMe has a very minimal feature set but it cares about CommonMark.

TeXMe on GitHub: [https://github.com/susam/texme](https://github.com/susam/texme)

TeXMe Demo: [https://opendocs.github.io/texme/examples/demo.html](https://opendocs.github.io/texme/examples/demo.html)

Detailed comparison between TeXMe and Markdeep: [https://news.ycombinator.com/item?id=18314175](https://news.ycombinator.com/item?id=18314175)</comment>


Mark Suster on Seattle and how a few key people can transform a community - <AUTHOR> http://techcrunch.com/2011/05/05/a-few-key-people-really-can-make-a-huge-difference/

<comment><USER3> One thing that I think would help is if Seattle startups did more recruiting at UW's CSE department. There's a reason why Seattle startups tend to be founded by ex-MS and -Amazon folks instead of fresh college grads. Very few students here know anything about the local startup scene and end up being gobbled up by big companies (Google, Amazon, Microsoft, Adobe) or moving to greener pastures in the Bay Area. Suster didn't mention connection with local education institutions as one of his 10 points, but I think taking advantage of the stream of talent coming out of UW would go a long way to providing good hires and fostering a greater sense of entrepreneurship among Seattle's young people.

<comment><USER4> In my experience, few good UW CSE graduates want to give up an $80,000+ job offer at a reputable company to work at a startup.

If you're a good engineer, who's also a recent graduate, deciding to do a startup comes at a cost (e.g. reduced salary) -- more so depending on how much debt you've accumulated.

With that said, I'm all for informing students about all the options that are available and allowing them to choose.

Though, I would love to see more engineering graduates of Seattle colleges join startups.

<comment><USER5> My observations as a (somewhat) recent graduate from UW CSE:

Many of the students that wanted to go into startups after graduation instead of a job either had started on some product during school and wanted to see that through to completion, or were of the mind that they could just work for a few years at {Amazon, Google, Microsoft, ...} and then do the risky thing.

There is also a lack of exposure in the curriculum. They are in the middle of re-designing it, but before that only one class let you create a small team, come up with a product, and build it. It was seen as a painful course (it was) and it was also taken by most everyone (including people who couldn't care less, so it was hard to find a group of 4-5 motivated people). I don't recall any hackathons when I was there aside from ACM programming competitions.

<comment><USER6> As a startup person, I had to seek out the opportunities to build a product as part of a small team each quarter at UW CSE. That said, you can do it if you have the motivation.

All the literature about the program mentions that you can optionally take 1 capstone course (which are the big project courses that let you have free creative reign over what you produce). My solution was to just do 3 capstones instead.

I ended up taking the Google/Hadoop project course, distributed systems capstone, and Dan Weld's web services capstone. Each quarter I had 3-4 people on a team, and we were able to build something awesome.

To me it always seemed like a problem of advertising the opportunity within the department, and encouraging big risky projects vs. focused, assigned classwork.

<comment><USER5> Fun that I can recognize you based on your user name, but you probably can't do the same matching for me (its Mikey).

You were actually one of the people I was thinking of when I originally put in an aside about the really motivated people still doing it. I then removed that aside, but I probably should not have. The really motivated people are going to go into startups; they caught the itch at some point and need to scratch it to remain happy.

The subset of people that could go either way (startup or corporate) don't quite have the opportunity to see what a startup would be like at UW. The capstones are good, but for most they are an afterthought to be done in the final quarter or two, when they have most likely landed a job already. Software Engineering (CSE 403) is more about satisfying a requirement than about building something, and that is all most students end up with.

</comment></comment></comment></comment></comment><comment><USER7> Hi All-

I'd like to first introduce myself to everyone. My name is Rishi Talwar and I'm a senior majoring in Informatics at UW. I can't believe this is my first post on HN ever. I guess this topic really resonates with me because I've been passionate about the Seattle startup tech scene since the beginning of freshman year.

I too agree that there needs to be a more emphasis on startups at UW and building software that ultimately help others/create value. From my personal experience I have seen that there are a few people who feel as passionate and inspired about startups. I found this out when I was looking to work with a UW CSE student on a project I had in mind which is now up here: <http://www.fratapps.com/>. I'm not a CS major but I'm still up on different types of technologies. Mainly, I'm a front-end and product guy who loves building stuff. Therefore I was seeking someone who was majoring in cs.

After meeting with multiple students I finally found a friend who was willing to partner up and work with me who was a UW CSE student. But most of these students that I met didn't have any clue about the startup scene in Seattle or didn't care about building anything. This makes me feel that these students majoring in CSE are not passionate about their industry and ultimately get gobbled up by a big-co knowing that they will receive an $80,000+ salary. Maybe its not in their DNA or other factors drive them or its not in their curriculum. But there was definitely an utter lack of fire that is not money driven or by notoriety.

However, this past year I've been happy to know that these students are out there like Mongoose and a few others who has been a tremendous advocate for startups and do it purely out of passion. Also, I have had the honor to meet a freshman business student who is probably way more well connected in the Startup scene then me (twitter:@mikeytom) who has worked on FratApps.com.

When I read blog posts like this from Mark Suster it makes me want to hustle. Maybe there needs to be a startupWeekend for UW like StartupUW. Something that brings all facets of knowledge ie business, engineering, and Informatics or anyone else together on campus.

I appreciate you reading this and would like to hear your thoughts.

Thanks,

Rishi Talwar twitter: @rishtal

</comment><comment><USER4> I may be wrong about this, but I sense that Seattle's startup scene is definitely lacking something important. I can't put my finger on it, but I think it's there.

In my opinion, people here seem pretty risk-averse (ie few want to jump and do a startup, especially people in their twenties).

It kind of seems like people lack the drive to "change the world". Instead, people seem pretty laid back here. It's almost as if they get too comfortable here.

<comment><USER8> No, I don't think that's it (having lived here for 13 years). I think it's just more that people are focused on their own thing, by and large, vs. getting out with a small % of their time and building a community for the greater good.

This 'problem' is so fixable; we just need another catalyst (like what www.GeneralAssemb.ly and New Work City are doing in NYC... and what TechStars did in Boulder, Seattle, Boston and NYC, and many other examples).

We're just a few nudges away, and there's no doubt we'll get there -- we just need to keep focusing on the good stuff, and it's going to happen.

<comment><USER4> >I think it's just more that people are focused on their own thing, by and large, vs. getting out with a small % of their time and building a community for the greater good.

Ya, they're not enough "crazy" people.

I think Seattle needs a big consumer-based (2.0 or 3.0) hit. It needs a Facebook, a Groupon, a Twitter, a Skype, a LinkedIn, an Etsy, a Dropbox.

<comment><USER8> you mean, like an Amazon? or a Starbucks? :-)

or, if you want to be cynical that Amazon's a long time ago... how about like an AWS, or a Kindle? The innovation's here -- we just need to get more commingling going on

it's going to happen -- if you're in town, reach out, please -- would love to have you help

<comment><USER9> Amazon _was_ a long time ago, and AWS/Kindle, while being great products, did not contain really an element of risk the way a scrappy startup does.

I think parent poster has a point - there aren't a lot of recent examples of taking the risk and having it pay off, which may lead to some risk aversion in the community.

<comment><USER10> There are some.

For example Big Fish Games. There's also Tableau Software (although not consumer). Neither large compared to Skype, but both ~$100M revenue companies founded about the time of Skype.

UPDATE: After I wrote this I realized what is different about Seattle than the Bay Area, which is something a previous poster put in parentheticals... (web 2.0/3.0). Look at this list:

Facebook, a Groupon, a Twitter, a Skype, a LinkedIn, an Etsy, a Dropbox

These companies, except maybe Dropbox, are about connecting users together. Not about product. Seattle tends to be more focused on providing product. Is it the case that you are less likely to see a Tableau or Mathematica come out of the Bay Area?

</comment></comment></comment></comment></comment></comment><comment><USER8> I'm fired up by Mark's idea, to much more deeply engage with our local leaders (Amazon, Microsoft, Starbucks, Costco, etc) -- think every geography has these, and presenting it how Mark does makes it so much more compelling. Everyone benefits from these relationships, and really, the Bay Area has crushed it in this area (think growth of Zynga and others on Facebook... the wave of startup involvement with iPhone/iPad Apps store launches...) -- I look forward to helping make that happen, more quickly

<comment><USER11> Dave deserves a ton of credit for all he's doing in the community. I'll offer up my own time as well - if you have ANY questions, i'm happy to help - <USER2> me at @aronchick or email me at aronchick (at) hark.com.

I think getting the patrons moving is a huge win - they all have stacks they want startups using and/or hiring problems. Getting a vibrant startup community makes things much better.

</comment></comment><comment><USER12> Oren Etzioni (<http://www.cs.washington.edu/homes/etzioni/>), a UW professor, and co-founder of the previous startup I worked at in Seattle is also involved with several other new startups including Decide.com that just raised a $6M round.

</comment><comment><USER13> I'm not active in the startup scene, but how could an article like this not mention Seattle Tech Startups? <http://www.seattletechstartups.com/>

<comment><USER11> My only problem with STS is the signal to noise ratio suffers - there's a lot of service providers and other folks on there that drown out the opportunity to make connections. It's a good start, but there are a ton more resources. If you really want to make a difference, or connect, my recommendation is attend one or all of the events here:

<http://www.seattletechcalendar.com/></comment></comment>


60% of male managers now say they're uncomfortable mentoring women - <AUTHOR> https://uk.finance.yahoo.com/news/60-male-managers-now-apos-183717869.html <comment><USER4> I'm still getting over a situation which occurred a month ago, and as it stands I will probably have to leave my job.

I hired a female contractor engineer (in the UK contractors are paid daily, supposed to be easy to hire/fire), my manager is also female. 2 weeks after the engineer started, I knew she wouldn't be able to stay in the team because her work was not good (she was spending a lot of time chatting around, and not producing good quality code). Everybody complains to me that my engineer is not performing well, but my manager makes me keep her. A month later my manager asks for a meeting with me, and says that my contractor has been complaining about micro-management, and that it can be seen as bullying or harassment. Because of that I leave for 2 weeks, and it takes another month to get rid of the contractor.

Learnings: I actually handled the situation very well, but I suffered a lot from the way my manager handled the situation. I have myself managed, hired and fired dozens of people in my career. Yet as soon as it was a girl, the rules of the game completely changed, and it didn't matter who was right or wrong. No matter how much I want to be inclusive and how much I want to give equal rights to everybody, other people (and even females) don't see it that way, and still want to make a distinction between sexes.

<comment><USER5> Referring to her as a girl is not helping your case.

<comment><USER6> What is the opposite of a guy, then?

<comment><USER7> A gal actually.

But considering the nature of using dimunitive forms with regards to women, I would just call her a woman unless we are in very casual company.

</comment></comment></comment></comment><comment><USER8> I can understand the reluctance, up to a point.

I'm male, I've been accused of sexual abuse, and it was thrown out because it became exceedingly clear that it never happened. That was extremely unpleasant to go through, and I'd rather never go through it again.

However, it hasn't had an ongoing effect on my relationships with women, just the one woman. I'm still more than happy to work with my coworkers regardless of their sex, and I'm more than happy to guide anyone who happens to fall under my leadership.

Anybody accused is first judged by the audience. A certain amount of guilt is assumed. That you let yourself into a potentially compromising situation, or you sought out the situation.

And I imagine the higher you are up a managerial chain, the higher the stakes are when you get accused.

There is a human cost, even if "nothing comes of it".

I imagine many of these managers are terrified of the ordeal, of lawyers, they don't know if the company will support them until a judgement is made or kick them to the curb. Of the effect it may have on their family, where they might already have strained relationships with their spouses.

They don't want to potentially risk it, because the power dynamics at play are not in their favour from the outset. The system is biased to find fault, rather than first determine if there was fault.

At the same time, we can't cut the authority of the system in any way - <USER2> people it protects, who genuinely need protection, often are already in a power imbalance of their own.

The fears are justified to an extent, but the simple truth it comes down to is... You're a manager. It is your responsibility to be responsible for those under you. If you can't be, then perhaps a management position is not appropriate for you. Perhaps you need to learn to thrive in a different role. Harsh, certainly, but as the environment stands, ignoring those under your care will only help to promote an environment where women are once again second-class citizens.

<comment><USER9> > The fears are justified to an extent, but the simple truth it comes down to > is... You're a manager. It is your responsibility to be responsible for > those under you.

A lot of people aren't squeaky clean paragons of virtue in everything they do in combination with being secure and confident in their position in the corporate hierarchy. So your suggestion seems to be boiling down to 'figure it out'. What is your fallback if the required behaviors are complicated or hard to figure out? Men-women relationships are fundamentally asymmetrical and unbalanced, and it is the case that most people are poor communicators.

There is an underlying theme to these conversations that everyone should have a basic expectation that they can come to work and enjoy a safe, respectful work environment. That applies to managers just as much as subordinates - <USER3> companies are going to act on accusations then they need very clear policy on how much evidence is needed to put a manager's career at risk.

Unless the state of the field is very clear, it isn't reasonable to tell the managers that their role is to put themselves at risk professionally and work it out as they go. The conversation needs to be more detailed about what, exactly, the managers are expected to do outside the formal frameworks and what level of evidence is needed for them to get into trouble.

<comment><USER8> > A lot of people aren't squeaky clean paragons of virtue in everything they > do in combination with being secure and confident in their position in the > corporate hierarchy.

Absolutely. It's why I tried to humanise the difficulty of the manager's position. Management is hard enough, without being hyper aware of a culture where actions of all kinds can be easily misconstrued. Hell, getting someone a coffee in the morning can be considered dangerous.

> So your suggestion seems to be boiling down to 'figure it out'.

I'm afraid I can't offer a suggestion for someone trying to figure things out.

All I can say is, if it becomes clear to you that you can't figure out, if you can't find the right balance and those fears are stopping you from doing part of your job, specifically leading women...

... Then maybe you shouldn't be, at least until you do work things out. If you're becoming a problem, and can't find any other solution, then it's probably best for everyone, including yourself, that you aren't in that situation anymore.

Don't take the stress, and don't hurt your colleagues.

</comment></comment></comment><comment><USER10> Throwaway for obvious reasons.

I'm not a manager, but I eat lunch/dinner one on one with men far more than I eat lunch/dinner with women, and it's because I try not to be a creep. I try to manage bias and I try to be aware of when I might be doing something for a coworker just because she's female and pretty, and unfortunately that means that when it is actually genuinely appropriate to grab dinner together and talk about our work I second-guess myself. When it does happen, it's usually a more senior coworker taking the initiative first.

No idea how to stop doing it other than time and experience. If you've got tips, throw them out there.

<comment><USER11> Don't make it a dinner or drinks? Just meet and discuss work 1 on 1. That's the surest way to communicate the intentions of the meeting.

Also: do you offer to mentor the "not pretty" females? That statement alone in your post shows a remarkable immaturity in you about women in the workplace.

<comment><USER10> > Don't make it a dinner or drinks? Just meet and discuss work 1 on 1. That's > the surest way to communicate the intentions of the meeting.

The problem here is non-formal social opportunities that aren't meetings and don't take the place of meetings. If there's solid work-related content to discuss then of course you can meet with someone and discuss it, but that's not the same as grabbing dinner with someone when you're both working late and chattering about career-related stuff.

> Also: do you offer to mentor the "not pretty" females? That statement alone > in your post shows a remarkable immaturity in you about women in the > workplace.

Of course I do, I mentor anyone who asks to be mentored. Formal work relationships like mentoring aren't a problem because they're explicitly endorsed by the company and usually facilitated by a manager or initiated by the mentee. I worry that I'm being too condescending as a mentor because of implicit bias, or overcompensating in the direction of not giving enough help, but that's a different problem.

"Am I doing this because she's pretty?" is relevant to the conversation about this article because creepy behavior by men who are attracted to women seems to be a core complaint of professional women and a part of the #MeToo movement, and men are asked to be aware of their own biases and motivations and actions to try to fix this.

<comment><USER12> > The problem here is non-formal social opportunities that aren't meetings and > don't take the place of meetings. If there's solid work-related content to > discuss then of course you can meet with someone and discuss it, but that's > not the same as grabbing dinner with someone when you're both working late > and chattering about career-related stuff.

This is not female-vs-male problem. You will get the same kind of trouble when you smoke with colleagues while there is a non-smoker in the team, or when team member has kids and cannot stay late with you, or when there is a remote coworker, or just some people on the team enjoy watching football and some not.

Yes, you do need to think when and how you discuss work related stuff. And your friendly relations with someone on the team affect team dynamic.

Generalizing it to "working with women is harder" is plain wrong.

</comment></comment></comment></comment><comment><USER13> A female coworker of mine just recently shared with me that she was treated like this in her previous workplace. She felt alienated and as if she was some kind of harlot ready to ruin the lives of her male coworkers. She's happy to not be in that workplace anymore.

<comment><USER14> > harlot, that's the first time I see that used in a sentence outside of > dictionary :D (not a native eng speaker)

</comment></comment><comment><USER12> That's funny how a comment thread in topics like this explodes into its own version of Me Too. The only "slight" difference is that MeToo talks about actual rape which happened, while this version is about "feeling uncomfortable while imagining things".

Nevertheless, I do have a certain empathy for the people who talk about their fears here. I have mine too. Again there is this small difference: while you fear that a certain accusation(which happens how often?) can ruin your carrier, I have a fear that your fear can ruin my carrier with >60% chance. Without possibility for me to get accused explicitly, leaving me no chance to defend myself.

While I'm taking a moment to feel your fears, can I ask you to do the same for mine?

</comment><comment><USER15> It's the same sort of problem with males not wishing to be classified as 'paedophiles' and children.

Once upon a time, I would have tried to help distressed children. These days I walk straight past them. Let the next female do the consoling.

</comment><comment><USER16> This is not surprising. We are in a hyper-sensitive society now where many people are accused and lose their entire career and possibly marriage through the court of public opinion.

As a result, it would be smart of most men in these positions to either not mentor at all or always have someone else in the room. I wouldn't be surprised if companies started having everything recorded at some point.

The real problem is that false accusers won't face many repercussions compared to the accused. Some men accused are even found to have done nothing and it doesn't matter. People still believe they did something.

<comment><USER17> > _I wouldn 't be surprised if companies started having everything recorded at > some point._

More and more I'm seeing managers have their 1:1s in public areas, such as cafeterias or outdoor seating.

<comment><USER18> Where everyone has their noise cancelling headphones on. Sure, it stops the vast majority of physical possibilities, but doesn't do much for verbal.

</comment></comment></comment><comment><USER19> Based on the tenor this has already taken, I'm replying with a throwaway.

I have changed my behavior around women subordinates. It sucks, but that's the reality. At this point I'm as concerned with the appearance of impropriety as I am false accusations. I know who I am and I trust myself. Everyone else? Not so much anymore.

<comment><USER20> Changed how?

</comment></comment><comment><USER21> It's because if you get burnt once, you'll always be on guard. It takes one abuser to change the lives of several people at once.

</comment><comment><USER22> The study is fine. It's reporting some statistics that I find believable. Statistics on men's _worries_ , mind, not on occurrences of actual harm.

The reactions I'm seeing are... not helpful for the most part.

One reaction is that this is a horrible thing because it is unfair. I agree that it is an unfortunate part of our current reality. So is the possibility of being forced into uncomfortable situations, or more generally, being sexually harassed when you're a blameless woman in the workplace. I don't see a way of resolving that unfairness without _any_ negative impact on blameless men.

We can certainly try to work together in good faith to minimize negative impact while creating positive change. But wailing and moaning about the balance of power tipping slightly away from us (I'm a white male) is not acting in good faith. It's just plain entitlement.

The #metoo movement's direct impact puts me at more risk than before. And I've taken advantage of my cultural immunity more than once in my life. I'm not proud of some things in my past, and I'm not free from the possibility of doing more things in the future. I have problematic biases and attitudes. But I'd rather live in, and have my kids grow up in, the sort of world that #metoo is leading us towards than the world that (I hope) we're leaving behind.

Besides, some of this abject fear over being accused of _the things that we 've actually done_ would be lessened if the patriarchal walls of silence and secrecy were torn down so we could all see what is actually happening in the world, rather than the whitewashed appearance of perfect honor and respect that we all pretend is real. I don't think my personal lapses would be judged too harshly if compared against reality. But they look pretty bad if compared to all the guys professing purity and innocence -- because we as a society have somehow fooled ourselves into believing them.

60% of male managers are nervous about mentoring women. What percentage of working women are nervous about what their male coworkers might do one at any point in the future?

And fuck that, what percentage have already experienced worse than what a male manager might realistically experience from a complaint about his behavior in a 1-1? And don't bother pulling out the "but what if absolutely nothing happened but the woman accused him unfairly and he lost his job and wife and kids and had to live under a bridge until he killed himself??!" unless you have some solid evidence that this happens more often than women get raped by acquaintances.

Or if you don't like that comparison, maybe look at the number of women who lose jobs or careers or get blacklisted as a result of someone else harassing _them_.

<comment><USER23> >And fuck that, what percentage have already experienced worse than what a male manager might realistically experience from a complaint about his behavior in a 1-1? And don't bother pulling out the "but what if absolutely nothing happened but the woman accused him unfairly and he lost his job and wife and kids and had to live under a bridge until he killed himself??!" unless you have some solid evidence that this happens more often than women get raped by acquaintances.

If the percentage of women that experienced problems were actually really low, and if rape basically didn't happen in the work place, how would that change the way we should have this discussion?

It sounds like you're saying women raped by acquaintances and women having problems in the work place are related. I've always interpreted it as they are acquaintances through friend groups, not necessarily through work. I guess it'd be interesting to see a study of what percentage the acquaintances are known through work explicitly, then maybe that could shed some light on where the tensions come from.

<comment><USER22> No, and I probably shouldn't have derailed it by mentioning rape. The point is that people react to the possibility of accusation by thinking up the most extreme scenarios. So I'm saying that if you're going to base it on extreme scenarios for men, you need to compare it to extreme scenarios for women -- which happen more often in practice, so can't be faulted for being _more_ extreme.

It would be more useful to not use the extreme scenarios when working through this stuff. They're really bad, but rare, and so not all that relevant.

</comment></comment></comment><comment><USER24> Sexual harassment and gender-based discrimination are real and urgent issues, but the path forward will not be lit by Facebook COO Cheryl Sandberg and SurveyMonkey marketing material. She has no moral credibility.

</comment><comment><USER25> It's Vice President Michael Pence's personal policy to never meet 1 on 1 with a woman unless it's with his wife.

<comment><USER26> He has the right idea.

</comment></comment><comment><USER27> This is bullshit. Don't be a creep. Period, end of story. Hire and promote fairly. You won't have a problem.

<comment><USER28> It didn't say they were uncomfortable hiring or promoting women, it said mentoring which implies a more personal relationship. Specific example from the article, which doesn't seem like bullshit:

 _nine times more likely to be hesitant to travel with a junior woman for work than a junior man, and six times more likely to be hesitant to have a work dinner with a junior woman than a junior man._

This is, unfortunately, a rational response to the current climate.

<comment><USER29> Why is it a rational response? I've travelled with female co-workers before, it's not as if the company made us share a bed. We were just two people travelling. I don't really understand how the "current climate" would make me rethink that.

<comment><USER30> Can you prove you didn't proposition her during the trip? Remember, she doesn't have to prove anything to be taken seriously. You, however, have to prove a negative and that's very hard to do.

<comment><USER29> If I travel with a male coworker can I prove I don't proposition him? Gay people exist, you know. This isn't any different.

<comment><USER28> If you are gay, and your gay male coworker accuses you of something it looks worse than if you are a woman, and a gay male accuses you. So, yes, of course it is different. Look at this way, a compatible sexual couple is at higher risk of an accusation than non compatible sexual couple.

<comment><USER29> But a trustworthy employee won't do any of those things, no matter the gender. If you have an untrustworthy employee you have a whole other problem. They could accuse you of making a pass at them, or of stealing from them, bullying them... the list is endless really. I don't get the preoccupation with sexuality in that context.

</comment></comment></comment></comment></comment></comment></comment><comment><USER31> So 60% of male managers admit they aren't good managers. Good. Step aside then, and let others more capable than you have a chance to prove themselves.

<comment><USER32> Male manager here. This is not at all hard to believe.

</comment></comment><comment><USER33> It seems like the path forward is clear. Sandberg:

> "The thing is, it's not enough," she says. "It's really important to not > harass anyone, but that's pretty basic. We also need to not be ignored."

There's no need to walk back any part of MeToo to solve this problem, just to keep pushing forward.

<comment><USER34> No. Real world is not that simple. Certain things are only considered harass between man and woman, but not between same sex. For example, asking to meet (drink, sports, etc.) after work. So there's a choice between either "ignore" or "harass".

Yes, you don't have to do these, but some people just like buddyhood kind of binding more than others.

<comment><USER33> That's a problem for the managers to solve, and they can solve it by reducing the number of business dinners they do with men, if they can't figure out a good way to do business dinners with women. The work hours and the options for dining near the office might mean that it's too difficult to have a work dinner that isn't too cozy, and if it is, so be it. It's entirely their responsibility to have management practices that aren't sexist.

<comment><USER35> Ok, but thats just screwing over everyone, right? Is that really the kind of "equality" that we want?

<comment><USER33> No, the ideal is an open and transparent workplace, where you can go to dinner with anybody and not worry about getting in trouble, because there are casual enough places to eat, where you don't feel like you're on a date when you have dinner with someone there, unless you're Mike Pence. And where that isn't available, you find another activity for mentorship besides a work dinner. If your suburban office park only has one dining place nearby and it has candles, do a work lunch instead, with food you brought.

<comment><USER35> Sure that's all well and good.

But what you suggested was that people change their behavior regarding other coworking relationships that are otherwise working fine for both parties.

If both parties are totally comfortable with whatever dinner plans that they have with each other, then who are you to go in and tell them not to?

You suggested that men change their mentorship behavior that is otherwise working fine with their male mentees.

<comment><USER33> There needs to be a shift towards environments that are appropriate for meetings between people who are likely to have sexual tension between them, as well as meetings between those who aren't. Otherwise any time someone starts a new mentorship activity, they'll have to think it through, and that in itself is going to bring up questions that aren't appropriate in the workplace. For example: "Should I take Joe to the bowling alley with me alone? Will he worry that I'm going to compliment him on how strong his arms are? If I drink will it feel awkward for him if he doesn't drink?" I think it's better to skip all that and just keep it professional.

<comment><USER35> Ok, now let's say that I am a normal person, who is also dealing with another normal person, and both of us are able to easily navigate these hypothetical situations while also not being extremely professional?

<comment><USER22> Then go ahead? If there isn't a problem, and you both know there isn't a problem, then... there isn't a problem?

I may be missing your point. If you mean that two men shouldn't have to stop meeting at a bar when they're both comfortable with it, simply because there's a woman on the team who wouldn't be comfortable in the same situation, well... let's say your team has a habit of meeting at a Brazilian steakhouse to make important decisions. Then you hire Dave's brother Jerry, who is a strict ethical vegetarian. Don't you think it might be a decent idea to pick a different restaurant? Jerry swears he's willing to come along to the steakhouse and bring his own food, though you notice he looks pretty queasy and never touches his food the whole time you're there.

Or maybe you think it's fine if he quit if he's so uncomfortable, your team just isn't right for women oops I mean vegetarians and they'd be better off working somewhere else.

<comment><USER35> My point here is that there are these people out there called "normal individuals", who are able to navigate social situations without being extremely robotically formal.

If you are the kind of person who does not have to social skills and awareness to navigate these kinds of normal social interactions, with other normal humans beings, then fine, silo yourself off, metaphorically with extremely impersonally relationships with others in which you act 100% "professionally" all the time with the people who you spend half of your waking life with.

But the rest of us are able to handle such situations easily.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER36> Alternative headline: 60% of males rethinking how they interact with women after decades because protests broke through and raised consciousness. Change isn't comfortable, it's not supposed to be. It's only supposed to be just.

This goes for technical skills and moral ones too. You feel bad until you're better.

</comment><comment><USER37> Regardless of skill or experience, they seem to be getting promoted over other more qualified individuals, anyway. At least that's what I've noticed in my places of work over the last four years. I'd hate to tell you how many of those places went under as it's all anecdotal. I am however getting a little put out by people around me not getting promoted on merit, but on optics.

<comment><USER38> When an incompetent man gets promoted it's all "Peter Principle, brogrammer, Dilbert joke, hurr durr."

When an incompetent woman gets promoted, it's because she's a woman.

<comment><USER37> Parden? I'm talking about people getting promoted into positions they aren't qualified for and sinking companies. I really don't care about your sex, race or who you like to invite into bed. I'd rather be on a winning team.

<comment><USER38> Maybe a little data might help your point be taken more seriously.

All kinds of idiots get promoted above their capacities. Women aren't special in that regard.</comment></comment></comment></comment>


Chinese Research Papers Raise Doubts, Scientific Integrity Questioned - <AUTHOR> https://www.wsj.com/articles/chinese-research-papers-raise-doubts-fueling-global-questions-about-scientific-integrity-11593939600 <comment><AUTHOR> We seem to be stuck in perpetual loop of scientific papers across disciplines ranging from economics to medicine being repeatedly questioned for lack of reproducibility, plagiarism and outright fraud. The solution seems obvious - scientific notebook publishing replete with data and calculations. The technology exists and has done so for close to a decade - Wolfram's Mathematica came out with its first notebook release in 1988 and IPython notebook in 2011. This solution has been discussed ad-nauseum but the implementation seems to be ad-infinitum. Is it merely an adoption issue or are there other hurdles?

<comment><USER2> Except that there is no standard of a "scientific notebook". It's not a form one fills out. It is notes taken during experimentation. Data analysis generally takes place outside of a scientific notebook, which simply contains raw data and observations, the completeness of which is up to the experimenter. Notebooks contain proprietary, private data, owned by the organization overseeing the research. They have no incentive to publish their "unpublished" results that have been expensive to produce. There is no easy solution.

A lot of people like to treat "science" as this unassailable "truth", but science is political. It is subject to bias and it is corruptible. Results are skewed; inconsistent results are discarded. "Science" is incentivized to produce results consistent with the desire of those who finance it. This is not a "China" problem by any stretch.

<comment><AUTHOR> I think you misconstrued what I meant by notebook.</comment></comment></comment>


Hacking Printers Advisory ⅙:PostScript printers vulnerable to print job capture - <AUTHOR> http://seclists.org/fulldisclosure/2017/Jan/89 <comment><USER2> «By redefining the `showpage' operator which is contained in every PostScript document to print the current page, an attacker can hook in there and execute her our own PostScript code. Long term redefinition (until the device is restarted) is possible by prepending the `startjob'/`exitserver' operators.»

Then all bets are off, any print job can be captured, altered, stored, denied, etc.</comment>


Google, You Can Keep "Keep" - I'll Stick to Evernote - <AUTHOR> http://adamreport.tumblr.com/post/45673532532/google-you-can-keep-keep-ill-stick-to-evernote

<comment><USER2> irrelevant. google provides ways to move your data - google.com/takeout/</comment>


Mondrian and JavaScript - <AUTHOR> http://vart.institute/mondrian/index.html <comment><USER2> My favourite Mondriaan picture is Gray Tree:

[http://acdn.architizer.com/thumbnails- PRODUCTION/ac/4f/ac4f2...](http://acdn.architizer.com/thumbnails- PRODUCTION/ac/4f/ac4f2c7ae66c3d6440be7c1bfa8bca2f.jpg)

Very different from the stuff that he's famous for.

</comment><comment><USER3> Might be interesting to bring up the Piet esoteric programming language: [http://www.dangermouse.net/esoteric/piet.html](http://www.dangermouse.net/esoteric/piet.html)

</comment><comment><USER4> I'm glad the author got it right about green, but I was surprised not to find any explanation for those who aren't up on their art history.

</comment><comment><USER5> Last year we had a competition in the Netherlands were people could submit digital recreations in code of Mondrian's 'Victory Boogie Woogie'. Quite a few interesting submissions over here: [http://elegant.setup.nl/#inzendingen](http://elegant.setup.nl/#inzendingen)

</comment><comment><USER6> I did something quite similar once, though with canvas instead of tables: [http://www.dl.unospace.net/mondrian/](http://www.dl.unospace.net/mondrian/). I think part of the fun after making a simulation like this is to get silly with the parameters, so crank those sliders but be prepared for your browser to lock up :)

</comment><comment><USER7> Nice! I made something similar a long time ago — create your own Mondrian painting through the medium of Tetris (warning: sound you can't turn off and bad graphics): [http://www.kongregate.com/games/pete205/mondriaan- tetris](http://www.kongregate.com/games/pete205/mondriaan-tetris)

</comment><comment><USER8> Past year there's been a competition organized by Setup where people could enter algorithms for generating art like Mondrian: [http://elegant.setup.nl/](http://elegant.setup.nl/) (It's in Dutch though..)

</comment><comment><USER9> I also did a Mondrian painting generator last year. Fun subject to play with. [http://www.clementpigeon.fr/mondrian/](http://www.clementpigeon.fr/mondrian/)

</comment><comment><USER10> Hmm, maybe use something like a fractal algorithm? At least Mondrian is about the disposition of weights and space as it may be found in natural grown structures, like trees ...

</comment><comment><USER11> OP: institute is a tld now? Seems really obscure.

<comment><USER12> There are a lot of new TLDs with that property (obscurity). For instance, .camera, .moe, and .plumbing. For other examples, consult the wiki:

[https://en.wikipedia.org/wiki/List_of_Internet_top- level_dom...](https://en.wikipedia.org/wiki/List_of_Internet_top- level_domains)</comment></comment>