Show HN: Mockups fixed by making collaboration effortless, built with React - <AUTHOR> https://precursorapp.com <comment><USER2> I'm trying to figure out the audience.

I've never had to collaborate on a mockup. I make mockups. I review mockups. I mark mockups up. But I've never wanted to do one live with someone else. That's just me though so an example of when this is used would be great.

Some feedback: I use Balsamiq and have for years. The whole reason I use a mockup tool in the first place is so I don't have to draw everything by hand or make boxes in Photoshop. The ability to use pre-drawn UI items is golden.

While the collaboration features are cool and hi-tech, this seems like the beginnings of a mockup tool, but not a full one yet. So saying "we fixed mockups" seems a bit of a stretch. It's a nice start though and I look forward to seeing where it goes.

<comment><USER3> "Mockups" isn't really the right term here as far as I'm concerned – it implies high fidelity, whereas this is a tool for rapid, low-fidelity idea sketching. It looks like an excellent wireframing tool, not a mockup tool.

<comment><USER4> It's just as fast to draw a browser window, button, or text box in Balsalmiq as it is to draw a rectangle in Precursor, but the former makes it unambiguous what I'm talking about.

The point of low-fidelity mockups is to make the conversation about the the overall design without focusing on detail. If "low-fidelity" means moving from basic web elements to basic geometry, it seems to me like that hinders the conversation more than it helps.

</comment></comment></comment><comment><USER5> Just wanted to chime in and say this beautiful application was built with a pretty cool technology stack: ClojureScript, Om (ClojureScript bindings to React), Clojure and Datomic.

<comment><USER6> Yes, would very much like to see the source. Look like they _did_ open up an Om profiling tool they made: [https://github.com/PrecursorApp/om-i](https://github.com/PrecursorApp/om-i)

</comment></comment><comment><USER7> I have mixed feelings here:

1\. This is just wire-framing, not mock-ups. Adding mock-up features will take away the realtime-discussion-ness of the product, so that's that.

2\. Wire-framing is essentially a brainstorming exercise. I'm not sure if it's actually very worthy to do initial _brainstorm_ together.

3\. But, what is valuable is that once you brainstorm, to show that to coworkers and let them make edits in realtime to discuss.

4\. However, this product is fully focused on making the _brainstorming_ part collaborative, not the review part. So much so that for the review use case, I can use it for free.

So I don't know. I'd still like to explore and brainstorm alone. Things must pass a threshold before they are shown out. Maybe there is a market, but I have never started on a blank canvas with a coworker.

</comment><comment><USER8> This is pretty amazing!

I am looking for a quick way to sketch some apps and this might be the simplest way to do so even though it misses a couple of things.

Some of the things to improve:

* Snapping. Sometimes when the area is small, the snapping is annoying as I won't be able to vertically center text in the box even though it should be possible physically. Maybe, turning off snapping?

* More text settings (font size at least)

* Predefined elements. Surely, it must be kept simple but things like arrows would help a lot and my crooked hands won't have to draw crooked arrows :)

<comment><AUTHOR> Thanks!

> Snapping

You might be able to do what you want by zooming in (alt + scroll). When you're zoomed in, the snap interval is smaller.

You can also move text without any snapping with click+hold, then drag using the text tool.

Grouping is also coming, which will allow you to auto-center text in a box.

> font size

You can change font size by hitting "+" or "-". It will affect all selected text.

> Predefined elements

We're still working on this, but we remember everything you copy and paste. You can manage them from the "Clipboard history" in the upper left menu. You can use that to define your own components.

The next version of that feature will make it much easier to get the clips that you starred into the document, without having to go through the menu.

For arrows, hold "A" and click the edges of 2 shapes. We'll create an arrow between them.

</comment></comment><comment><AUTHOR> If anybody from Trello is around, we'd love to do an integration. As Trello users ourselves, we want to be able to attach a Precursor wireframe directly to a card and sketch our ideas in a Precursor doc without leaving Trello.

Contact firstname.lastname@example.com

<comment><USER9> Send them an email...

</comment></comment><comment><USER10> WOW impressed with the shortcuts. Within a second of loading, I started using all the typical adobe shortcuts, and they even got a shift+? for the shortcut menu.

That alone is pretty impressive and shows that these guys know who they are building for. Well done!

* I know this is a tall order, but even adding some of the more technically difficult but basic functions like colors, shapes, borders, radiuses, gradients, etc would be incredible. Could you make a browser version of Sketch?

* * Slack needs to buy this app, now.

</comment><comment><USER11> I'd like to congratulate you for such an impressive user interface: so fast, sleek and well designed. For the purpose of creating mocks I'd like to have more prebuilt components though.

<comment><USER12> Yes, being able to share/upload components for others to use would be stellar.

</comment></comment><comment><USER13> Amazing! I think you just raised the bar for UX. The level of detail is OCD crazy.

Any chance you can share how you got to such polish? the workflow of modeling the animations and UX? How you concluded SVG would be best? tooling you used?

Amazing!

<comment><USER14> Wow, that's awesome to hear about the polish. We move pretty fast, and sometimes I worry about skipping over important details.

To get what polish we do have took a few things: 1) My cofounder and I have been working together for a while and our workflows compliment each other. The time we save with development usually gets spent on polish after shipping. 2) This started as a side project for us, so we made a strong effort to find a concept that was inherently simple. For example, the simpler we can make the UI, the more users can concentrate on your ideas. So our motivation towards the UI isn't to add more, it's to refine down when possible. 3) I use Precursor everyday now, so it's important for me make sure things behave well :)

We're not heavily-dependent on svg, it would be possible to render to canvas or just to straight html. But svg has some niceties, like transforms on groups and easy export to images. It definitely has its challenges (e.g., text formatting, Safari bugs, etc.) but we get a lot of things for free, and it helps keep sharing options pretty simple. Luckily our visual aesthetic is pretty minimal, so we don't have to push things very hard on it.

</comment></comment><comment><USER15> I think something that could really help this app succeed, is sharable UI elements.

There are a lot of common things I don't want to redraw (date pickers, dropdowns, file uploads, etc, etc). However, I don't want these provided as a static set, because the web and my needs are always changing/growing.

If I was able to browse the community's drawings and add them to my profile for quick insertion into a mockup that would be great or even create my own for reuse.

Just my two, \- Cheers

<comment><AUTHOR> Curious what you think of our current approach to this.

We're worried about people spending a lot of time searching for the perfect component instead of just sketching out their ideas. That's one of the big problems that we see with tools like Omnigraffle.

But we recognize that people can work a lot faster if they don't have to keep sketching out the same components in every wireframe. Our approach is to use copy/paste as a mechanism for creating custom components.

We're already keeping track of everything you copy/paste from the canvas. You can delete them, star them, and insert them into the canvas from the "Clipboard history" in the menu at the top left. Our next step is to make them easier to insert into the canvas.

<comment><USER15> Right, that works to some extent. However there is still an upfront cost of drawing each component I want to use.

I think share-ability is important (seo/community, think of github repos). I'd like to do something like google for "precursor datepicker" view/fork or 'save'/star/insert it or _maybe_ search in app for "datepicker"s.

That just my two cents, I think it creates a community and then as a whole everyone benefits, while the tool still remains uncluttered (the workflow remains the same, but components could be incorporated). Consider this: I could have say 4 tabs open which I then copy & paste some components I found into a mockup I'm working on. No searching in app, no component drawers, just simple copy & pasting between tabs.

Also, tracking a clipboard doesn't really classify something as "important", I mean, won't that list just get cluttered, I don't necessarily want to look through 20 copies to find the one time I copied the whole component. And workflow to update it might be a bit weird, do I edit it, re-copy it and re- star it, delete the previous staring?

Really, just my two cents, food for thought, great work, I'm sure you know better!

<comment><AUTHOR> Thanks, I appreciate the reply!

You may be right about share-ability being important. It would be nice to see some validation of that. For example, users sharing Precursor docs full of their custom components, encouraging other users to copy the items. We might build a couple of those ourselves to see if it gets any traction.

> Also, tracking a clipboard doesn't really classify something as "important"

We anticipated that problem. You can delete the clips that you don't want to keep and star the important clips to keep them at the top of the list. They're also ordered by creation time, so the cruft will just fall to the bottom.

For updating clipboard items, you'd have to go through the steps you describe. But it wouldn't be especially difficult to allow people to edit the clipboard items from the menu.

</comment></comment></comment></comment><comment><USER16> This is awesome. One tiny minor thing. Can you add a little bit of a delay to releasing shift when drawing a shape?

I'm spoiled by the behaviour in Photoshop where there's a little bit of a delay (~75ms) between releasing shift, and it taking effect. This means that both shift and the mouse button can be released simultaneously, instead of having to consciously be aware of the order that you release the keys.

<comment><AUTHOR> Good idea, thanks!

</comment></comment><comment><USER17> This works amazingly well on a Surface with pen/touch. It's the fastest app I've seen for going from idea to wireframes. So impressive that this could be done with web tech.

</comment><comment><USER18> Wow! Impressive tool. We already can see the use cases for our workflow. One great one is when we need to quickly get the teams input on an idea or UI element. Dare I say Slack for UI?

