HNHacker News
TopNewBestAskShowJobs

evanmoran

879 karma · joined March 28, 2007

Founder working on podcasting software. Previously at Bungie, Pokemon Go, and Microsoft developing storytelling tech, tools and UI.
submissionscomments
evanmoran··on Why I don't trade stocks and (probably) neither should you
This tldr is an extremely interesting essay on wealth, business, and stocks. It is ridiculously long, but takes you amazing places. Definitely worth reading!
evanmoran··on Life of solitude: A loneliness crisis is looming
When I was in college a classmate of mine would come by every day or so to my dorm. He would just hang out, talking about class or whatever. I couldn't understand why he kept coming over, but I was too polite to mention anything.

Turns out, he came by because we were friends.

In fact, we had been friends the whole time, but I didn't know it! What I missed is that the stages between meeting people and friendship look a lot like hanging out. It seems quite arbitrary -- why this activity, this person? But the hanging out stage _is_ necessary. Unless you text them, knock on their door, set up a gaming night, or go on a road trip, it is hard to grow closer.

So the next time you meet someone remember they are probably like you: a bit nerdy, a bit lonely. Just reach out and spend time with them for no reason, and then maybe, someday, you'll discover that you too are friends.

evanmoran··on Node.js Tools for Visual Studio
This seems useful for the profiling alone.
evanmoran··on Winamp shutting down on December 20th, 2013
The magic moment was when we all realized, pretty much simultaneously, that CDs and radio were obsolete. And this wasn't from some iterative Moore's Law like growth in hard drive size, it was sudden algorithmic brilliance that allowed music to be compressed small enough to be easily downloaded and shared. Suddenly digital distribution seemed inevitable and obvious. We could listen to whole collections of songs very, very fast. Old bands became popular, and we would sit around for hours playing song after amazing song for our friends. Winamp was the app that made it possible. The skins let us change its look to fit us better, and its music visualizations were an awesome backdrop for parties. A great app and a great time.

We live in the future.

evanmoran··on After traffic stop, man forced to have x-ray, enema, anal probes and colonoscopy
No he wouldn't. What happened was horrible beyond words, but that does not justify murder.
evanmoran··on Skype does a clever trick when bandwidth is scarce
Really cool idea. The next step is to use basic face detection to focus towards the largest face in the stream.
evanmoran··on Firefox 25 is released
My understanding is Vertex Array Objects are one of the core browser improvements that asm.js taps into to make C++ based game engines (unreal, rage, unity) crazy fast.

http://www.extremetech.com/gaming/154994-epic-mozilla-releas...

evanmoran··on Namecheap now offer .io domains
I use this for all my domains not with namecheap. It really makes managing things much easier.
evanmoran··on Why Python uses 0-based indexing. It's because of slices
It doesn't matter how cool the slice notation is when people have trouble accessing single elements!

1 based is better for human counting and 0 is better for certain mathematical expressions, usually when thinking about offset from the start rather then list position.

Clearly it is a judgement call, but I personally think counting is more important for the same reason PI is wrong. We are confusing ourselves because easy things aren't intuitive.

Imagine you have:

var list = ['first','second', 'third']

`list[2]` should clearly be the second element (not third), just as PI / 2 should mean half a circle (not 1/4).

We wonder why there aren't as many computer science / math grads. Well in every intro class in the world people are getting confused by this.

evanmoran··on Dr. Arjun Srinivasan: We’ve Reached “The End of Antibiotics, Period”
Choosing between vegetarianism and pandemic isn't a hard choice=).
evanmoran··on Dr. Arjun Srinivasan: We’ve Reached “The End of Antibiotics, Period”
The issue is any antibiotic that could be used to cure humans should be used for nothing but curing humans. Every use of it rolls the dice that the bacteria will evolve an immunity to that drug. There isn't any "safe" use. Bacteria will eventually evolve and we can only reduce the amount of evolutionary pressure being applied.

So in short, yes the problem is giving it to animals.

