Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×

Comment Re: Citation Needed (Score 1) 354

I'm a Meteor developer, using full-stack Javascript 100% of the time... Node.js, MongoDB, and jQuery are my stock in trade. If you're not familiar, Meteor is basically 'Javascript on Rails'. And, in my experience, everything in the article is spot on. As to the jaw-dropping abilities...

- developing in a unified language has increased my productivity 5x to 10x. I get done in a weekend what used to take me a month or more to do in PHP or C#. That's jaw dropping from a business sense, and has allowed me to completely change my business structure and approach. Frameworks like Meteor and Derby are going to win out on productivity gains alone. I can go from an initial client meeting to launching a beta of a multi-user application in a weekend.

- remember that javascript is based on actionscript, based on scheme, based on lisp. When you have your client, server, and database all using a functional language, you can start creating UI elements as monad operations on datastore elements. No objects ever on the heap. Just chained functions from database to server to client to UI. Among other things, this allows for things like reactive templates, demonstrated in the following screencast:

http://meteor.com/screencast

- besides the reactive templates, sharing of libraries between client and server makes every Meteor application theoretically capable of becoming a peer-to-peer distributed application. No PHP or Ruby or C# web application can do that. In theory, you could bundle the node.js libraries themselves into the client, and have each served client become a new peer-to-peer node.

- this allows mesh networking functionality, with monad operations defining computations between and through nodes. Think of it like routing protocols, but with computations. Lots of distributed computing possibilities here, obviously. More importantly is bandwidth usage, offline data synchronization, and the like. Instead of going to a data center to get the latest package updates, applications will be able to query neighbor nodes. Think IPv6 functionality, mesh networking, and being able to query data states from intermediary peers. The people in the Meteor dev community are actively working on things ranging from meters for smart energy grids to real-time bee pollination tracking.

Those technical details aside, the underlying reason why pure javascript can result in jaw-dropping applications is because, at it's core, javascript is a functional language, in the manner of lisp (if you know how to use the lambda calculus). It's lisp for the web (or scheme for the web, if you prefer). And putting it on both the server and client and database allows developers to do crazy monad calculations and method chaining. The monads will update and recalculate themselves in real time, as the underlying data changes. The end result is reactive templates and data-driven animations and UI elements.

If you want a better understanding how this is going to play out, check out the D3 visualization library here:

https://github.com/mbostock/d3/wiki/Gallery

Then, imagine all those visualizations used to create applications like in Processing:

http://processing.org/exhibition/

That's the direction this stuff is headed in. If you want to see some real examples in action, consider the interactives on the New York Times

http://www.nytimes.com/interactive/2012/05/17/business/dealbook/how-the-facebook-offering-compares.html?_r=0
http://www.nytimes.com/interactive/2012/02/13/us/politics/2013-budget-proposal-graphic.html
http://www.nytimes.com/interactive/2012/09/04/us/politics/democratic-convention-words.html#Ryan
http://www.nytimes.com/interactive/2012/08/11/sunday-review/drought-history.html
http://elections.nytimes.com/2012/ratings/electoral-map


And imagine these kinds of interactives being built on real-time data, so when the underlying data changes, the changes are pushed to all the clients automatically.

It's late. I'm not sure I'm explaining this very clearly or coherently. But all I know is that pure Javascript frameworks, like Meteor or Derby, are the way of the future. Had Python or PHP been installed on Netscape instead of Javascript, we'd be talking about Python on Rails or PHP on Rails. But they weren't. So, we're talking about Javascript on Rails. And it's a beautiful thing when you grok it.

Comment Re:Personal experience (Score 1) 564

Exactly. Some of us are already programming applications with this in mind. I've normalized my virtual servers at... 256mb disk size; the websites are reactive layouts that adjust from 320x480 pixel cellphone sized displays to 3 megapixel thunderbolt displays and more; navigation is tied to keyboard shortcuts that can be mapped to haptics... be it mouse clicks, taps, swipes, or sign language.