</comment><comment><USER19> This is cool, in concept. But there's no way that drawing all the shapes manually is an improvement over my existing system for creating annotated wireframes using Balsamiq ([https://balsamiq.com/](https://balsamiq.com/)) and Red Pen ([https://redpen.io/](https://redpen.io/)).

While I certainly do like feedback from the team, I don't want other people marking up my wireframes in a way that makes it impossible to tell who drew what / said what.

Site note, the latest version of Balsamiq is REALLY great. They added a bunch of simple things like Font Awesome Icons, and the ability to keep all the project wireframes in one file.

<comment><USER20> Maybe assign a color to each participant and make the lines each draw have a slight shine of their color? or color it on mouseover.

</comment></comment><comment><USER21> No offense, but this tool seems pretty raw. Why announce it now?

[https://moqups.com](https://moqups.com) is a great web based mockup app I have been using for a few years. It's very slick.

<comment><USER22> Perceived quality issues aside, Precursor appears to be free for public projects. The site you linked contains the following text:

"The Free Plan includes 2 projects (limited to 300 objects) and 5MB of storage to get you started."

<comment><USER21> What business that develops software can't afford $9 a month for an upgraded plan? The utility you get from this type of software far outweighs the cost.

Who wants their wireframes to be public projects? Maybe if you're working on UI's for open source projects? I can't think of any other use cases.

Precursor's unique value propositions seem to be aimed at problems I would guess few people have...

</comment></comment></comment><comment><USER23> Although there are many different tools out there, sometimes I just want to fire something up and start working on it. Speed, as in how quickly you can start working on something without having to tinker around with different tools and components is a huge plus. Use case scenario = design meetings, brainstorming sessions, client meetings etc. Plus the right click palette and the UI is very useful.

Assigning different colors for users working on the same canvas will be helpful to track who is working on what.

Considering this is an initial release, it is pretty amazing.

</comment><comment><USER24> Very nice looking landing page. On the surface this seems to fill the void left by Easel.

</comment><comment><USER25> I like the tool selection mechanism. One minor suggestion there: allow me to make more quick, "jerky" gestures to select a tool by not limiting the size of the circle when I click/release really fast. So I should just be able to right click and flick to the right to get the rectangle tool. It's a tiny detail, but one that might be fun to implement :)

</comment><comment><USER3> What's really great about this is that it is a prototyping tool that _enforces_ low fidelity. Not having multiple colors, not getting to choose fonts is actually a major feature, because it requires all collaborators to focus on the layout and functionality before getting into the weeds.

<comment><USER26> Yup, that's why Balsamiq is particularly good for this kind of work.

</comment></comment><comment><USER27> Wow this is amazing! Great work guys. It's fluid and beautiful and functional.

</comment><comment><USER28> UX is great. Like others pointed out, it is of limited functionality. You would need to add pre-made elements to be able to wireframe things. Then ability to link those.

But UX is a solid foundation to continue developing this idea.

</comment><comment><USER29> The app is not personally useful to me, but this has to be the best feeling web app I've ever used. Fluid, no illusion-shattering glitches, everything just works, including "desktopisms". Kudos.

</comment><comment><USER30> Apparently this is made with Om (Om makes React available to Clojurescript).

</comment><comment><USER31> Good work! Looks like its built in Om?

<comment><AUTHOR> Good eye, it is built with Om. We've been pretty happy with it and even published a tool to help find performance bottlenecks: [https://github.com/precursorapp/om-i](https://github.com/precursorapp/om-i)

For the unfamiliar, Om is a ClojureScript React wrapper that makes React much nicer to work with and adds some nice performance benefits out-of-the-box. Nolan's intro post is pretty inspiring: [http://swannodette.github.io/2013/12/17/the-future-of- javasc...](http://swannodette.github.io/2013/12/17/the-future-of-javascript- mvcs/)

<comment><USER32> I'm really impressed with the visual design, and curious about what's being used to generate the CSS.

I'm also wondering, are there any difficulties that arise when working with canvas and svg using just Om, or in plain React?

<comment><AUTHOR> css is generated with less.

I can't say much about canvas, but using svg with React is a bit of a hassle. There isn't built-in support for every svg tag and attribute, so we have to maintain our own fork: [https://github.com/precursorapp/react](https://github.com/precursorapp/react)

Once you add support for the tags, though, it's no different than working with any other html in React. I think we'll see React start to eat into d3's market-share pretty soon.

<comment><USER33> Can you elaborate on this a bit? I'm not that familiar with react itself, having only used it through om, but I built a proof of concept that let me work with SVGs via om with code like:

        (defcomponent circle-view [data]
          (render [_]
                  (let [size (get-in data [:circles :size])]
                    (html [:div.circle
                           [:svg {:height size
                                  :width size}
                            [:circle {:cx (/ size 2)
                                      :cy (/ size 2)
                                      :fill "yellow"
                                      :r (/ size 2)
                                      :stroke "green"
                                      :stroke-width 4}]]]))))

And it seemed to all work fine? (Using sablono obviously)

<comment><AUTHOR> Oh sorry, I didn't mean to imply that none of the svg tags are present. Most of the common svg things work, but there are lots of missing tags and attributes. There's an issue for it here: [https://github.com/facebook/react/pull/1032](https://github.com/facebook/react/pull/1032)

Some of the things we had to add for Precursor were clipPath, foreginObject, mask, patternTransform, marker, and vector-effect.

<comment><USER33> Ah, ok, that makes sense. Thanks!

</comment></comment></comment></comment></comment></comment></comment><comment><USER34> Having trouble zooming in and out (ctrl + scroll). The zoom is incredibly sensitive and once I've zoomed one way, I can't get back to normal... Only to the polar opposite.

<comment><AUTHOR> Use alt+scroll for less sensitive zoom.

You can also hit "1" to reset your viewport to the origin with no zoom.

It's a bit of an oddity that ctrl + scroll works at all--mac trackpads set the ctrl key bit on the event when you use pinch-to-zoom. At the normal rate, the pinch-to-zoom feels too sluggish, so I speed it up by 10x. Unfortunately, I can't find a way to tell the difference between pinch-to-zoom on a mac trackpad and normal ctrl + scroll.

<comment><USER35> Would something like this work?

        ontouchstart: scrollMultiplier = 10;
        ontouchend: if(evt.touches.length === 1) scrollMultiplier = 1;

<comment><AUTHOR> I would have thought it would be a touch event, but it's actually a normal scroll event. The only difference I can see is that it has the ctrl bit flipped.

Here's the stackoverflow answer: [http://stackoverflow.com/questions/15416851/catching-mac- tra...](http://stackoverflow.com/questions/15416851/catching-mac-trackpad- zoom)

<comment><USER35> I understand that, but do any of the touch events fire in parallel? Like, just before the pinch happens, is there not a touch start even for when the fingers touch the screen? The idea is to change the rate of the normal scroll event only if there are fingers on the screen.

<comment><AUTHOR> I don't think there are any touch events at all when you're using a trackpad on a mac. For mobile, we can distinguish by the touch events.

<comment><USER35> Oh, yes, I'm sorry. I completely spaced on what you were saying.

</comment></comment></comment></comment></comment></comment></comment><comment><USER36> First of all, this is an amazing app. It uses many SVG animation. But the drawback about SVG animation is when it comes to cross browser support, especially safari. You will have many issue working in safari browser. That is one of the reason i still pending to implement cool SVG animation and UI in to the real project development. Last but not least, Good work, keep it up.

</comment><comment><USER37> How did you find the process of working with React for this project compared to other js libraries

<comment><AUTHOR> It's much more pleasant to build UIs with lots of different states in React, because you have a full programming language at your disposal. The last js library I worked with was Knockout.js. Having to use Knockout's limited subset of a programming language to do view logic meant that lots of view logic lived in the models.

But the really big difference is in using ClojureScript. I converted CircleCI's open-source frontend[1] to Om/React and it feels much closer to backend codebase than a frontend. Brandon Bloom gave a good talk about it at Clojure/West: [https://www.youtube.com/watch?v=LNtQPSUi1iQ](https://www.youtube.com/watch?v=LNtQPSUi1iQ)

[1] [https://github.com/circleci/frontend](https://github.com/circleci/frontend)

<comment><USER38> Would you mind expounding a bit as to why the big difference in creating ui was clojurescript? Thank you!

</comment></comment></comment><comment><USER39> Serious Slow Clap guys. To do this as a web app is really impressive. Great UI. Only recommendation would be to have a library of prebuilt commonly used components, similar to balsamiq, but I'm sure you are aware of them.

</comment><comment><USER40> I don't think this is a criticism of this app, so much as web developing as a whole, but it's crazy how this app is hogging one CPU core at 100% to draw a circle AND still runs at around 15fps.

</comment><comment><USER41> Amazing app. I haven't explored React much yet. How is the collaboration part working i.e. changes made in one browser window show up in the another instantly. Is React being used for this?

</comment><comment><USER42> I like it a lot but it's unusable for me as I need to make things that are longer than the screen (often much longer), yet this forces me to work within size of the screen.

<comment><AUTHOR> You should be able to make things as large as you like--the canvas is infinite.

To pan, you can scroll or hold space and drag.

To zoom, hold alt and scroll.

<comment><USER42> Then it doesn't work properly in Chrome or something-- it's not letting me drag items to make them bigger than the screen size.

</comment></comment></comment><comment><USER43> Why can't apps like this have a accessible demo available to try it out? Not interested enough to spend time signing up and I avoid SSO whenever I can for various reasons.

<comment><USER44> You can click the "Make Something" button on the main page and go directly into a demo.

</comment></comment><comment><USER45> I have a black screen, a blue tooltip saying "Right-click" and nothing whatsoever happening when I right click.

Firefox 31.5.0

edit: is it really necessary to downvote for reporting a valid bug !?

<comment><AUTHOR> Sorry about that! We've only tested with Firefox 38. I'll see if I can install an older version and try to fix whatever bug you're hitting.

In the meantime, I'd be interested if Chrome or Firefox 38 works for you.

<comment><USER45> hi - i checked the logs. I presume it's the corporate network I'm in blocking the websocket stuff

WebSocket connection to 'wss://precursorapp.com/chsk?tab- id=883d69ff-1095-4eed-bf63-83d786d55db1&client- id=f71e3c9b-fd70-4710-8502-ada0c73f4760' failed: Error during WebSocket handshake: Unexpected response code: 200

Maybe you could add some better error handling into the GUI ?

<comment><AUTHOR> Oh no! It's supposed to fall back to long-polling if it can't set up a WebSocket connection. Thanks for letting us know.

<comment><USER46> Any news? I still can't use it.

<comment><AUTHOR> Sorry, I have the ajax fallback mostly working. Sharing cursors doesn't work, but syncing chat and changes to the canvas does.

I'm still trying to find a reliable way to catch the error that prevents the connection upgrade. Right now, the library I'm using thinks that it should just keep retrying the websocket connection. We're already maintaining our own fork of the library, but it's a tedious process to make and test changes.

</comment></comment></comment></comment></comment></comment><comment><USER47> Looks amazing! I love the responsiveness. Congratulations.

</comment><comment><USER48> The presentation/intro/design looks amazing. Can't comment on the product itself as it's not my field of expertise but great job!

</comment><comment> mako-taco Beautifully designed, and props to the engineers for keeping everything so snappy, even with all the animations. Really quality work.

</comment><comment><USER49> I've used this before and really liked it.

</comment><comment><USER50> Amazing app! The design is very elegant and clean. I love The minimal use of colors and UI interactions are delightful.

</comment><comment><USER51> Is it supposed to work on mobile?

<comment><AUTHOR> It should, although not everything is implemented (most notably delete). Use 2-finger scroll to get around and tap-and-hold to get the tools menu.

<comment><USER51> Ah, I did not think of the 2 finger scroll. Thought it was broken on mobile. Thank you.

</comment></comment></comment><comment><USER52> Sure looks cool and like looks of coding went into it.

Whether its something that meets a need, dunno.

</comment><comment><USER53> Love the design / feel

</comment><comment><USER54> Good work!

The pencil tool could be a little more smooth maybe? Like, when making circles?

</comment><comment><USER6> Excellent execution. I hope you can find a niche were it pays off.

</comment><comment><USER55> This app doesn't render correctly on my chromebook.

<comment><AUTHOR> Any chance you have a screenshot?

</comment></comment><comment><USER56> This seems really well made, guys. Way to go!

</comment><comment><USER57> Love this tool. Clean and easy to use.

</comment><comment><USER58> It's pretty sluggish on Firefox.

<comment><USER59> Definitely not on my Firefox. It feels smooth as organic grass-fed butter.

As a beginner web developer aiming to work remotely, they have me. I want simple, fast, colaborative, and they have it all plus "mindblowingness". ;)

Not only that, sites like this get me excited and make me want to develop something as good.

I can only congratulate the developers!

<comment><USER58> I'm on Firefox 38.0 on Linux, my laptop is pretty cheap, but on Chromium everything's super smooth.

Beside that, the app is very slick.

</comment></comment></comment><comment> ryan-allen Ah, this is nice, and fast!

</comment><comment><USER60> Very interesting!</comment>


24M Americans fear missing next rent payment as benefits dry up - <AUTHOR> https://www.usatoday.com/in-depth/graphics/2020/07/24/24-million-americans-say-they-have-little-no-chance-being-able-pay-next-months-rent-eviction/5497764002/ <comment><USER2> I'm not sure why ethnicity is relevant in this article

<comment><USER3> Racial inequality is a huge issue and it is intimately linked with this health and economic crisis.

African-Americans are on the bad end of gaping wealth and health inequalities, and the country's disastrous response to coronavirus is making the problem worse.

</comment></comment><comment><USER4> They should learn to code!

But coding doesn't pay!

I worked for startups where I wrote the entire backend code behind the products that put the companies in business. Then the business geniuses ran the businesses into the ground and I got paid nothing. My code got released as open source which is what happens when code is worth nothing.

Rinse repeat. Coding doesn't pay. Code is worth nothing. Code is always worth nothing.

So I got a real job instead. And I code for fun. Open source of course. Because code is worth nothing. Coding doesn't pay.

So glad I learned to code!

<comment><USER5> Uhhhh, are you suggesting you can't make money making software?

<comment><USER6> I'd argue if you're solving a real problem, it's hard NOT to make money in software.

<comment><USER4> No. It's impossible for a coder to make money in software.

You forgot to add "as long as you're a shameless self promoting blogger and SEO spammer who spends 1% of the time coding and 99% of the time marketing." That is what you meant to say.

I'd rather be coding and let someone who wants to do marketing do the marketing. That's how specialization works. But your world as it exists today doesn't allow for social introverts who are skilled at coding to get paid one cent. Coding jobs require extrovert personality and marketing skill in addition to coding. Coding doesn't pay.

So I do something else.

<comment><USER7> > _I 'd rather be coding and let someone who wants to do marketing do the > marketing._

That's how it works for the vast majority of professional software developers out there...</comment></comment></comment></comment></comment>


Elixir v0.5.0 released - <AUTHOR> http://elixir-lang.org/blog/2012/05/25/elixir-v0-5-0-released/

<comment><USER2> I used to be very excited about Elixir, not because I hate Erlang's syntax (I actually quite like it), but because I saw in it the opportunity for a mainstream, general purpose language with macros on top of the excellent Erlang runtime.

However, after 2 small projects with Clojure, my thoughts have changed. To me it is _the_ general programming language, and it's only a matter of time until clojure-beam sees the light of day (there's already Joxa).

Also, it occupies a weird spot: after v0.4's redesign, it pretty much kept Erlang's semantics, which made it unlikely to be adopted by old Erlangers and, with the whole OO thing was thrown away, it is too much a departure from Ruby.

<comment><USER3> Thanks for the feedback and for following Elixir all this time! I also enjoy Clojure a lot and it really gave me some great ideas that were imported into Elixir. While we have Lisp based implementations on top of the Erlang VM, I don't think clojure-beam can easily see the daylight unless it contains significant departures from Clojure. Unfortunately, extending the Erlang VM is nowhere close to extending the Java VM. :(

The problem with the OO approach is that OO didn't suit well an immutable language. The Erlang VM forces us to keep Erlang's semantics and it has been this way before and after the redesign. There is no way around, believe me, I tried. :)

I agree its current version is a stronger departure from Ruby, but also simpler and more powerful than before (now we have all of Erlang in our hands!). We are exchanging the OO familiarity by a better/tighter integration with Erlang runtime, which will, hopefully, be a good reason for people to try it out. I also believe there are plenty of reasons for Erlang developers to try it out, it is more familiar (which actually helps) and addresses many of Erlang shortcomings (it provides protocols, dynamic records, dynamic function generation via macros, etc). During the next weeks, I will write a document more specific to Erlang developers on how Elixir addresses these shortcomings.

When you give Elixir a try, join us at #elixir-lang, I would love to chat more!

<comment><USER2> > Thanks for the feedback and for following Elixir all this time!

I've been closely following Elixir since it was announced and I should've made it clear that I still think Elixir is a fantastic project

At first I though it would be my doorway into Erlang programming (or Reia, at the time), with the familiar syntax and all, but eventually I learned Erlang and wound up actually enjoying it. Then, an opportunity arose to use Elixir but, because of its early stage (this was right between 0.3 and 0.4), I couldn't deploy it in a production environment, so I ended up choosing Clojure.

So now, between Erlang and Clojure, I can't see where I could justify using Elixir. It's just my personal experience, of course.

> Unfortunately, extending the Erlang VM is nowhere close to extending the > Java VM. :(

No need to; one could just adapt ClojureScript to spit out Erlang. It would depend on the JVM and wouldn't support native macros, but it would work ok, I guess.

> The problem with the OO approach is that OO didn't suit well an immutable > language.

I think you made a very wise choice when you ditched OO. I'm all for functional & immutable.

> We are exchanging the OO familiarity by a better/tighter integration with > Erlang runtime, which will, hopefully, be a good reason for people to try it > out.

I understand it might be premature, but I would love to know what kind of projects/developers is Elixir attracting?

<comment><USER3> > Then, an opportunity arose to use Elixir but, because of its early stage > (this was right between 0.3 and 0.4), I couldn't deploy it in a production > environment, so I ended up choosing Clojure.

At the time (and still today) I would probably have done the same. We still need a couple more months before we can stamp "Production Ready" in it.

> No need to; one could just adapt ClojureScript to spit out Erlang. It would > depend on the JVM and wouldn't support native macros, but it would work ok, > I guess.

I guess I can eventually take a look at this as well for fun. :)

> I understand it might be premature, but I would love to know what kind of > projects/developers is Elixir attracting?

My background is web development, so expect something in this area in the future. It always amazes me how people like the What's App guys can get 2 million TCP connections in a single Erlang node (source: [http://blog.whatsapp.com/index.php/2012/01/1-million-is- so-2...](http://blog.whatsapp.com/index.php/2012/01/1-million-is-so-2011/)). With web sockets and native clients becoming more and more common, having powerful abstractions around TCP connections seems like a good idea.

</comment></comment></comment></comment><comment><USER4> I really wish projects like this would put together a basic, downloadable document on their language. Something that tells the reason and acts as a tour of the language.

<comment><USER5> As an example to this, I really like the xtend docs: <http://www.eclipse.org/xtend/#extensionmethods>

<comment><USER3> This is a nice intro. It shows the language features followed by some code examples, sweet, thanks for the link!

</comment></comment></comment><comment><USER6> I am quite excited about this project. When I was looking at Erlang the syntax totally turned me off, but the rest of it is awesome.

<comment><USER7> What didn't you like about it? I remember hating the syntax when I first start but forgot why.

After I worked through the initial aversion, the syntax no longer feels worse than say, Python, it is just different. In fact, I wouldn't give up Erlang's pattern matching functionality for anything and I miss that feature in any other language I use.

<comment><USER8> The one thing that really bothers me about its syntax is all the different line terminators. It makes moving around patterns painful.

I sort of dislike other aspects too, but nowhere near as much.

</comment></comment></comment><comment><USER9> the non s-expr homoiconicity/macro stuff is really cool. <http://elixir- lang.org/getting_started/5.html>

</comment><comment><USER10> Is it me or a release notes with a list of what changed is nowhere to be found?

<comment><USER3> Consider this the initial release. The previous alpha versions were designed completely different, so release notes don't apply for this release. We will maintain a CHANGELOG from now on: [https://github.com/elixir- lang/elixir/blob/master/CHANGELOG....](https://github.com/elixir- lang/elixir/blob/master/CHANGELOG.md)

</comment></comment><comment><USER11> make try-elixir.org or something )</comment>