evanmoran··on FBI raids alleged online drug market Silk Road, arrests owner
Different cat photos!
evanmoran··on How Evan Moran replaced CSS/HTML/JS with OJJS
That is a good way to think about it. As programmers we are used to objects that give us methods and properties to change them. A Form object should have a submit function, a Table object have a addRow, removeRow function. OJ does this for the web.
evanmoran··on How Evan Moran replaced CSS/HTML/JS with OJJS
The separation is definitely still a good thing -- OJ isn't trying to break it! The only difference is now some of that separation can be done in code. Think separate functions or js files. One that creates the site and one that styles it. The separation doesn't have to be a completely separate format, it turns out functions are quite good at abstraction=)

That said almost every example on the site is just creating HTML and JS (not CSS), so it would be very easy for you to use OJ to create everything and then style everything with .css files like you always have. So use it however you want, but please don't think it is trying to force markup and formatting together!

evanmoran··on How Evan Moran replaced CSS/HTML/JS with OJJS
Ok, good point, I probably could have responded better=).

What I was trying to say was that a lot of people focus on OJ's ability to create html/css and think that that is what it is for. They think that that means you can't CSS the way they are use to: with a designer created .css file. This isn't the case!

Instead OJ is about making reusuable website objects -- check out the plugin page: http://ojjs.org/plugins.html. You can make a YouTubeVideo in one line, but, just as importantly, the OJ plugin lets you change the video's volume or pause and play. In short, OJ creates web building blocks that can live edit what they create.

evanmoran··on Windows Phone nears 10% share in Europe
The thing is the Windows Phone is actually quite good. In many ways it is better then Android (consistency across the OS & apps, Visual Studio is better then Eclipse, C# better then Java). Much, if not all, of the bold choices around flat visual style have now born out as great choices. Lots of things going for them. Pretty cool seeing it born out in higher adoption numbers.
evanmoran··on Steam Controller
Sadly, at the bottom of this announcement they say "What’s next? We’re done with our announcements." Which seems pretty definitive.
evanmoran··on SteamMachines
This naming saddened me, maybe in part from remembering the awesomeness that was OrangeBox.

http://en.wikipedia.org/wiki/The_Orange_Box

evanmoran··on SteamMachines
Valve does love achievement unlocks!
evanmoran··on SteamOS
As someone mentioned this is just the first announcement of three: http://store.steampowered.com/livingroom/

Announcement 1, SteamOS: is just a fancy way to say you can create custom Steam consoles by just installing some software. Make the box as good or a cheap as you want and everything will just workPretty awesome, but definitely this will be dwarfed by...

Announcement 2, people are guessing is a Valve distributed "SteamBox": a console that is presumably very cheap and linux based. This would give Xbox One and PS4 a run for their money and with the social aspects of Steam built-in, this could be a break out hit with a price of 50% all the other consoles.

Announcement 3, is the large unknown here. We don't know what it is, but if it is bigger (or equal to) SteamBox this could be a huge deal. Nothing really makes sense here. We know:

* SteamBox will support streaming from your windows/mac machine so it will be able to run every game at launch.

* SteamBox will likely have lots of publishers signed on. Probably as many or more then on xbox one / ps4. If they are already using an engine that targets multiple platforms (Unreal or Unity) they are definitely going to try to support it.

* SteamBox will likely support all the features of steam with friend lists, chat, voice, purchasing over the cloud, etc. So the + might mean sharing, but a new kind?

* SteamBox supports game sharing at a friends or family level. I see this as a kind of Netflix-like persona idea: an account gains separate personas that each have different friends lists and achievements. Very powerful and necessary once Steam hits the living room and multiple people are using the same box / account.

What it could be:

* LAN play for SteamBoxs on the same network (announced in Dota, this could explain the circle + circle graphic). Maybe you share the game between friends, and stream to the other boxes? That would be pretty awesome.

* Game streaming from other people's SteamBoxs? This would be an awesome way to share a game. It is like onlive but for distributed for everyone (seems unlikely. That kind of streaming would stop your friends from being able to play).

* A launch title like Half-life 3 (seems unlikely with the circle + circle logo implying you need multiple SteamOS instances).

* A new kind of social experience, maybe a built in way to be a part of the game creation process or improved social network experiences on Steam (seems unlikely to be big enough to be the final announcement)

* A new kind of hardware like a VR headset(seems unlikely, as cheap will be a big feature of this box)

This is marketing at its best. They hooked us good.

evanmoran··on No more CSS and HTML, just JS
Zepto would definitely work. Just using event binding and selectors.
evanmoran··on No more CSS and HTML, just JS
OJ actually supports the ability to Theme objects which makes it much simpler to create design abstractions like you're talking about. It was inspired by the Bootstrap approach for customizing the look of different elements. The basic notion is OJ creates a CSS class that you can add and remove from an object to change its look. This can be done in a separate file (or even plugin) for designers to configure separately.

Here is a JSFiddle I made to demonstrate. This isn't even in the docs yet, so I made this just for you=).

http://jsfiddle.net/evanmoran/RmM96/

evanmoran··on No more CSS and HTML, just JS
This is really insightful. Thank you for giving it serious thought=). The main reason to make them different is I saw them as different use cases: the client-side folks just want a single script (oj.js) include to make things easy to get started with. The server-side people are already comfortable with the Node npm module system and so using `require` to include different files / modules made sense. I mostly didn't want to force everyone to use a command-line tool / Node just to use OJ.

