惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Schneier on Security
博客园_首页
量子位
博客园 - 司徒正美
S
SegmentFault 最新的问题
J
Java Code Geeks
小众软件
小众软件
博客园 - 【当耐特】
The Register - Security
The Register - Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Microsoft Azure Blog
Microsoft Azure Blog
G
Google Developers Blog
Blog — PlanetScale
Blog — PlanetScale
T
Tailwind CSS Blog
博客园 - Franky
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
G
GRAHAM CLULEY
Cyberwarzone
Cyberwarzone
腾讯CDC
Apple Machine Learning Research
Apple Machine Learning Research
V
Visual Studio Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Hacker News
The Hacker News
aimingoo的专栏
aimingoo的专栏
V
Vulnerabilities – Threatpost
P
Palo Alto Networks Blog
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
F
Full Disclosure
D
DataBreaches.Net
Martin Fowler
Martin Fowler
Cisco Talos Blog
Cisco Talos Blog
L
LINUX DO - 最新话题
云风的 BLOG
云风的 BLOG
C
Check Point Blog
T
Threatpost
Google DeepMind News
Google DeepMind News
WordPress大学
WordPress大学
W
WeLiveSecurity
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
L
Lohrmann on Cybersecurity
Last Week in AI
Last Week in AI
T
Tor Project blog
T
Troy Hunt's Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
Security Affairs
SecWiki News
SecWiki News

Secret Weblog

Becoming More Xee: A Modern XPath and XSLT Engine in Rust Looking for new challenges! Repeat Yourself, A Bit The Curious Case of Quentell The Humble For Loop in Rust The Humble For Loop in JavaScript Don Question Best Practices I Was a 1980s Teenage Programmer Part 5: Achieving Assembly I Was a 1980s Teenage Programmer Part 4: The Call of Assembly The Tooling Shift I Was a 1980s Teenage Programmer Part 3: MSX-2 JavaScript: when you need two ways to do it! Empowering Programming Languages Bloat and Retrofuturism Refreshing my Blog Again Random Rust Impressions Apilar: An Alife System I Was a 1980s Teenage Programmer Part 2: Olivetti M24 I Was a 1980s Teenage Programmer: the Alphatronic SolidJS fits my brain Is premature optimization the root of all evil? Framework Patterns: JavaScript edition Roll Your Own Frameworks Framework Patterns Secret Weblog Highlights Refactoring to Multiple Exit Points mstform: a form library for mobx-state-tree Seven Years: A Very Personal History of the Web Morepath 0.16 released! Is Morepath Fast Yet? Introducing Bob Strongpinion Punctuated Equilibrium in Software Morepath 0.15 released! Impressions of React Europe 2016 Morepath 0.14 released! Morepath 0.13 now with Dectate Dectate: advanced configuration for Python code JavaScript Dependencies Revisited: An Example Project The Incredible Drifting Cyber A Brief History of Reselect The Emerging GraphQL Python stack Thoughts about React Europe Build a better batching UI with Morepath and Jinja2 GraphQL and REST Server Templating in Morepath 0.10 10 reasons to check out the Morepath web framework in 2015 A Review of the Web and how Morepath fits in Morepath 0.9 released! Better REST with Morepath 0.8 Morepath 0.7: new inter-app linking They say something I don Life at the Boundaries: Conversion and Validation BowerStatic 0.4 released! Morepath 0.6 released! Morepath 0.5(.1) and friends released! New HTTP 1.1 RFCs versus WSGI Against On Naming In Open Source My visit to EuroPython 2014 Morepath 0.4.1 released (with Python 3 fixes) Morepath 0.4 and breaking changes Announcing BowerStatic Morepath 0.3 released! Morepath 0.2 Morepath Python 3 support The Call of Python 2.8 Morepath 0.1 released! WebOb and Werkzeug compared Morepath: from Werkzeug to WebOb Racing the Morepath: SQLAlchemy Integration The Centre Cannot Hold Breaking Morepath Changes Morepath Update How to do REST with Morepath Morepath Security the Gravity of Python 2 #python2.8 discussion channel on freenode Alex Gaynor on Python 3 Morepath Documentation Starting to Take Shape Back to the Center Morepath App Reuse Implementing Grok Grok: the Idea Why Linux Works for Me On the Morepath Reg, Now With More Generic! The New Zope as a Web Framework Jim Fulton, Zope Architect Renewing Zope Object Publishing The Weirdness of Zope The Rise of Zope My Exit from Zope Reg: Component Architecture Reimagined Obviel 1.0! JS Dependency Tools Redux Obviel 1.0rc1 released! Succinct data structures
JSConf EU 2013 impressions
Martijn Faassen · 2013-09-17 · via Secret Weblog