Steve Ballmer fired Sinofsky, clearing the way for faster progress in mobile - <AUTHOR> http://www.extremetech.com/computing/140733-sinofsky-abrupt-firing-can-microsoft-finally-make-progress-in-mobile <comment><USER2> The real culprit that needs to be fired is Steve Ballmer. He was great from the inception of MSFT until maybe the turn of the century, when their business strategy of making and maintaining a Windows monopoly worked beautifully and extremely profitably. However, he is living in a legacy environment where he believes he needs to protect the Windows/Office monopoly BY ANY MEANS NECESSARY, and he and the rest of Microsoft can't keep up with everyone else around them because of innovation.

This mindset has completely stymied any sort of innovation at Microsoft because they are playing with one arm tied behind their backs in the midst of trying to compete against the likes of Google, Facebook, etc. In Steve Ballmer's eyes, everything must lead back to the sale of a license of Windows/Office, and that no longer works in their environment.

If Microsoft engineers had free rein to make the best search engine, or the best phone, or the best tablet, without worries about how will it lead to maintaining their revenue streams of Windows and more importantly Office, then I think their offerings would be on an order of magnitude better and more creative.

<comment><USER3> This doesn't make any sense to me... You think that the problem with Bing is that it's too focused on revenue for Windows? I suspect the problem is that it's really hard to build a better search engine than Google (and that even if it were slightly better, people are resistant to change).

