Tuesday, December 31, 2013

Concurrency Models, Rust, and Servo (lars.com)

This post explores the space of implementation choices in concurrency models for channel-based concurrent programming languages. It also discusses Rust's current choices in that space and their fit with the Servo parallel web browser. This post was prompted by the back-and-forth discussions on the rust-dev mailing list. Read more...

Monday, December 23, 2013

Startups should use a relational database (raycmorgan.com)

One of the main goals of a startup is to find a market with a problem and to create a solution that solves that problem. This is a hard process. A lot of your time will be spent learning about your (potential) customers. Once you have discovered a market need, the next thing to do is create the simplest solution that solves that problem. This is when you must make some simple yet important decisions about your early development process. Where are you going to host, what languages will you use, etc. One of the more important decisions you will make is what database you will use.

In a startup, technical decisions must be made quickly. The right technology choices will not mean success, and conversely will not lead to failure. What these choices will lead to however, is speed at which you can validate your hypothesize. So select a hosting provider that allows you to not worry about infrastructure. Go with a programming language that you know, and suits your problem well. Use a database that will allow you to ask it questions about the data — questions that you don’t even know you will have. Read more...

Thursday, December 19, 2013

How close are we to creating artificial intelligence? (aeon.co)

The very laws of physics imply that artificial intelligence must be possible. What's holding us up? Great essay by David Deutsch challenging how we think about GAI and process of thinking itself. Here follows few quotes I hop those will make you want to read all essay.

An AGI is qualitatively, not quantitatively, different from all other computer programs. The Skynet misconception likewise informs the hope that AGI is merely an emergent property of complexity, or that increased computer power will bring it forth (as if someone had already written an AGI program but it takes a year to utter each sentence). It is behind the notion that the unique abilities of the brain are due to its ‘massive parallelism’ or to its neuronal architecture, two ideas that violate computational universality. Expecting to create an AGI without first understanding in detail how it works is like expecting skyscrapers to learn to fly if we build them tall enough.

In 1950, Turing expected that by the year 2000, ‘one will be able to speak of machines thinking without expecting to be contradicted.’ In 1968, Arthur C. Clarke expected it by 2001. Yet today in 2012 no one is any better at programming an AGI than Turing himself would have been.

‘We humans pride ourselves on being the paragon of animals, but that pride is misplaced because they, too, have language, tools … And self-awareness.’

Remember the significance attributed to Skynet’s becoming ‘self-aware’? That’s just another philosophical misconception, sufficient in itself to block any viable approach to AGI. The fact is that present-day software developers could straightforwardly program a computer to have ‘self-awareness’ in the behavioural sense — for example, to pass the ‘mirror test’ of being able to use a mirror to infer facts about itself — if they wanted to. As far as I am aware, no one has done so, presumably because it is a fairly useless ability as well as a trivial one.

The battle between good and evil ideas is as old as our species and will go on regardless of the hardware on which it is running...

Furthermore, in regard to AGIs, like any other entities with creativity, we have to forget almost all existing connotations of the word ‘programming’. To treat AGIs like any other computer programs would constitute brainwashing, slavery, and tyranny. And cruelty to children, too, for ‘programming’ an already-running AGI, unlike all other programming, constitutes education. And it constitutes debate, moral as well as factual. To ignore the rights and personhood of AGIs would not only be the epitome of evil, but also a recipe for disaster: creative beings cannot be enslaved forever.

One implication is that we must stop regarding education (of humans or AGIs alike) as instruction — as a means of transmitting existing knowledge unaltered, and causing existing values to be enacted obediently. As Popper wrote (in the context of scientific discovery, but it applies equally to the programming of AGIs and the education of children): ‘there is no such thing as instruction from without … We do not discover new facts or new effects by copying them, or by inferring them inductively from observation, or by any other method of instruction by the environment. We use, rather, the method of trial and the elimination of error.’ That is to say, conjecture and criticism. Learning must be something that newly created intelligences do, and control, for themselves.

Quote of the Day - 2013-12-19

It always seems impossible until its done.

   - Nelson Mandela

Wednesday, December 18, 2013

Quote of the Day - 2013-12-18

Your time is limited, so don't waste it living someone else's life. 
Don't be trapped by dogma - which is living with the results of other people's thinking. 
Don't let the noise of others' opinions drown out your own inner voice. 
And most important, have the courage to follow your heart and intuition. 
They somehow already know what you truly want to become. 
Everything else is secondary.

Friday, December 13, 2013

Baby's First Garbage Collector (journal.stuffwithstuff.com)

There’s a bunch of different ways you can implement the process of finding and reclaiming all of the unused objects, but the simplest and first algorithm ever invented for it is called “mark-sweep”. It was invented by John McCarthy, the man who invented Lisp and beards, so you implementing it now is like communing with one of the Elder Gods, but hopefully not in some Lovecraftian way that ends with you having your mind and retinas blasted clean. It works almost exactly like our definition of reachability:
  • Starting at the roots, traverse the entire object graph. Every time you reach an object, set a “mark” bit on it to true.
  • Once that’s done, find all of the objects whose mark bits are not set and delete them.
That’s it. Read more....