Yesterday I returned from JSConf EU in Berlin. I enjoyed the conference and I'll share some of my impressions here. It's not going to be a complete report; I met a lot of people and had a lot of conversations.

This was my first JSConf. I've been to a lot of Python conferences in the past. I was a bit nervous as for the first time in years I was going to a conference where I didn't really know anybody, but that is also an important reason why I was going - since a large part of what I do now in web development is JavaScript, I wanted to engage with its community.

Travel to Berlin

It turns out it's really easy to travel to Berlin from where I live in the Netherlands; go to the small (and thus less stressful) airport Eindhoven nearby by train, fly for an hour, and land in Berlin.

Since I had a bad experience with delayed check-in luggage earlier this year and it was just a weekend trip this time I decided to I travel very light; just my laptop backpack with clothes stuffed in.

The plane was very full, many with maximum-size carry-on luggage. I was in the plane early so had my backpack stowed already. Until a lady who absolutely did not want her suitcase to be put in the hold pulled out my backpack and tried to fit it into a space elsewhere too small for it, and then gave it to me, putting her suitcase in the now open space. Problem solved!

This attempt to saddle me with my backpack and her problem wasn't really appreciated by me, and I had to insist she take her suitcase out again. Later on she was still arguing with the flight crew.

In the taxi ride from the airport to the hotel I had a little chat with the taxi driver, in German. I understand German pretty well, but my spoken German is pretty broken. I have no idea how it came up, but suddenly the driver asked:

"So do you think the Americans landed on the moon?"

Being a fan of scientific skepticism had prepared me for this sudden question, and I explained that they had left a mirror on the moon that you could bounce lasers off, and that faking the moon landings would have had to have been a conspiracy of monumental proportions with professionally-interested-in-the-truth scientists and engineers and the Soviet Union both being involved.

"So they did land on the moon then," he said quietly, seeming to marvel at the thought. And it is a marvel.

My broken German had been up to the job, which amazes me still. Next he asked me what programming languages I used!

Talks: overall

The choice of talks was interesting; many of the talks were not so much about JavaScript technology and discussed other human topics associated with it -- art, ethics, creativity, design, usability. This led to a mixture that helped the whole being more inspirational than if all the talks had just been about tech all the time.

I will discuss some of the talks that stood out of me. This is necessarily going to be selective - there were plenty of great talks I'm not going to mention, and many more that I missed altogether as there were two parallel tracks.

I've tried to put in links to slides where I could find them. Videos should also eventually appear on the JSConf EU youtube channel.

Talks and People: Day 1

Patrick discussed some basic principles of parsing and discussed two projects:

  • esprima, a JavaScript parsing library that I had become aware of because of my explorations of the Polymer project, which uses it in its implementation of the MDV templating system. It was very helpful to see Patrick present a few examples of how it can be used.
  • PEG.js, a parser generator (along the lines of yacc or bison) for JavaScript. I hadn't been really aware of this project before, but from the examples it looks like it's really easy to construct parsers with it. I'll enjoy adding this as a tool to my toolbox.

I had a few interesting conversations with Patrick afterward throughout the conference. Thanks!

slides

A comparison of the two-way binding in AngularJS, EmberJS and KnockoutJS - Marius Gundersen

This talk was of particular interest to me because of my interest in client-side web framework design in general, and my interest in adding two-way binding to Obviel in particular.