Now days, my travel kit includes my iPad, a wireless bluetooth keyboard (solar), and an HDMI adapter. I go to friends houses, and simply connect to their HDMI hi-res television. If I want to do mobile development on the go, I grab my Mac Mini and do the same thing. HDMI is the best connector *ever*, and anybody who doesn't have an HDMI connector and wireless keyboard for their tablet is simply not groking the ergonomics of tablet portability.

Comment Is Your Code Designed to Build Walls or Bridges? (Score 5, Insightful) 507

Recently went through this myself. Despite having used a kanban board, used version control, commented code, written unit tests, etc, some junior devs thought the code sucked. My takeaway was that there were still too many barriers to entry. Too many passwords, not enough installation instructions, etc.

Somewhere in the process of learning to write production ready code, it occurred to me that it was necessary to work the process backwards. Begin a project by setting up your hosting or distribution environment before starting to code. Write unit tests before starting to code. And so forth.

Getting other people to contribute to your project requires the same kind of thinking. Set up a project page before you start to code. Write a vision statement before you start to code. Write installation instructions, coding style guidelines, and operations support instructions before you start to code. That way, as you proceed in the project, you have clearly build up the documentation that other people are going to need to join your project. These things shouldn't be started after the fact.

If you can't point a new dev to a website and say 'download the source and instructions' here, it's probably too complicated and will meet resistance.

Comment Re:Nice Idea....but..... (Score 1) 265

What does the flow into and out of science have to do with anything? Migration is one of the four basic mechanisms of evolutionary change, along with natural selection, mutation, and genetic drift. Ideas flowing into and out of science is perfectly consistent with migration and Cultural Evolution models.

As for memes, I kindly recommend memegenerator.net, in all it's lowest-common-denominator glory, and the iPhone and Android app stores. Memes, like genes, are ubiquitous. The reason they don't seem to exist is because they're everywhere.

Comment Punctuated Equilibrium (Score 3, Interesting) 265

Wrote my senior thesis on Kuhn, positivism, etc nearly 10 years ago. My take away was that scientific and theoretical advances get disseminated throughout society. Ergo, a population undergoes memetic evolution. Drawing on biology, the obvious model is one of punctuated equilibrium. Once one reconciles the ideas of paradigm shifts with punctuated equilibrium, it becomes pretty evident how technology evolves, science is disseminated, differing rates of change in different fields, etc. All one has to do is look at the iPhone, iPad, and Leap to see modern paradigm changes in action. (Protip: The language we use to describe the punctuated equilibrium changes of the human species is that of stock markets, marketing, and market analysis.)

As Gibson put it, "The future is already here — it's just not very evenly distributed." I also highly recommend Hulls "Science as a Process".
http://www.amazon.com/Science-Process-Evolutionary-Development-Foundations/dp/0226360512

Comment Re:Updated tumblr Post (Score 1) 65

I don't buy it. The package is addressed to 1101 East 58th Street. That's the UChicago Administration and Admissions office address. No way. It's obviously a College application. And a good one too! Somebody has a sense of aesthetics. Probably someone wanting to go into Art Preservation or Museum Curratorship. Maybe Egyptology or Paleontology.

Comment Re:Congratulations (Score 2) 65

Performance art? It's obviously an application to the College (received in December, duh). Among some alumni, bets on the declared major range from Art Restoration & Museum/Library Curation to Archeology, Egyptology, & Paleontology. I almost went into Paleontology. One of my best friends has a B.A. in Egyptology. I have a half-dozen acquaintances I know who focused in various Museum/Library curator positions. It could be any.

Comment Obvious Answer: It's an Application to the Colleg (Score 4, Interesting) 65

As a UChicago grad, I think the answer is obvious. It was delivered to the Admissions office during the month of December. It's an application to the college. The Admissions office would just like to know who it's from! :)