That said, I completely agree and hope over time more and more people will embrace the server-side way as it makes downloading and updating plugins really simple. Maybe in time that path should be emphasized more.

evanmoran··on No more CSS and HTML, just JS
Thanks man. Really appreciate the positive thoughts=).
evanmoran··on No more CSS and HTML, just JS
Thank you for reading the site so closely you actually noticed=). The side-effect notation I absolutely cringe inside for, and this (along with the jQuery dependency) probably took the most soul searching.

What it came down to is this behavior leads to a really nice syntax inspired by the excellent coffeekup js templating language (http://coffeekup.org/). The key is you can't really do computation or logic in anything but a function so using functions for nesting elements leads to elegant code. For example you could generate `li` tags inside of a `ul` tag: ul(function(){for loop{ li(...)}}).

That said, you don't have to use the functional notation to use OJ. All the functions and plugins support an _ variant (_YouTubeVideo, _div) that don't emit, and in addition everything in OJ can be written with a list syntax I call OJML. The syntax looks a bit like lisp and is actually what the functions, plugins, and css are all generating: [div, {'class':'my-cls',[YouTubeVideo,'url/to/video']].

evanmoran··on No more CSS and HTML, just JS
Since OJ can render server side it should come down to people as the HTML/CSS screen readers know and love. One way to think about OJ is as a fancy new Jade-like templating system. If screen readers work off of Jade (and I believe they do) then they should work off of OJ as well.
evanmoran··on No more CSS and HTML, just JS
Great feedback, thank you! If you don't want a jQuery dependency then you probably don't want OJ =).

As for the CSS support it is actually quite elegant. Maybe 100 lines with full support for '&:nested' selectors, and nestable '@media' query support.

One thing that I've been considering is right now 40-50% of the oj.js filesize is support for the Form Elements (TextBox, ListBox, CheckBox,Button) and the "collection" elements (BulletList,NumberList,Table). I'm still considering pulling these out of the core and making them plugins. The issue is they manipulate the basic tags (input,textarea,table,ul,etc) so they seem pretty fundamental. Is that something you would want?

evanmoran··on No more CSS and HTML, just JS
This is my favorite comment by far. Dare I say this could be the the work of the Illuminati? =)
evanmoran··on No more CSS and HTML, just JS
Thanks for the suggestion about the plugins. I think you are right they aren't emphasized enough=).

As for separating templating from the View it is a good point. In OJ you can use functions to create templates (or partials) since everything is just code.

I did find the unification of structure (HTML) and code (JS event bindings) quite helpful because this way the code that needs to find the HTML to bind an event is the very same code that created it. This removes the need to have class names / ids just so you can refer across HTML/CSS/JS boundaries.

evanmoran··on No more CSS and HTML, just JS
The real goal is create objects that act as reusable building blocks for the web. The tag functions like h1/div are just a stepping stone to get there. The real point is to help everyone make a YouTubeVideo or a TwitterButton with one line of code=).

Check out this JSFiddle to make Vimeo videos!

http://jsfiddle.net/evanmoran/yPXuL/

← PreviousPage 9 of 12Next →