He compared approaches in various ways:

  • Observable properties (versus dirty checking)
  • Asynchronous response to changes
  • Computed properties
  • Dynamic dependencies (recomputation only happening when needed)
  • Performance (each has different tradeoffs)

Marius is Norwegian by the way; I kept meeting friendly Norwegians at this conference - they seemed particularly well represented.

slides

Security talks

I saw three security related talks at this conference. I need to read some of the references the speakers give in their slides, and maybe you should too:

  • Towards a post-XSS world - Mike West (slides)
  • JavaScript crypto. Ugly ducking with good reason? - Martin Boßlet (slides)
  • Security First - Adam Baldwin (can't find the slides yet) (this was on day 2 actually)

UXing without a UXer - Chrissy Welsh

I had the pleasure to chat with Chrissy during the sunday night party. It reminded me that again how much usability in UIs is related to doing good API and protocol design (and also language design), which after all is also in a large part a usability exercise.

Chrissy's text to hang on the wall: "what is the one thing you want your product to do well" is also a relevant question to library and framework authors. Even if we're handling multiple use cases.

When doing API design I benefit from years of experience and also from being one of the intended users myself, a benefit that I don't have for many of the application UIs that I helped to develop. Chrissy's tips help with that.

slides

The web experience in the autistic spectrum - Natalia Berdys

This talk made the case for having people with Asperger's syndrome do your web site usability testing for you, or at least to think about them when you design a web site. The usability issues that confuse a person with Asperger's are in fact also usability issues for everybody else; it can just be experienced more intensely. This talk was a nice change of perspective on a topic that everybody is familiar with in one way or another: how usable web sites are.

(can't find the slides yet)

Brendan Eich

There was a talk somewhat mysteriously marked /be in the schedule of day 1. This turned out to be a talk by Brendan Eich, creator of JavaScript!

He very, very rapidly discussed various upcoming new features in JavaScript. High time to have a module system and standard sugar for prototype-based class definition!

He followed it up with an asm.js demo. This involves running various first-person C++ 3d shooters within the web browser. Even though I was already aware of this before, it's still a totally amazing demonstration.

Besides making for cool demos and running C++ code in your browser, I expect the asm.js technology to have an enormous impact on client-side development in the longer term. One thing that it might do is open up the browser platform for other programming languages besides JavaScript; another thing it might do is to let browsers move more and more of their implementation from C++ into JavaScript - how much native code will be left in the long term?

slides

Talks and People: Day 2

Plight of the butterfly - everything you wanted to know about Object.observe() - Addy Osmani

Day two for me started with Addy Osmani's talk about Object.observe(), one of the most exciting technologies coming to JavaScript.

Object.observe() provides a way to observe changes in JavaScript objects from the outside - a technology that in the future will provide the foundation for a wide range of technologies such as two-way binding to templates, persistence technologies (Addy demonstrated a simple JavaScript object database) and server interaction (a topic I'm also very interested in).

I was vaguely familiar with Addy's name from my explorations of the Polymer project, but I realize now he also wrote several books and is behind the TodoMVC project. Addy's talk was a rapid-fire discussion of a lot of interesting aspects of Object.observe() that I certainly will want to refer back to in the future. I chatted with Addy about some framework design issues later on. I hope I was coherent at all, and I appreciate his time.

(can't find the slides yet)

Promises and Generators: control flow utopia - Forbes Lindesay

I'm finally quite familiar with promises; after having heard about them in Twisted years ago and never bothering to wrap my head around them, and again in MochiKit (a pioneering JavaScript client-side library), I finally started using them in the context of AJAX, using the implementation in jQuery.

I thought I was familiar with generators from Python, but I hadn't thought about their implications for async programming at all (even though I knew the Twisted folks had). During this talk I also realized I needed to understand yield expressions (as opposed to just the yield statement) better, in both Python and JavaScript!

A very enlightning talk that prodded me into the realization that I don't even understand all about generators in Python yet either. I have certainly been coming to async development the long away round!

slides

Acceptable in the 80s - Revisiting Microworlds - Jason Frame

This was an extremely interesting exploration of some important older ideas in UIs that we have lost somewhat since the 1980s.

Jason showed off a prototype desktop environment implemented in a web browser that allows you to construct ad-hoc applications from smaller components visually; he could throw an editor and a file loader together into an editor for instance by throwing some lines here and there. It involves building blocks that are larger than GUI widgets but smaller than applications that can be combined by non-programmers.

I think many of these ideas could also be applied to web application development as well, and I need to ponder this more.

(I'm not sure there were slides; it was a long demo, really. Wait for the video!)

Make world less shit. NOW. - Natalia Buckley

Natalia Buckley gave an essay-like (no slides, articulate) presentation (wonderfully titled) about the interactions between software and ethics. She discussed unintended consequences of unexplored human bias in software, and how software and culture interact both ways. It was welcome reminder to continue to examine my own biases and how they can affect the software I create, and others through it.

(no slides, I hope she will post an essay somewhere)

Building Live HTML and Omniscient Debuggers in Brackets - Kevin Dangoor & Peter Flynn

Kevin Dangoor and Peter Flynn came to JSConf EU in a relaxed mood: they were going to attend the conference and didn't need to do any presentations.

This turned out to be a misunderstanding. Preparing for a talk at the last minute is a rather stressful activity, but the talk went very well.

Brackets is web code editor project by Adobe with some very interesting features.

This is a tool that has a huge range of exciting technologies under the hood that I definitely need to explore: live updating of rendered HTML as you edit, an an omniscient debugger (a debugger that knows a lot more about your program than the state of it at your break point), type inferencing JavaScript to help with command-line completion, and a lot more. Very cool!

I had a number of very pleasant and also informative conversations with Kevin Dangoor at the conference. Kevin has been doing (and influencing) JavaScript for years but I know him from the old days as the creator of the TurboGears web framework in Python. After a chat with Kevin late sunday night I finally started grokking those generator expressions I mentioned before. And also thanks for the reference to the very interesting frb binding library! Also a shoutout to Peter Flynn, the other speaker; I had fun chatting during relax.js yesterday.

(no slides yet, perhaps wait for the video as it is also a demo)

I have a dreamcode: build apps, not backends - Alex Feyerke

Alex Feyerke gave a talk discussing technologies that let you develop rich-client JavaScript applications without having to develop the backend for them. It turns out there's a lot of activity in this space - turn-key generic backends that you can start building front-end apps on immediately. I definitely need to look into this more. (I've been wildly speculating for a while about going one step further: applications without servers at all, just peer to peer between browsers.)

slides

Stop breaking the web - Tom Dale

This was a wide-ranging and amusing talk about making URLs work for single-page web apps.

It also touched upon a few interesting client-side framework issues from the perspective of Ember. Each time I learn something about another client-side web framework I recognize parallel evolution in Obviel, which helps validate the concepts in Obviel. Everybody does it all slightly differently, with different tradeoffs. That's where it gets interesting and where we can learn from each other.

(can't find the slides yet)

Rethinking best practices - Pete Hunt

Pete Hunt (who it turns out remembers me from the Grok days long ago, woohoo!) had a very thought-provoking talk from the perspective of the new React client-side web framework. His arguments against the use of templating in web frameworks are interesting but do not yet convince me. His description of how React side-steps the whole data binding issue by doing something more like a real-time 3d engine does, in particular gaining efficiency by re-rendering components but only sending diffs into the real browser DOM were extremely thought-provoking.

I like to have my thoughts in this area provoked, so I want to thank Pete for doing so.

Incidentally, the Brackets environment does this diffing of the HTML DOM as well in an interesting case of parallel evolution.

1024+ seconds of JS wizardry - Martin Kleppe

I only caught the tail end of this entertaining talk, but I still want to mention it, as it was a lot of fun and I'm going to look up the video when it's posted to see the it all. Martin was trying to write write the shortest code possible and still do amusing and interesting things. It was "crazy", which is a compliment in this context. It already made it onto hackernews.

People First - Adam Brault

The closing keynote to close the conference was by Adam Brault; high-impact, emotional, sometimes, in fact, to me, uncomfortable in its emotion. JSConf EU seems to be wearing its heart on its sleeve a bit more than Python conferences are - different.

The talk was about putting people first (in small ways as in big ways); it's good to be reminded of that in a world of technology.

The talk made me think about the personal and the emotional and how it could fit in my own talks.

I shouldn't do these things, and certainly not disclose it here, but I pulled off a successful heckle ("hey, we're the ones that stayed here!") when Adam tried to share blame for bad stuff in early North America with present-day Europeans. Adam was very gracious about it.

(And in all seriousness, I agree Europeans actually do share in the blame anyway, as much as anyone in the present day can share in the blame for acts before they were born.)

(Historically speaking, us Europeans that stayed in Europe managed to screw up our own continent just fine; no moral superiority there.)

By the way, given that Adam Baldwin (Security First talk) and Adam Brault (People First talk) are both from the same company (&yet), how are we going to put both people and security first, guys? Are you both part of OM or something?

slides

JSConf people really like to party; perhaps even more so than the Plone community does, if that is possible. By the time I arrived there already had been one party the night before. I appreciated that the noise level was kept low enough so that you could have a conversation with people. I also really appreciated the relax.js brunch on the morning after the conference.

JSConf organizers clearly understand that a conference is about more than just talks, but is also a way to create, sustain and celebrate community. Much appreciated.

One thing I must mention here is that I'm glad the conference was deliberately kept small. The rather difficult procedure to buy a ticket initially made me think that the attendance would be huge, but instead I found a cozy conference where it was easy to interact with people, including speakers, and find them again later. I was very happy about that; I've experienced a PyCon in the US with huge attendance before and it was just too hard to find people there. I heard that in recent years the attendance at EuroPython has grown. That makes me happy for the health of the Python community in Europe, but it's a bit regretful the conference might lose some of its charm due to the scale.

The crowd at JSConf was pretty diverse, but still younger than what I'm used to at Python conferences. I'm used to seeing a wider mix of ages around. I found myself being the guy dating myself by telling stories about the olden days. I didn't mind, and I've been telling stories since the olden days anyway. Turns out that I did know a few of the people at the conference, and others recognized me from the Python community. Nice, but it was easy to make new connections too.

I liked the length of the conference at 2 days. I was rather horrified to see that EuroPython is now 5 days of talks. That's just too much for me; after 3 days I'm totally done with talks. I think the JSConf approach of being very selective about talks is better.

There are two Python conference traditions that I missed: lightning talks and sprints.

Lightning talks are fast (5 minute) talks in very quick succession. Talks are submitted during the conference itself by the attendees, until there are not more slots; there is no selection process. If someone is boring that's okay, as they're gone in 5 minutes. It's a good way to get a quick message across, draw attention to a project, or just entertain. Doing a lightning talks track would probably not fit in a 2 day conference though.

A "sprint" is a slightly Python specific term for "hackathon". After a conference interested people can stay around for up to three days more and hack with others on open source projects they find interesting. It's a great way to learn more about a project and get to know other developers better.

Travel back

After the first Berlin taxi driver raised my expectations high, the taxi driver on the way back to the airport yesterday turned out to be very disappointing. He was on the headset in the phone speaking Turkish (I think) with a friend all the time.

One last story. I was in the Berlin Tegel airport restrooms doing my business. Then I heard someone call out "Is anybody there?" in English, with an American accent. I wasn't sure he was talking to me, though the place was otherwise empty. He called out again: "Can anybody help me?"

"What's going on?" I asked, wary.

"I'm stuck in this stall. Can you help me open it?"

I went to his stall and opened the door. I had expected that to be difficult, but it wasn't locked and just opened like any other door. Turns out that the door handle on the inside was missing, making the door, once closed, as good as locked for the guy inside.

"Thanks!"

"No problem."

"Really thanks, man, I would've been in there forever."

I smiled. "No problem."

Sometimes you can help by just opening a door for someone.