Microsoft's overall profit numbers still look pretty strong to me, and their product portfolio is as diverse as ever. They've got 6 different products in their server and tools division alone that generate more than a billion dollars each year! [1] That's not to mention Office, Windows, Xbox, etc.

[1] [http://www.zdnet.com/microsofts-server-and-tools-unit-now- in...](http://www.zdnet.com/microsofts-server-and-tools-unit-now-includes- six-1-billion-businesses-7000007613/)

<comment><USER4> Right or wrong, your argument is exactly why Ballmer is still in charge and at the same time the reason many think Microsoft's future is bleak until he's not.

</comment></comment></comment><comment><USER5> It's worth noting that Ballmer has publicly laughed in the face of two of the biggest innovations in the last 5 years - the iPhone and the iPad. Now they're racing to catch up.

It seems like Ballmer, Sinofsky, and Gates pushed out people building products along those lines - J. Allard and co. only to pick up their vision later with Metro UI and Windows 8. (J. Allard and his team were behind Xbox, Zune, and Courier which basically gave a roadmap to Metro UI, Windows Phone 7 and Windows 8. J Allard also wrote a famous memo about internet connected apps back in 1994.)

Sinofsky and Ballmer also pushed out Ray Ozzie who was trying to make cloud computing a meaningful part of Microsoft's future.

Now that all the big vision is gone, where is Microsoft going to go? Continue to be a fast follower of Apple and Google?

Microsoft is a company without vision because it already achieved what it set out to - a computer on every desk. They won that battle. In the meantime, people's desks already have computers on them and are putting computers in their pockets, purses, and appliances. Microsoft was too busy with traditional computers to have a vision for mobile computing.

Maybe Microsoft should change their company goal to a computer in every pocket. Or a Microsoft app on every home screen. Or every computer to be powered by Windows. Or maybe a computer on every surface.

Without a big goal, Microsoft is going to be just another big tech company like IBM. It won't change the world again. It already did. Now it's just following everybody else.

<comment><USER6> >It's worth noting that Ballmer has publicly laughed in the face of two of the biggest innovations in the last 5 years - the iPhone and the iPad. Now they're racing to catch up.

Copy pasting from one of my previous comments.

I'm tired of these kinds of statements. The golden rule is that companies' employee publicly have to put down their competitors' new strategies. Imagine if Balmer said the iPad is great it's going to kill us, or if Jobs said 7" tablets are good but we'll make only in two years, so wait for us to make it. Or even Andy Rubin saying that Android UI is laggy compared to iOS, fix coming in 18 months. All of them(except maybe Jobs) would be summarily fired or atleast will be forced to recant their statements immediately on threat of being fired. It's almost part of their job to publicly mock their competitors, or their shareholders will dump the stock.

Privately they could be pissing in their pants about their competition, but you almost never hear about that except after maybe 5 years from unnamed sources. Care to think for a moment why?

The more puzzling thing to me is, why do so many otherwise smart people actually think that these people publicly say what they really believe and really believe what they publicly say?

<comment><USER5> Well, maybe it's my personality, but I expect people to be basically honest. I realize people lie constantly, but why should we believe anything that they say if we assume they are lying?

As in, if I believe that Steve Ballmer is lying about the iPhone being an overpriced product that won't sell, why should I believe him when he says that Windows Phone will sell millions of devices and that it's worth developing for?

I realize that nobody wants to admit that their competitors are making a good or better product than you, but I don't see why they wouldn't be willing to tell the truth.

Maybe it's a midwest thing, but if we assume that Jobs, Ballmer, and Rubin are all lying through their teeth, why would we ever buy their products? That is even dumber than believing they are telling the truth. The only thing dumber than trusting someone is buying from someone you don't trust.

<comment><USER7> _"if we assume that Jobs, Ballmer, and Rubin are all lying through their teeth, why would we ever buy their products?"_

Because the merits of a product have little or nothing to do with the public statements of their makers.

</comment></comment></comment></comment><comment><USER8> My wild speculation:

Steve Ballmer is a sales guy at heart, and it's why he's been able to survive a decade of middling stock performance and strategic missteps: He must have close connections to Microsoft's largest enterprise customers, and were he to be fired, it would be an invitation for those customers to reevaluate their commitment to Microsoft's platforms.

When he walks into a big customer's boardroom, he must be furious every time he sees some C-level using an iOS or Android device. He knows that if he can't sell "Windows everywhere" to _these_ users, he's doomed to keep reading headlines about 5,000-user iPad-based IT projects and the "post-PC era".

He didn't need to wait to see how the market would respond to Windows 8 and devices like the Surface. These users could tell him immediately, perhaps even before the product launched, and I would guess that their feedback was discouraging. If at the same time their IT departments were making noise about sticking with XP or 7, that would have been the last nail in Sinofsky's coffin.

<comment><USER9> _"He must have close connections to Microsoft's largest enterprise customers"_

Ballmer has a close connection with Microsoft's largest shareholder, some fellow named "Gates."

He has even closer ties to the second largest shareholder, himself.

</comment></comment><comment><USER10> > Larson-Green is best known as a driving force behind the new Windows 8 UI > and, prior to that, the Office ribbon bar.

How can I dislike this woman so strongly when I've never met her?

<comment><USER11> You might try watching the "Story of the Ribbon" presentation, or just read the articles on Jensen Harris's blog. The amount of research, data, and care that went into designing the Ribbon is astounding. I'm not sure what other approaches work, when you need to present thousands of commands to end users.

I wasn't a fan of the Ribbon on first sight, but when reading how they came up with it, it's clear this wasn't just some arbitrary cosmetic adjustment. Contrast that to the Office 2013 design, with it's random all-caps on items in no apparent pattern.

[http://blogs.msdn.com/b/jensenh/archive/2008/03/12/the- story...](http://blogs.msdn.com/b/jensenh/archive/2008/03/12/the-story-of-the- ribbon.aspx)

<comment><USER10> This is one area where I side with Jobs. No amount of research can compete with smart designers.

<comment><USER3> Surely the combination of research and smart designers is better than either in isolation, though, right? Do you have evidence that the designers of the ribbon were not "smart"? Are you aware of a better design for surfacing hundreds of features? Clearly, standard menu bars weren't working. The combination of the ribbon plus the quick access toolbar seems quite elegant to me...

<comment><USER10> Outlook is probably one of the most complicated non-admin pieces of software that Windows users use, and I find it completely impossible to do real things in 2010 - in fact, it took me way longer than it should have to even figure out that I was running Outlook 2010.

There are conventions to any interface. In Windows, Help -> About will tell you what version of a piece of software you're using most of the time, but for some reason Outlook feels that I need to go to File -> Help -> Additional Version and Copyright Information.

Disregarding decades of convention because a handful of wankers with a whiteboard say so is a recipe for failure. I find LibreOffice far easier to use than newer versions of Microsoft Office precisely because their navigation isn't a convoluted wad of deuce.

There is a reason that Visual Studio, Visio, and Project don't have the ribbon interface - it's not better for anyone who actually knows how to use a computer. The ribbon interface was designed for a mythical group of people that hadn't ever used Windows-style context menus in 2005. Maybe as an emergent, intuitive interface for people who've never sent an email, the ribbon is great, but it's different than any other piece of software out there, and I've never met anyone who actually prefers it.

<comment><USER11> Did you bother to read the presentation I linked to? They had all sorts of tests, had many millions of users's usage data. They even ran eye tracking studies to see how people actually used menus versus the Ribbon and on and on.

I'm unsure if, after reading the information how you could dismiss it as a "handful of wankers with a whiteboard" just "saying so".

P.S. Clicking the help icon opens a window with "Outlook 2010" in the first line of content. Searching for "what version" also provides an article explaining how to find this. My guess would be that "checking the version number" didn't show up as a commonly used feature, enough to warrant higher visibility or reworking the help system.

<comment><USER10> The only difference between a handful of wankers with a whiteboard and the scenario you describe is budget.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> _"Clearly Ballmer will assume a more direct role in Windows management, with Windows VPs Julie Larson-Green and Tami Reller now reporting directly to him."_

The sexism upon which this statement is partially premised aside...

I have an entirely different take on this promotion. Microsoft has been run by a pair of consuls, Ballmer and Gates, for a long time. One focused primarily on the business side, the other upon the technology.

At this point it is only prudent for them to look at leadership succession. Larson-Greene has real technical chops and has worked on compilers, Office, UX, and Windows. Teller went from receptionist to CFO at Great Plains, leading them through both an IPO and Microsoft's acquisition.

It is clear that the future leaders will be from the post IPO generation of Softies. It may be clear now that the tradional pointed elbows approach to the throne is frowned upon.

<comment><USER12> >The sexism upon which this statement is partially premised aside...

What?

<comment><USER9> Why does direct reporting indicate Ballmer is taking a more direct role in Windows management rather than indicating that both Larson-Greene and Reller have been given a degree of authority equivalent to that Sinofsky had?

Sinofsky was reporting directly to Ballmer before his resignation. If he was fired, of course Ballmer fired him himself. Sinofsky was his direct report.

People only report directly to the CEO because they are seen as capable of acting largely with autonomy. It's a sign of trust, not incompetence.

The conclusion that Ballmer would micromanage Larson-Greene is absurd. He doesn't have the technical chops. The suggestion that he would do so with Reller, ignores her demonstrated professional competence.

The most likely case is that Sinofsky is gone so that they could be promoted. This probably wasn't a crisis, but something brewing for a long time. The issues with Office under Windows 8 RT were due to structural issues with Sinofsky's management approach.

It's the "Clearly" that makes it sexist.

<comment><USER13> CEO removes subordinate and has product heads reporting directly to themselves. Clearly, the CEO wants to take a more active interest in product development.

Point out the sexism.

CEO is female and product heads are male, point out the sexism CEO is male and product heads are male, point out the sexism.

CEO is male, product heads are female. Without any more information then that, you saw sexism. Point out the issue. You are making huge leaps to conclusions that are just not supported by the information given.

<comment><USER9> Sinofsky reported to Ballmer. His replacement(s) report(s) to Ballmer. How is a more active role by Ballmer "clearly" indicated?

<comment><USER13> Sinofsky was President of the Windows Division. He is being replaced by two VP's. This implies a removal of one level of management, placing the CEO closer to the product team.

<comment><USER9> It only places Ballmer closer to the team if one presumes that Sinofsky was not part of the team.

It only implies removal of a layer of management if one doesn't see Reller and Larson-Greene as having been promoted.

The appearance of Larson-Green and Reller on Microsoft's Senior Leadership Page supports my thesis.

<https://www.microsoft.com/en-us/news/exec/slt.aspx>

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> The article shows two women in two different pictures with no sub-titles. Are these just random stock photos or is one of them Sinofsky? If so, who is is the other?

<comment><USER15> "...Windows VPs Julie Larson-Green and Tami Reller..."

Had to mouse-over to figure that out.

</comment></comment><comment><USER16> Is there a chance Gates would go back to Microsoft? Jobs did go back to Apple to revive it.

<comment><AUTHOR> I keep wondering the exact same thing and yeah people alway say 'now way' but you have to wonder, as a founder, it's got to be hard to watch your former company struggling so hard at this point.

I keep thinking back to the mid-90's when Gates sent out his famous internet tidal-wave email; that was how he reacted to a threat to MS's longterm survival - a huge pivot away from multimedia, cds/dvds (remember Encarta?) to focusing everything on the Internet.

Ballmer in 2005 facing a similar tidal-wave does what? Laughs and mocks the iPhone then the iPad. Had he reacted as Gates had and pivoted the entire company then instead of 6+ years later with Window 8/Surface, who knows where they'd be right now.

<comment><USER3> Or maybe he has a different perspective on what would constitute "struggling". The company did post its highest revenues ever this year, right?

<comment><USER17> I think the idea is that for a company with as much resources as Microsoft, _"doing really well"_ is not actually all that great. They should/could be an absolute juggernaut.

</comment></comment></comment></comment><comment><USER18> This hatchet job reads like Ballmer put it out to make it seem like he's a great manager and did a wonderful thing firing Sinofsky. I smell "The Submarine," the unseen hand of a PR company carefully managing public perception.

</comment><comment><USER19> Sinofsky was a great tech leader and shipper of products. The people who replaced him seems weak sauce.

I'm not sure if firing someone creates faster progress in an area vs. just shipping more products.

<comment><USER20> Yes, this is a strange article. The reality is that MS were way behind the tablet curve, having plugged the same old tiny buttons, traditional Windows, use a stylus, furrow for years and years.

Bolting Metro onto Windows 7 is likely to please very few, least of all corporate customers.

If Sinofsky is as bad as painted, could he really have turned around the Longhorn mess, salvaged Vista, then reshaped the organization to do a fantastic job with Windows 7?</comment></comment>


FBI head defended encryption for WhatsApp before becoming fierce critic - <AUTHOR> https://www.theguardian.com/us-news/2020/apr/30/fbi-head-christopher-wray-opposed-encryption-under-trump-once-defended-whatsapp <comment><USER2> Some people will read this story and see contradiction or hypocrisy.

And they're right, of course.

But there's also another thing at play here: Perverse incentives.

If your job becomes easier when security becomes harder, you will find yourself fighting against better security. This is as true of FBI directors as it is software engineers fighting against deadlines.

I don't think we can ever expect the FBI to align itself with what's right for individual Americans and our freedom.

<comment><USER3> Wray is a lawyer and will promote whatever side is paying him. He's now a politician (and was never really a technologist) so hypocrisy is a required trait.

<comment><USER2> An unsolved problem with humans is there really isn't a good mechanism for separating "has integrity" from "pays lip-service to the notion of having integrity" at scale.

<comment><USER4> In an adversarial system integrity can mean being a vociferous proponent of something you personally don't believe should come to pass as the system relies on each side making the strongest possible argument. Or to put it another way, an adversarial system _is_ an attempt to solve the dilemma you pose. Notably, the Director isn't explaining why he's forcing WhatsApp to decrypt; he's attempting to persuade others why he should be given the power. Those are very different things.

The contemporary American political system, perhaps even more so than its legal system in many respects, is quite adversarial.[1] And the Director of the FBI has been a largely political position since J. Edgar Hoover, except these days the lobbying is far more transparent.

[1] Arguably far too adversarial. We don't seem to appreciate the value in compromise or pragmatism as much as we did at some other points in our political history.

</comment></comment></comment></comment><comment><USER5> Changing opinions is fine. Did he change because now as a LE officer he sees actual need for looser crypto? Or is his change of opinion purely political? This article does nothing to discuss that.

<comment><USER6> I actually think one way to change opinions of OTHER people is to show some respected individual that changed his mind. There doesn't even need to be an explanation.

</comment></comment><comment><USER7> How do the authorities "win" when they demand backdoors for individual citizen's activities/devices but companies are expected to protect their activities at all cost and access can only be theoretically gotten through court order?</comment>


Next-Gen Under-the-Display Touch ID Could Use an Array of Pin Hole Cameras - <AUTHOR> https://www.patentlyapple.com/patently-apple/2019/05/next-gen-under-the-display-touch-id-could-use-an-array-of-pin-hole-cameras-to-capture-biometric-data.html <comment><USER2> Another thing that is advertised as privacy protecting but will inevitably be abused as usual. And then, when inquired, abusers will say: ops, sorry, by bad. And now that Apple already made it remotely possible, even if Apple don't produce it, some other privacy protecting company will. And because governments all around the world have dreamed with all this privacy abusing devices for years, and ordinary people are shamelessly being misleading, nothing will truly change and business will go as usually.</comment>


Automated UI Testing for Web and Native Apps on iOS and Android - <AUTHOR> http://www.slideshare.net/operationmobile/automated-ui-testing-for-web-and-native-apps-on-ios-and-android-10261455

<comment><USER2> Something that is not clear to me is how the iPhone native testing would happen. Is selenium webdriver also capable of driving an iOS native app?

<comment><USER3> You can, using Frank. <https://github.com/moredip/Frank>

It uses cucumber to drive the tests. It's still kind off experimental, but it's starting to become pretty good.

<comment><USER4> another option is Kif (<https://github.com/square/kif>) an iOS integration/UI testing tool developed by Square.

we've had some good experiences thus far testing some of our newer iOS projects with Kif

</comment></comment></comment><comment><USER5> For web testing, I highly recommend watir. Selenium couldn't handle modal dialogs well enough for me and watij kept crashing. Watir's been able to handle anything I've thrown at it so far.

</comment><comment><USER6> No FoneMonkey? <http://www.gorillalogic.com/fonemonkey></comment>


Yahoo Launches Green Icon Contest - <AUTHOR> http://www.webpronews.com/topnews/2007/08/10/yahoo-launches-green-icon-contest <comment><USER2> I thought it wasn't about "Green" but this green: <http://www.aboutus.org/UniversalWikiEditButton></comment>


Visualizing Erowid: data-driven anthropological research on drugs - <AUTHOR> http://chemicalyouth.org/visualising-erowid/ <comment><USER2> > The results that we present on this website provide both a glimpse into > practices of reporting drug use, into actual patterns of drug consumption, > and into the possibilities of a digitally literate anthropology.

Erowid only publishes about a third of submitted trip reports, and tries to publish ones they feel are representative of some aspect of the range of possible experiences. (E.g. if there are 100 possible effects of a drug, they're only going to publish 3 or 4 trip reports that are primarily about effect X.)

So while casually interesting, the authors are pretty irresponsible for not explaining the limitations of the dataset.

</comment><comment><USER3> First heard about Erowid in this recent New Yorker article:

[http://www.newyorker.com/magazine/2015/11/23/the-trip- planne...](http://www.newyorker.com/magazine/2015/11/23/the-trip-planners)

I found this article and the testimonials from the website itself a bit more interesting than the visualizations here.

The New Yorker article describes Erowid's role as a reference source for the medical and research community. I get the impression from the writeup here that this project, associated with the University of Amsterdam, scraped Erowid to collect the data. I hope, as researchers, they'll make the data open for others to explore and extend.

</comment><comment><USER4> As somebody who has never even experimented with this stuff, I have a pretty fundamental question:

How do the people who submit these reports know what they're using, and how much?

The stuff you're after might be cut with other stuff. What you call X might be completely different from what somebody else calls X, or maybe your seller didn't have any X, gave you Y, and told you it was X.

Even if you know _what_ you're using, how do you figure out the purity so you can determine the dose? Even relatively unprocessed drugs, like cannabis, vary wildly in THC content.

It seems to me like there's a veneer of rigor here that's probably deceiving.

<comment><USER2> > How do the people who submit these reports know what they're using, and how > much?

MDMA, cocaine, and heroin are frequently cut with other substances. But that's less of an issue with the other 500+ drugs on the site, especially since many of them are legal to begin with. The moderators also triage out questionable reports that seem suspiciously atypical.

The ambiguity actually arguably makes the site more rigorous though rather than less, given that the goal is present a bunch of different scenarios that may or may not happen to any individual.

</comment></comment><comment><USER5> Kind of wish that some of this was done with crossfilter.

</comment><comment><USER6> It has been painful to see Erowid go downhill.

Back when I was young you would read articles like "I smoked pot. I had fun."

Now you get articles that somebody mixed 5 different things they got from china and then took a fistfull of downers and had a beer and then they are laying on the ground incapacitated, roll slightly and the baggie of pills falls out, and the EMS people go from concerned and friendly to mean and vindictive and the cop gives them a little kick and then at the hospital they get a talking out.

Nancy Reagan couldn't make a better site to make people "just say no"

Then there was the guy who took datura and thought people were stealing his car and he went in to get his dad and when his dad was out there he saw the car with all the doors open and lights on and engine running and he's like WTF.

<comment><USER7> Seems like you read the Cannabis vault when you were young.

Now you're reading the Datura vault. (read: one of the most traumatizing drugs to ever grace the surface of the earth)

Therefore, Erowid has been going painfully downhill?

I assure you, there have _always_ been experience reports of people doing crazy, dangerous shit. Anyways, additional reports can only increase the quality and usefulness of the site. The moderation is the same as before. The old reports are still as valid as ever (from a clinical POV) and the new ones add more data points; in the case of mixes, these data points are all the more unique and valuable.

<comment><USER6> I think there is a self-selection towards people for whom getting f _ked up is a full time job. I wouldn 't want to write anything about an experience I had there because I don't want to rub shoulders with those others.

Even the cannabis group is leaning toward stories along the lines of "I threw a joint at the propane tank and boy..."

I see the same thing on medical support groups of all kind. When I had patellofemoral syndrome and was trying to heal I found I'd get shouted down by people who said that they saw the best orthopedic surgeon in the country and this guy told them his knees were the most f_ked up he'd ever seen and he was so inspired he wanted to be an orthopedic surgeon when he grows up.

Somebody like that wants to revel in being sick and has nothing to offer to anybody who wants to heal.</comment></comment></comment>


Famous directors make porn, too -- but they only show it to each other - <AUTHOR> http://megazinemagazine.com/cream/

<comment><USER2> If you're going to post fiction here --- and I'm really not sure that people want fiction posted here --- could you mark it as fiction in the link text, so that people who do not follow the link are not mislead into thinking the title is factual?

<comment><USER3> agreed, it took a while before I realized it was fiction.

good story, though.</comment></comment>


In 1919, an Army convoy drove cross-country from Washington to San Francisco - <AUTHOR> https://www.washingtonpost.com/history/2019/07/07/driving-cross-country-was-crazy-idea-an-army-convoy-set-out-show-it-could-be-done/ <comment><USER2> For some time context, the first New York to San Francisco telephone call was in 1915:

"Six months later, amidst the celebrations surrounding the Panama–Pacific International Exposition, on January 25, 1915, Alexander Graham Bell, in New York City, repeated his famous statement "Mr. Watson, come here. I want you," into the telephone, which was heard by his assistant Dr. Watson in San Francisco, for a long distance call of 3,400 miles (5,500 km)." [https://en.wikipedia.org/wiki/First_transcontinental_telepho...](https://en.wikipedia.org/wiki/First_transcontinental_telephone_call)

<comment><USER3> I wonder if that was _really_ the first call across that line, or just the 'official first.' I know if I was one of those technicians trying to make sure everything was ready to be demoed by the biggest celebrity in American telephony, I'd probably test it myself first to make sure I wasn't wasting Bell's time working the kinks out of the system.

<comment><USER4> I also assume that as you're unspooling the line across the entire United States, you are also stopping every few miles and calling back to make sure the line is working.

</comment></comment></comment><comment><USER5> With Dwight Eisenhower on board.

> The heavy vehicles had damaged or destroyed 88 bridges and caused 230 road > accidents.

No wonder he considered creating the Interstate system to be a critical piece of infrastructure.

<comment><USER6> According to Wikipedia, they also repaired the damaged/destroyed bridges. Strange omission from the article.

"The convoy broke and repaired 88 wooden bridges" [1]

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

<comment><USER7> The most remarkable part of that is that they were willing to risk breaking bridges then broke them then fixed them on their own without being sued into doing so by the municipalities that owned the bridges. It truly was a different time.

<comment><USER8> Not sure why you're so shocked. This was standard practice back in the day for measuring & testing bridge capacity; you'd build the bridge then drive a bunch of heavy trucks over it until it breaks, then rebuild the bridge. That's just how things were done.

Reference: [https://www.gocomics.com/calvinandhobbes/1986/11/26](https://www.gocomics.com/calvinandhobbes/1986/11/26)

<comment><USER9> Sounds like modern day software development.

<comment><USER10> MVB. Minimally Viable Bridge.

</comment></comment></comment></comment></comment></comment><comment><USER11> > The auto lobby hoped a transcontinental convoy would grease the wheels for > increases in highway appropriations and drive profits for the sign-making > industry.

Neat, just like how gov projects still get done today.

<comment><USER12> To me one of the most sobering experience of my life was visiting Hoover Dam.

Yes, they needed a consortium of companies because no one company was big enough, they built a railroad, a town, the concrete is still curing, yadda yadda yadda.

But for me the biggest moment was at the end of the filmstrip, they said "the government contract was delivered early and under budget." I nearly fell out of my seat.

No way that ever happens today. Not only the Accentures, GD, Northrup Grummans of the world, but even the little guys like the ones I used to work for all use up every dollar available on the contract. If the contract is worth $291 million, then dammit you bill the government $291 million and not a dollar less! If anything you're figuring out how to do a contract mod to squeeze them for more money.

It's amazing that, together, multiple of the largest construction companies in the United States, not only got the job done in record time, but left money on the table. I'd like to think it might happen again because that's the type of thing that makes me proud to be an American.

<comment><USER4> The Human Genome Project was officially complete in 13 years, instead of the 15 years originally estimated. I'm not sure how it did budget-wise.

<comment><USER13> That's because of independent researchers forcing the government's researchers to go faster. They didn't want to.

</comment></comment></comment></comment><comment><USER14> I just got back from a 2000+ mile road trip. I'm so thankful highway conditions have improved over the past 100 years.

</comment><comment><USER15> "Some of the chaos was deliberately engineered mischief. One evening in Wyoming, Eisenhower convinced the soldiers that their camp was vulnerable to attack by Native American warriors."

Possibly the ultimate "Oh man this guy..." moment for the soldiers ;)

The guy who discharged his weapon later maybe thought "Ok fine let's play along and put an end to this..."

<comment><USER16> And Eisenhower chasing down the messenger to the War Department: "Crapcrapcrap, this is getting out of hand!"

</comment></comment><comment><USER13> For those interested here's Lincoln Highway Assoc. map of the route: [https://www.lincolnhighwayassoc.org/map/](https://www.lincolnhighwayassoc.org/map/)

I plan on driving it by next year.

<comment><USER17> That sounds awesome.. One of my future road trips is to follow Highway 20 from the Oregon Coast to Boston (the longest highway in the US)

<comment><USER18> Stop by and say hi here in Bend!

Also: if you're not simply interested in following the route just to say you have, 26 east is _much_ more interesting than 20 east of Bend.

</comment></comment></comment><comment><USER19> If you've watched Ken Burns documentary series* (it's on netflix) about The West, the comical anecdote about a faked attack by the clearly irrelevant natives isn't so funny any more.

*I had to give up after a few episodes, it was too depressing.

</comment><comment><USER20> Probably relevant is "Horatio's Drive: America's First Road Trip", by Ken Burns - the story of the first drive across the United States, in 1903.

It's streaming on Amazon Prime at the moment:

[https://www.amazon.com/gp/video/detail/B002P3IM3C/ref=atv_dl...](https://www.amazon.com/gp/video/detail/B002P3IM3C/ref=atv_dl_rdr)

</comment><comment><USER21> I wonder who the first president to ride a Chinese bullet train will be and say we need one of those in the US?

<comment><USER22> No way not going to happen. The only way this will happen is if 1) they find a way to make high speed work on the NA railway gauges and 2) you convince the cargo companies to make passenger a priority.

1) seems like an engineering problem and 2) seems like a pipe dream.

Option 3) would be build dedicated high speed lines. Unless you're a developing nation it sounds way too expensive. Especially a rail system as big as NA (US, Canada and Mexico are connected, maybe others in Central America).

<comment><USER23> Never underestimate the ability of some President to waste tens of millions of dollars reaching the same conclusion after doing exactly what OP suggested.

<comment><USER24> The California High Speed Rail project failed miserably, and cost the taxpayers $12.4 billion[1] to go from Bakersfield to Merced or about 160 miles (two cities nobody commutes from...but I digress).

At it's cancellation point, it was estimated to cost over $98.1 billion for a Los Angeles to San Francisco route - but we should note the cost estimates were going up $10+ billion every year they were re-estimated. The entire thing was supposed to "only" cost around $30 billion when introduced.

To make a High Speed Rail line that covers the entire United States... you're looking at hundreds of billions, up into the trillions of dollars... if not more.

At these cost rates, it's well over $200 billion for a straight line between San Francisco and New York City... but of course it won't be a straight line and it'll need to go to more places than those two cities in order to attract any sort of reasonable ridershare.

[1] [https://en.wikipedia.org/wiki/California_High- Speed_Rail](https://en.wikipedia.org/wiki/California_High-Speed_Rail)

<comment><USER25> The US is too big to make crossing it by train (even high speed) plausible when airplanes are a thing. High speed trains proved successful in medium distances. It sounds reasonable for California (LA-SF) and for east coast cities (New York-Washington), but covering the entire US is really not very useful.

However, I'm pretty sure that a large part of the costs of the California rail are related to private land, which probably isn't an issue through the majority of the route.

<comment><USER26> And China is even bigger, yet they never tried any sort of excuses.

When you factor in check in, security, getting to and from the airport which often isn't near the city, etc, high speed rail is way better. Drop in 10 minutes before you need to leave and the stations are right in the middle of town. For distances under a thousand miles, rail can easily be faster.

<comment><USER24> That is, until more Americans start riding rail and TSA gets involved and now it's exactly like an airport...

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> I mapped the route and if you followed Google Maps, your route would be very similar to the one they took in 1919.

</comment><comment><USER27> I highly recommend the book "The Big Roads" by Earl Swift if you're interested in this kind of thing.

</comment><comment><USER28> That article was good. Good length, informative, interesting. Most articles these days try to be excessively wordy and long - and end up with too much filler.

Also, good color on how someone's early experiences help shape their future. In this case Eisenhower got his highway system 37 years later with the Federal Aid Highway Act of 1956. Basically it took another World War to get this going: [https://en.wikipedia.org/wiki/Interstate_Highway_System](https://en.wikipedia.org/wiki/Interstate_Highway_System)

<comment><USER11> You don't like 3 self indulgent paragraphs of what the author was thinking and doing before the actual story starts and before every new heading? Hey me neither

Journalists trying to be writers where they insert themselves into the story and who can actually pull it off are rare. And some _have_ pulled it off successfully (which is why these people keep trying it). But so many journalists/bloggers are convinced they fit this category because they went to school for English literature, despite having little of their own literary success or a unique personality worthy of a story itself, and think they should do it for some random big story on a C list news platform. /rant

<comment><USER28> Interesting rant. I suppose that's one of the many reasons I dislike modern journalism (this New Journalism subjective style of writing ) and I appreciate you putting it into perspective.

For some reason the famous article "Frank Sinatra Has a Cold" came to mind: [https://www.esquire.com/news-politics/a638/frank-sinatra- has...](https://www.esquire.com/news-politics/a638/frank-sinatra-has-a-cold- gay-talese/)

But, a quick read through indicates that the author doesn't reference himself until 10 paragraphs down.

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

<comment><USER11> They teach New Journalism at most English courses in western universities.

Which isn't a bad thing but it's something that writers seem to cling to because it was cool at one point.

It's easy to get caught up in the advanced (or artistic) stuff before you mastered the basics. Inverted pyramids get lost in that noise [https://en.m.wikipedia.org/wiki/Inverted_pyramid_(journalism...](https://en.m.wikipedia.org/wiki/Inverted_pyramid_\(journalism\))

</comment></comment></comment></comment><comment><USER29> Not sure this community's views on Louis CK, but he had an insightful bit on cross-country travel then and now: [https://www.youtube.com/watch?v=nUBtKNzoKZ4](https://www.youtube.com/watch?v=nUBtKNzoKZ4)</comment>


Run last command as root - <AUTHOR> http://blog.hardikr.com/post/2337320222/sudo-previous-command <comment><USER2> Hi HN! I'm the post author, and if I would've known someone was submitting this to HN, I would've researched a bit more! This was more for my reference. Thanks for all the tips though, got to learn a lot from this thread..

</comment><comment><USER3> Something else really useful: mkdir stuff cd !$

!$ takes the last argument from the previous command, instead of the whole thing.

chmod 664 site/* - changes the permissions for all the files in the site directory. * is a wildcard in bash for specifying directories.

Another useful feature of bash is brace expansion: mv site{,-old} => mv site site-old The brace expansion expands the argument with the values in a comma separated list: college pic_00{1,4,3}.jpeg college.jpeg yields pic_001 pic_004, pic_003

<comment><USER4> * is a wildcard for everything in the directory including files and directories. so the chmod will remove the execute permission from directories also.

<comment><USER5> * will _not_ match hidden files:

      > ls -a tmp
        file1
        file2
        .file3
      > ls tmp/*
        file1
        file2
      > ls tmp/.*
        .file3

</comment></comment></comment><comment><USER6> The biggest shell-related revelation for me recently was that ~ is a special character in SSH. If you have an SSH session that's hanging and ctrl-C / ctrl-D isn't responding, try typing "~." (without the quotes).

      man ssh | grep -A 30 tilde

<comment><USER7> _If you have an SSH session that's hanging_

It's usually because I've accidentally fumbled ctrl-s which means 'play dead'. Why that's important enough to take a two-key home row shortcut, I don't know. The cure is to press ctrl-q. Same wonder about the cure.

<comment><USER8> I can't argue for it taking such a prime spot on the keyboard, but I used c-s/c-q every day to freeze scrolling output that I want to look at. Your terminal scrollback will still work during the pause.

</comment></comment></comment><comment><USER9> I've always pronounced this command as

"sudo make me a sandwich"

<comment><USER9> Seriously, though, "!!" is just a special case of Bash's history expansion

man bash, and search for "^HISTORY EXPANSION" for all the details.

I often find myself running commands like

cp !:2 !:1 # reverses the order of the last two args

cd /somedir && !! # run the last command in a better directory

</comment></comment><comment><USER10> I prefer Ctrl-P, Ctrl-A, "sudo ", enter

It's pretty much the same number of keystrokes aside from having to hold down the Ctrl key. However, I can now go back in my history and run the command again. Also, if I mistyped something, I can easily hit Ctrl-P and fix it without having to retype sudo.

<comment><USER11> !! (bang-bang) is expanded by the shell before its committed to your history (at least in bash), so if you hit ctrl+p, you'll get the full sudo command for running/modifying later.

<comment><USER12> In zsh, !! is expanded by the shell, but leaves the expanded command at the terminal, waiting for you to execute it. Most of the time this means I have to hit enter twice to run the command, but it's convenient when I want to explain to someone what !! is useful for.

<comment><USER13> I don't have that enabled but zsh also expands bang constructs with tab. So any commands I want to double check, or if I am demonstrating to someone, I just hit tab. Also handy for expressions like !-2:3 where if I messed up I can just hit "undo" and then retry.

</comment></comment></comment></comment><comment><USER14> Similarly, I always rehearse dangerous removals with ls :

        ls ./t*
        # looks good...
        rm !$

</comment><comment><USER15> On a related note, when you want to insert something at the start of a line in a shell, rather than hitting home, I find ctrl-a to be very useful. Especially on a macbook, where cmd-left doesn't work in a shell (for some reason) and there is no home key.

This often works in unexpected places. For example: testing it right now, I can click the address bar on google chrome, hit ctrl-a (not cmd-a) and the caret is at the start of the url.

<comment><USER16> ctrl-a (beginning of line), ctrl-e (end of line), ctrl-k (kill/copy line), ctrl-y (yank/paste line) are standard emacs keybindings. On OS X, they work in any standard NS text field as well. More at <http://www.hcs.harvard.edu/~jrus/site/cocoa-text.html>

BTW, when using screen, ctrl-a is its default action key, so use ctrl-a ctrl-a to send a real ctrl-a, or change the default screen action key in your .screenrc.

<comment><USER17> > BTW, when using screen, ctrl-a is its default action key

This ends up annoying me on a regular basis. Let's say I want to make a directory and then go to it. I would type:

      mkdir foo<Ctrl-p><Ctrl-a><Alt-d>cd<Enter>

Except when using screen, <Ctrl-a><Alt-d> (really just <Ctrl-a>d) detaches the session. It's solved easily enough ("screen -r"), but it always yanks me out of my groove.

<comment><USER16> Put something like this in your .screenrc:

       escape "^^^^"

That will set the escape character to ctrl-carat instead of ctrl-a. To type a literal ctrl-carat, type it twice.

This is the same as:

       screen -e ^^^^

<comment><USER5> I prefer to bind it to ` with `` to send a real `. It makes it _really_ easy to flip back and forth between two screen windows since last-window is now:

      `q

Now I don't even have to use Ctrl. This takes a little getting used to, but I prefer to use $() instead of `` for shell scripts (I use bash/zsh) so I don't make use of ` that often.

I _do_ have bindings on F11 and F12 to toggle the escape character between ` and C-o. (Just in case I need to paste something into a terminal with ` characters.)

(Note: This whole setup is ripped off from some StackOverflow or HN post.)

</comment></comment></comment></comment></comment><comment><USER18> One of my favorite, under-known Bash tricks: Ctrl-O. "Enter current command, put next history item on command line."

It works like this: You're doing 3 things over and over again, but you need to see each step finished before you want to go on. Something like:

>wget buildserver/artifact.jar >java -j artifact.jar > result.txt >grep "Stupid bug" result.txt >vi config.xml >git commit -a; git push

Something like that. Having done it once, up-arrow into your history to the wget, hit "Ctrl-O" and it'll execute the wget, and now the java command is ready. You can just keep cycling through with Ctrl-O, since executing the command puts it in the end of your history. If you need to update the command, the fix is available for later. One of those "use it so that you remember, 'cause boy-howdy it's handy"

</comment><comment><USER19> Have a look at zsh, you can execute your _current_ command as root quite easy. Put

      sudo-command-line() {
          [[ -z $BUFFER ]] && zle up-history
          [[ $BUFFER != sudo\ * ]] && BUFFER="sudo $BUFFER"
      }
      zle -N sudo-command-line
      bindkey "^Os" sudo-command-line

into your zshrc, enter the command and press ctrl+o s et voila ;0

For more cool stuff regarding zsh have a look at <http://grml.org/zsh/> or for other nice keybindings <http://grml.org/zsh/grmlzshrc.html>

<comment><USER5> zle = zsh line editor

(I doesn't use read-line it has it's own line editor)

</comment></comment><comment><USER20> I got this from a former co-worker and am now completely reliant:

      alias r='sudo '

Note the space after sudo in the quotes. Cuts down on keystrokes when you have to spend a lot of time sudo-ing.

<comment><USER21> The space isn't required with Bash :)

</comment></comment><comment><USER22> I never do this, I prefer to recall the actual command to see if it is correct, especially for sudo.

The reason is that you might not execute the command you were thinking of. The HISTIGNORE variable contains a quasi-regex of commands that are not stored in history. If the previous command matched that regex, you will end up executing the _previous_ command to that one, not what you wanted at all.

Why use HISTIGNORE?. So that things like 'exit' or common commands like 'ls' don't pollute your history file.

</comment><comment><USER12> I've really enjoyed Ctrl+a and Ctrl+e recently to move between the beginning and end of the command prompt - it's really a lot more useful than I initially thought.

</comment><comment><USER23> I am just curious, what determines the front page of Hacker News? Because this post has 17 points and the one below it has 130 at this time

<comment><USER24> Here's an excellent, detailed, and fairly recent explanation of the Hacker News ranking algorithm:

<http://amix.dk/blog/post/19574>

</comment></comment><comment><USER25> sudo !! _runs the previous line as root, in case you forgot to type sudo_

<comment><USER26> More like "sudo !!" prepends sudo to the last history entry and executes the result. It may not run as root, depending on the complexity of the shell handiwork you did, and depending on /etc/sudoers.

I really, really, really hope that the author doesn't think "sudo !!" is some special kind of magic, and that he knows "echo !!" works the same way.

Also, there are keyboards with a "Home" key? Most people just press C-a.

<comment><USER27> Do you know where I can find a list of hotkeys along the lines of C-a? I personally created my own hotkey (shift left arrow) but learning standard ones would probably be good.

<comment><USER5> Most shells default to emacs keybindings:

      C-a beginning of line
      C-k kill text from cursor to end of line
      C-e end of line
      M-b move cursor backwards by a word
      M-f move cursor forwards by a word
      C-w delete backwards by a word
      C-h backspace (great when real backspace doesn't work)
      C-r reverse search through command history

(C-w works in Vim(insert mode) and Emacs, but kills me when I try to type it in a browser window to delete a word... Good-bye window and/or tab)

In zsh I actually have M-w bound to the normal backspace-by-a-word and C-w bound to the vim version which will do things like count '/' as a word separator so that I can easily backspace through sections of a path rather than be required to delete the whole thing (or nothing).

<comment><USER27> Hmm, FYI most of those work in the safari reply box. I think Apple put them for all Cocoa text fields not just terminal :-)

<comment><USER28> > I think Apple put them for all Cocoa text fields not just terminal :-)

It is the NSTextField that accepts those commands. The prefix NS stands for NeXTSTEP, so the functionality existed long before Cocoa.</comment></comment></comment></comment></comment></comment>