It's daring, if somewhat obvious. But to my knowledge, it hasn't actually been done before. It was bound to happen eventually, however. I'm just kind of surprised it took this long, in fact. Whoever sent it will obviously get in if they have a modicum of academic ability or talent. It's exactly the kind of nerdy stunt, with an appreciation for aesthetics, that UChicago appreciates.

Comment Re:Benefits (Score 1) 112

I see it differently. I see it as an issue of encapsulation. The issue is whether one is going to encapsulate the parallelism inside of a thread, or inside a machine, or inside a network. From an operations perspective, a thread is usually an opaque black-box, with few controls for the operations team to manage whether they want to scale a process up or down, add extra resources, migrate to different hardware, do disaster recovery fail over testing, etc. And having been in operations for many years, I like to expose controls in my application designs that allow operations to manage those parallelism features. And so, when it comes to encapsulation, I tend towards encapsulating parallelism with a hypervisor, rather than with a thread.

The idea isn't to just scale *hardware* (although that's one way of doing things). Rather, scale the virtual nodes within a hypervisor environment. Then, if you're using a 32 core server, run 31 virtual node servers, with each node server running on one core, and with one optimized dedicated thread per CPU. The last core gets used by the hypervisor itself to manage inter-node infrastructure. The end result is a virtual network running on a multi-core server, and is essentially just this generation's version of a mainframe architecture.

There are, of course, pros-and-cons to this approach. Some things you gain, while others you loose. But as far as scaling goes, one doesn't need to scale hardware to use parallelism. Just need to have a hypervisor with some micro-sized virtual machines. I like to keep my virtual machines running node.js at about 256mb of disk space. But when the time comes to go parallel with hardware, everything is already set up to.

Comment Re:Benefits (Score 4, Interesting) 112

It's actually a really huge advantage, if done correctly. A trivial example: I'm working on an app that has a file import functionality, so I wrote a half dozen helper functions to parse a spreadsheet into JSON. Later wound up using those same functions on the server to implement an XML interface. Business logic is the same in both instances, and having a single language for both server and client allows that business logic to be stored in a single place, maintaining the Don't Repeat Yourself (DRY) rule of thumb. Having a single language on both server and client is a godsend for keeping your app DRY.

Comment Re:Benefits (Score 1) 112

Mmmm, maybe if you have only a single node. But a cluster of node servers can scale as well as you're ever going to hope for. And for real time applications, I'd much rather have a cluster of well-behaved optimized node.js threads than hoping a black-boxed apache thread won't decided to randomly fork and/or block.

Comment Re:Wrong question to ask (Score 1) 112

Well stated. The sharing of language client and server side is the biggest practical benefit, in my experience. And yes, it's important to have a clear understanding of how Javascript is related to Lisp, what lambda calculus is good for, and what that entails by the way of anonymous methods, closures, and the like. That being said, if you understand those things, programming with node.js and associated frameworks (like derby, meteor, etc) is like surfing in Hawaii..

Comment Re:Really? (Score 1) 526

Teachers don't seem to have a problem with whiteboards and chalkboards. Painters who use easels don't seem to have problem working on vertical surfaces. The problem isn't with the vertical surface. The problem is entirely related to manufacturing and design of the technology. Like requiring pens, for example. Or not having multi-touch capabilities (major ergonomic feature there - being able to use gestures - that wasn't present in earlier touchscreen form factors, due to manufacturing and programming challenges).

Comment Re:Really? (Score 1) 526

Here's the problem with your argument: Chalkboards. And whiteboards.

As I recall, chalkboards and whiteboards have been used everywhere for the last 30 years. The problem hasn't been vertical surfaces, gorilla arm, fatigue, and what not. Teachers and other professions deal with those issues all the time. The issue has been processing power, form factor, and ergonomics. But not ergonomics in the gorilla arm sense. Ergonomics in the sense of requiring specialized pens that can't be easily replaced, and requires exotic device drivers and software.

Slashdot Top Deals

"God is a comedian playing to an audience too afraid to laugh." - Voltaire

Working...