Archive

Design

A friend of mine once convinced a foreigner that Hebrew has merely 14 words and the entire language is derived out of these words. I recently wondered how gullible must that foreigner be, or is it actually plausible. Reaching the full spectrum of a reasonable language while being constrained to 14 syllables is a bit far-fetched. But what if it was 14 characters and not words? Can we reduce the English language to a small type-set of 14 characters?
For a stater, let’s say we’re keeping only consonants and we’ll use nikkud (a form of punctuation) instead. like in this example in Hebrew, in which the red dots indicate how each consonant should be pronounced – 

After that, we can omit duplicate consonants while still retaining all the available sounds – “x” can be pronounced with “ks” or “z”, “f” can be pronounced with “ph” and so on.
Talking about this with a friend as I fell in love with the intriguing challenge, as he sent me a video of Karina Galperin explaining why Spanish language should be simplified in order to promote equality. This approach, in fact, sees languages a political tool whereas people might be classified according to their spelling capabilities . Coincidently I came across this video of a thrilling spelling contest and it actually made me cringe at the prospect of a language priding itself in being impossible to spell. Language is a tool aiming to help us communicate with one another – preferably as clear and disambiguous as possible.
I googled for the most efficient language and learned that English is actually considered very efficient, which for me meant the bar is quite low when aiming for “the highest possible degree of logic, efficiency, detail, and accuracy in cognitive expression via spoken human language, while minimizing the ambiguity, vagueness, illogic, redundancy, polysemy (multiple meanings) and overall arbitrariness that is seemingly ubiquitous in natural human language“. This has lead me to Ithkuil which is an engineered language, built to be extremely profound but sadly very complex to actually be use (which reminds me the old joke about IBM: “it may be slow but it’s hard to use”). Engineered languages are unlike our normal everyday languages as they haven’t evolved through the course of centuries to include all sorts of weird exceptions (side-note, Do creationist believe in the evolution of languages?). Instead they were preconceived and presumably their creators could have tackled all the problems beforehand. A language, like a software code designed for Space-shuttles, better be right on the first time as “fixes” take generations.
When engineering a language, one must ask whether it should be a relatable language that sounds pretty much like another language (like all latin-based languages are similar) or should it be secretive that no one else could decipher?
During WW2, the Americans used Navajo-native speakers for radio-communication. Navajo, being completely unrelated to any other European or asian language (and having complex grammar regardless) was impossible for the Japanese to decipher without having a native speaker to simply understand it. The story of the WindTalkers is quite incredible on its own.
We should also ask how deep are we ready to go? simply make a unique typography? Perhaps change the way the sentence structure or even fundamentally change the grammar rules into something completely different. I tried tackling those questions on my presumptuous attempt to simplify the English language with a complete disrespect to traditions or reasons that were lost in days past.
For typography, I decided to use the standard latin characters, because many people know how “m” sounds like as opposed to “צ”. Also, creating a new typography means losing all the years of work of thousands of people who created beautiful latin-based fonts.
There are no capital letters in my language. I don’t think they’re necessary. My only exception is that I would use the uppercase “L” instead of the small-case ambiguous “l”. 
Character-set can either be maximal, with vowels and each character having a single sounds (but not having duplicities) like most of the Cyrillic-script languages; or minimal, using consonants and a method to make stronger and softer (much like having “h” after “s” creates a new stronger sound “sh”). I decided to go with the minimal approach as I figured it will take less time to learn the different characters:
  • My set of 15 characters is “a b g d p h L m n r s t y z”
  • Additionally, b̝ becomes softer, to “v” (like in “victory”).
  • g̝ which normally sounds like in “game”, becomes “j” (like in “James”)
  • k̝ which normally sounds like “kangaroo”, becomes “ch” (like “cheetah”
  • p̝ becomes “f” (like “fantasy”)
  • h̝ becomes “kh” (like “akhmed”) or the Spanish sounds of “j” (like “Javier”)
  • s̝ becomes “sh”
  • t̝ becomes “th”
  • y̝ becomes “w”
  • z̝ becomes “zs” (like “Zsa Zsa Gabor”) or “zh” (like “Doctor Zhivago”)
 As I mention, I decided to omit the vowels (leaving only the consonant “a” for the actual sound that you can hear in “apple”). It’s not a simple decision to make, but I think we can learn to read without the vowels (“ppl, u cn hndl ths!”) and it’ll make the words shorter and therefore more digestible. Instead I’ll have nikkud. For this challenge I used characters that appear in standard fonts (although not accessible in common keyboard layout).
  • b͒= ba, sounds like “dad”. It looks like your eyebrows when you try to put on mascara.
    b̆ = bi, sounds like “dip”. It loos like a smile.
  • b̊ = bo, sounds like “mom”. it looks likes an “o” shape.
  • ḃ = bu, sounds like “room” (side-note: I challenge you to find a 3 letter english word that has “u” in the middle that actually sounds like “u” (as in “room”) and like a short “a” (like “pug” or “mum”). It looks like a dot as it forces to close your mouth to purse your lips
  • b̄ = be, sounds like “bed”, doesn’t really look like anything; it’s just a “meh”-looking nikkud.
  • Lastly, there is an optional tilda below a letter to to hint it’s a long sound in order to help say a word properly, for example the difference between “Daniel” and “Daniel“:  “d̰͒n̆āl” vs. “d͒n̆ā̰l”. It can also be useful for a word like ṡ̰p – “soup” so it wouldn’t sound like “soop”.
Numbers are also very important. Inspired by Malcolm Gladwell’s observation on Math and Chinese, I would like my numbers to be short words as well. So rather than re-inventing the wheel, number are borrowed from the Chinese system: 0 (L̆ng) 1 (y̆) 2 (ār) 3 (s͒n) 4 (s̆) 5 (ḃ̝) 6 (L̆ẏ) 7 (k̆) 8 (b͒) 9 (ğ̝ẏ) 10 (s̝̆)
The real magic with the Chinese counting system is that there’s no eleven, twelve or any other strange name for numbers. 34 is simply “three-ten-four” (s͒n s̝̆ s̆) so it’s much easier for children to learn how to count all the way up to 99 and it’s makes their life much easier what trying to do simple arithmetics.
I tried to think of the most important words for communication – Yes (ȳs), No (n̊), I or Me (m̆), you (ẏ) and he/she/it (s̝̄). Plurals will be marked with the suffix ās (“es”) so the plural of y·(“you”) will become “ẏās” (pronounced “you-es”).
My language will not have “a/an” determiners. I think it’s useless as their existence makes the default sentence “I eat apple” meaningless. I believe I can do well without them. “The” determiner will be “t̝˜-” as it must come in conjunction using a hyphen with a noun, for example “t̝̄-d̄yt̆” (“The deity”).
English has 12 different tenses. I would like to have a better way to deal with this. Each verb should end with a suffix indicating its tense and time.
  • We’ll take the noun k̆s (kiss) with its verb k̆s̄ (“Kissing”, note that the name of the verb doesn’t include time-indicator), and we’ll examine all the variations of it.
  • Like in English, my verbs don’t indicate gender but I also omit the “s” that appear on for he/she/it (e.g. “he runs“). 
  • Verbs gets one of three suffixes to indicate the time – d (past), n (present) and L (future). The nikkud indicates whether it’s simple, continuous (equivalent to “ing” suffix in English) or perfect and whether it’s active or passive.
temp1
In English, when asking a question the verb “be” moves to the beginning of the sentence: “She is running” becomes “Is she running?”. As I don’t want the verb “Be”, I’ll use the Spanish technique to indicate the sentence is a question, having an upside-down question at its beginning – “¿s̝̄ r͒n̄n?”, or “¿ḣ s̝̄?” (“who [is] she?”).
On a technical note, in order to write this post, I used a great free “keyboard-layout-editor” app called Ukelele, in order to make my nikkud characters more accessible. removing 10 characters I didn’t need I had a lot more space to prioritize others things (like brackets for example). Being aware it requires adjustment-time, I enjoyed the idea of putting keys according to their usage-frequency (check out Dvorak’s simplified keyboard that unfortunately never caught on with the general public).
temp2
Getting the feel for this application, I played a bit further with the hidden potential of a “better keyboard”. One of the thing I did, as I had plenty of available space on my keyboard, was sorting all the number in a one-hand-accessible layout. I think this should be extremely useful for keyboards that don’t have keypad or lazy people like me who don’t want to move their hand all the way to the keypad –
temp3
A language becomes politically-biased as soon as you have honorary title, like the German “Sie” or the Italian “Lei” or being gender influenced more than it should – just see how much more complicated German has become when every noun has a gender, which to be honest is quite arbitrary (changing its “the” to either “der”, “die” or “das”). So no. My language is equal and neutral balanced. There’s no honorary title and there’s no other change in the language when talking about subject of different gender. “f̆” means ♀ (female) and “m̄” means ♂ (male). And on another side-note, I’m annoyed that most english words for females are derived from their male counterpart – “woman“, “female“. The etymology of  “wife” is actually “shame” and the word “girl”, to be honest, is quite derogatory. “m͒m͒” (pronounced “mama”) would mean “parent” whether it’s the mother, the father, the second father or the second mother (as modern family are much more complicated then a mere “mom” and “dad”.
 
I also decided that my language will not have a word for “god” or “holy”. these will be transversed to “deity” and “divine” respectively. I will also exclude the words “Husband” and “wife” (to be transversed to “spouse”), neither “man” nor “woman” (to be transversed to “person”). Nothing will prevent other people from introducing these words in the future, but at least as far as I was concerned, I think that for a time it would force people into a healthier perspective on religion and gender-equality
So this was my mental-challenge of simplified English. According to WikiHow’s on creating a language I should create a small dictionary to establish my language. I agree, as I think that “playing” with the language will help uncover exceptions or elements left unclear. But as linguistics ain’t my field of expertise and as fascinating (for me at least) as it may be, I should move on and perhaps get back to it if (for whatever reason) this article will gain traction. Personally, I’d love to explore further on the behavior of comparisons, adjective and adverbs in my simplified English. Perhaps in another lifetime.
Advertisements

A while back, I saw a video regarding blood-diamonds, which main conclusion is that blood-diamonds cannot be traced and diamonds cannot be certified to be conflict-free. It occurred to me to create an educational game and expose the developing-world biosphere in which blood diamond and other forms of atrocities can thrive.

With my usual limited warranty warning, I should confess it’s been ages since I played a computer game or an real-time-strategy (RTS) game and I’ve actually never played a Massively multiplayer online game (AKA MMPOG). But that never stopped me from yammering.

I would like to suggest a game that caught my interest. It sounded like something that should be out there so I checked the list of top RTS games of all times and they all classified as either historical, fantasy (i.e. orcs and elves) or futuristic or alternate-universe (honorary mention to World in Conflict). So nothing really fell close to my “modern-day” category. I call it “Warlords: think you can do better?”.

Our game takes places in a developing country and like any RTS, the goals are to gather resources, build an army and vanquish the enemy. The aim of the game however is to provide a realistic portrayal of a warlord’s conflicts and challenging the ability to keep morals and principles in a harsh environment.

In the single player’s first campaign, the player leads a raid-party. Starting off with a group of five foot-soldiers, the first mission is to steal a pick-up truck. The following missions are to expand the army by recruiting soldiers by either sheer volunteerism or with a little encouragement of kidnapping or threatening to burn entire villages if they don’t surrender their juveniles.

Unlike most RTS in which the player has different unique units, in this game, the player gathers an army of people, weaponize by whatever means possible and train them accordingly. This means that anyone can throw a grande if s/he has one, but only an experienced soldier can actually aim, and not kill himself accidentally. Also in this game, a soldier who loose limbs can still fight but they’ll never get back to their full potential. It’ll be up to their warlord to decide whether to leave them to die in the battlefield or carry them to health. Very quickly the player will realize that conscious is an expensive obligation.

The first campaign ends with the successful occupation of a mine, with a small help of a foreign agent, who hopes to bargain a better deal with the rising warlord, rather than the previous mine owner. So The second campaign is all about expanding the mining enterprise which requires, once more, recruiting people, one way or the other, to come and work for the warlord. The player will quickly learn that brute force is one way to do business, and another is padding the pockets of certain interests – such as law-officials or religious-leaders. On the other hand, he might be handed out some interesting offers (and later demands) from foreign business-men that happen to cross her/his path.

I’m not denying the possibly of a benevolent warlord who would try to protect her/his people from the cruelty of the other stakeholders, but s/he’ll quickly find her/himself outgunned and outnumbered as albeit it is possible to walk the paths of righteousness, it is really darn hard.

In the final campaign the warlord’s goal is the conquer the entire country, springing from his successful mining business to the top of food chain, mostly by eliminating anything that stands in her/his path.

The units of the game are mostly foot-soldiers with different weapons – from clubs, machetes, bow and arrows to guns, machine guns, grenades, rocket launchers and flame-throwers. There is also a small assortments of transportations units: motorcycles, pick-up trucks and small planes. In the final campaign, as the warlord fights against the country’s army – tanks, choppers and airplanes also come into play. However, unlike any other RTS game in which the player build a vehicle factory, this game is a bit more realistic in which the user can only order online or simply steal existing units. People, ammunition and vehicles are all limited.

Communication towers plays an essential role in the game as without them the user won’t be able to see enemy units on the map beyond her/his own unit range of view. Radio communications will allow her/him to send off hi AI units to remote missions, trusting them to manage on their own, as s/he won’t be able to get a clear status once they engage in battle.

Another important dimension of the game is the AI-unit’s loyalty, as at any moment unit might desert or turn treacherous if it believes the act will benefit it. But there’s no bar to indicate a unit’s loyalty level, the warlord must trust her/his own instincts for that. There are, however, satisfaction-polls to indicate the general feeling of an area or a squadron. It is the warlord’s responsibility to keep his units in check.

In the multiplayer game the player can band together with other players to create stronger coalitions, but can also tax them for protection money and all sorts of agreements that are not exactly well-balanced but more like real-life relationships between different stakeholders. Army bases exists in the multiplayer game and whoever gets to occupy them benefits from their arsenal (until it runs out of course).

Drawing back to the original point, I hope that the game will enrich the players’ knowledge about the developing countries’ state and how the developed world influences them by supporting such warlords and alike. My 2cents tip for anyone who wants to avoid having blood (diamonds) on their hands is simply stop supporting the diamond industry in general as stop believing that a little shiny rock on a ring means anything. but that’s just me.

Following are my impressions and thoughts inspired by the “AR in Action” conference at MIT’s media lab to which I was kindly invited to this week by John Werner.
Augmented Reality” is the notion of adding an additional layer of data to our perceived reality. The most popular example for AR, as far as I could tell is Pokemon Go in which the character appear as in our real environment, but as the game was referred to several times during the conference, it is not a real AR since it doesn’t truly interact with the environment, rather than merely use it as a background to present its characters. But this is general idea – have some spectacles or a window (such as tablet) from which one can look at hers or his environment and get more information.
An interesting thought was proposed by Christopher Croteau from Intel that augmentation mustn’t necessarily be visual. It can also be audio – for example a running app that provides you audial coaching is actually augmenting to your running experience. A background music can also be considered as augmentation.
AR’s biggest advantage over VR or the standard way of consuming data is lack of need to disconnect from the presence. Along comes the famous photo of our generation, completely immersed in our mobile devices. completely disconnected from the “now”.
This made me wonder why is it so important to be in the “now”. “now” can be boring (especially now, as I sit in the airport waiting for my flight back home). True, mobile disconnect us for the immediate surrounding people, but then again – what’s wrong with that? Calm down with your “heretic!” calls, I would personally rather talk with someone I care about than someone who just happened to sit next to me, and I’m pretty sure it’s to the preferred choice of all parties involved. If someone prefers his virtual friends over your presence – I guess you’re just not interesting enough. I don’t really think that but I think it’s a thought worth exploring. but how AR can make this better? after all, I will still use technology to talk to my virtual friends and not the present next to me. The only difference will be that I will stare into nothingness like a weirdo instead of a screen.
The conference had plenty of speakers. More than a 100, according to the publications. Some of them preached to the choir about the wonderful potential of AR; others showed their work whether it was related to AR or not (some even without even trying to conceal the fact it’s completely unrelated. I should mention that it doesn’t mean their talks were bad, just unrelated). But from what I gathered, AR has three usages nowadays: (i) Show designs (e.g. architecture‘s work); (ii) provide instructions; and (iii) be cool. Being cool – such as provide 3D Pop-up to QR-code. It’s cool. it’s great advertisement. But being cool is something that has to be unique and it’ll become over-used and boring incredibly fast.
As the AR field is still emerging, the conference was also about VR, which is actually easier to implement, as you don’t need to understand the real environment in which the user is present. But VR has a huge disadvantage – it completely disconnect you from the surrounding. As one of the speaker came to the stage with a holo-sense on, I felt that he’s not really there, and didn’t really see a reason to be “there” as well. I think it has a lot to do with the emotional expression we provide using our eyes and eyebrows and once this is covered – we will just lose our audience.
Robert Scoble spoke about the “beautiful potential” of AR and how it will change our future. He pointed out three scenarios – mall-shopping, hotels and drivings. Personally, by the time AR will actually be useful, automated cars should take over (and every day that passes by and people die in car accidents is a disgrace to humanity). I’m not exactly sure what would he change in his hotel experience but the mall-shopping example bothered me. Especially as I don’t go to malls and I think that “look how much money many can be made of this” is an incredibly bad driver for innovation. It may be efficient but it’s still bad nonetheless.
There were few interesting demos of really useful AR in use for instructions and tutorials. But it reminded me of the story about NASA’s 10m$ investment to invent a pen that can write in zero gravity while the soviets simply used a pencil. It’s ok to experiment with the technology even when it’s not efficient but in order to solve real-world solution, its advantages compared to a low-tech solutions don’t necessarily have enough ROI.
Christopher Grayson suggested using AR to remember names (essentially by providing them digital “name” tags) made me think about the right to stay anonymous. This, should be mentioned one of the important reasons google glass failed. It’s true that I walked in the conference with my name tag on but this is actually an incredibly inefficient technique as it requires the reader to stand in front of me and make sure the tag isn’t flipped over (as it usually does) or covered by my jacket. Most like I’ll know that s/he’s taking interest of me and I would feel less susceptible to scams by a stranger who knows too much about me.
He took pride in having more than 2000 friends on Linkedin, while socially-speaking, we’re able to maintain only up to 1500 friends. I think it requires a redefinition for the word “friend” as it raises the question of the type of relationship one keep with his closest thousand of friends.
A word on technicalities. There were a few talks that were… ill-prepared. Whether it was the technology failing to display the presentation or demo on the big screen, or speaker who clearly didn’t prepare their talk and just rumbled on. Worse were those who weren’t even interested or at least funny. Rightfully said, it was mentioned by the organizers that future conference they’ll “audition” the speakers, so I’m optimistic on that regard.
I didn’t attend any panels but one, which I happened to stumble by as I was waiting for the following talk. This panel was about “Future of AR” and each panelist in his own words said, to my dismay, that the future cannot be predicted. They later continued to rumble but for me the picture was clear that the future is hazy. Personally I think the future of AR lies with an incredible smart AI and image recognition and processing. It will then be able to whisper useful information to help you make conscious decisions. In its evolution AR must and I cannot emphasize enough how critical it is – MUST get rid of the clunky VR goggles, it will never work with them. The alternative should be either the use of normal plain glasses and which the user’s pupils are still visible or at contact lenses that provide this information. Yes, we have a lot way to go, but that’s the future AR should aspire to.
A few honorable mentions: Bob Metclafe (the guy who invented Ethernet) and Dan Bricklin (the guy who invented digital spreadsheets), who didn’t actually talk about AR but are incredibly smart and entertaining; Gordon Bing from EA who showed how AR can be inspired by computer games; And last but not least, the guys from PTC that gave a few demos of AR that actually work efficiently.

That digital device you have in your pocket? you should call it a “mobile” (or “Handy” as the germans call it). But calling a “cellular phone” is ridiculous. Last month I spent 6 minutes of talking on the phone and 500mb of data, and I might be an extreme case but I assume I’m not the only one. Let me tell you why phones are obsolete.

First, they require an immediate response. Unlike texting of any form, to which you can reply whenever is convenient, phone call must be answered right now. Let’s say someone wants to give you an important message. you gotta answer that, otherwise you’ll miss it. True, you can have a voicemail box. but the original voice message is actually translate to a “you got mail” notification which will force you to actively connect to the voicemail service and listen to the message (hence, requiring one more step). True that with a simple data app we can reduce this step into a PTP (push-to-talk) voice message, but usually that’s not the case. and even so – it means harnessing new technology to support old infrastructure.
In that sense, text-messaging is great, as you can answer whenever you can or wish. No real pressure for immediate response. Plus, it’s much more easy and acceptable to reply while doing other things (like watching a movie) as listening is much more engaging than reading short texts).

Phones are spammer’s paradise. Unless you decide not to answer phones from undisclosed number- you’re bound to have annoying soliciting or harassing phone calls. Adding a caller ID was a necessary step to resolve that. First it just showed you the caller’s number and if you recognise it (because people back in the 80s used to remember and recognise 9 digits phone numbers, today why bother?) you could filter desired phone calls (but no real help with unidentified numbers). Of course, very quickly came the caller’s option to hide us number, giving the spammer the upper hand. Unidentified numbers issue can easily be resolved if instead of numbers the phone infrastructure would convert to meaningful string, like an email for example. and it would allow people to block calls from lisa@gambling.com. but what about jenny.maccarthy@gmail.com ? should you answer a seemingly innocent yet completely random phone call? so it still seems we’re trying to keep a technology alive, while it really wants to die.
And lastly, phones encourage awkward smalltalk. It’s not a real face-to-face conversation to become a real small-talk but asking directly would be extremely unsociable. For example, let’s say you want to ask Berry from accounting if he plans to go to the company’s picnic (and if he does, whether he could give you a ride). so you can text him a single message: “Hey what’s up bro? are you going to the picnic? can I come with you?” and his answer would be a simple “sure thing!” and that would be the end of it. Text messages are far more concise. While if you go to Tim you would actually engage in a conversation when you’ll eventually get to ask “oh yeah, hey, are you going to the picnic?”. Phone calls are pretty similar, but much more annoying to handle as you don’t see the other person, whether he’s actually to busy or occupied to have this conversation with you right now.
I think that the interesting bit was that phone exists for merely 100 years and are you publicly only for about 50 years. cellular phones became popular only 20 years ago (that’s nothing compared the the length of time men has used pigeons to deliver news). Meaning to say, we managed for a very long period  with the need to audio-only interaction, and I truly believe we outgrew to betters forms of communications (emojis and memes anyone?)
The decision of moving from cellular devices should come into affect with the packages the service providers should offer. Personally, I’d go with a package with little to no voice minutes but a large data plan. If need may be, I can always use skype or other voice-over-IP solution in order to have free conversation anyhow.
Less importantly it should with the hardware itself. not so much for its supported technologies rather than its branding – I would rather buy an Ipad with 4G capabilities than an iPhone – which are technically the same thing – but represents completely different mindsets.

TL;DR, My first thought about ES6 was “but you’re just making things worse!”. I think the thumb-rule for improving a language will it be easier to learn it and not more difficult, and clearly that’s not gonna happen when you keep adding more arbitrary tools to do the same things but slightly differently (best example for this is for…of which iterate over object’s iterable elements, as oppose to for…in which iterates over all of the object’s elements.

To cut things short – JS is missing official versioning, that will allow it to purge bad code. It actually does have some  versioning, because when you add a new feature it does mean that an older browser won’t support your code and additionally, we already have “use strict”; which is actually versioning. So instead of ‘use strict’, we’ll have ‘use es6’ and everyone know how to handle it. We can later think of backward-computability to weird folks who still use IE6 by trans-piling and stuff. That’s a different story and isn’t that complicated, especially as I’m aiming mainly to clean to language and less on adding new features.

So looking at First steps with ECMAScript 6, I compiled my own remarks/suggestions of how I believe things should be done:

1. Scoping: var, let, const, IIFE and blocks

Originally {…} was suppose to be a block that contains privately-own local variable. JS screwed this up by keeping the variable to the use of the external function. I’m not sure why, but now they try to patch it up by using ‘let’. So let’s make it much more simple – {…} has its own variables that die as soon as the block ends, unless they’re being used by an internal block that outlives the original block. This is how to should have been to being with. Fixing is better than patching.

Const” my be a nice concept but when talking about pointers, which we do in 99% of the time, it’s actually meaningless.

2. Template literals = `hello ${name}!`

It’s a nice feature, but to be honest, is it really critical to be a core part of the language? I agree that the ability to write multi-line string can be incredibly useful. if we could only enforce having semi-colons at the end of commands, are code will become much more concise and everyone should know that line breaks means nothing to the compiler. And again, I don’t think template-engines are wrong – I just don’t think they should be part of a core language. Keeping them as a separate library will allow them to evolve independently. Why evolve? because we might want conditionals, loops, sub-templates and millions other things. why limit it?

3. Arrow function

Array functions are less readable. don’t. just don’t.

4. Multiple return values

Functions return a single value. It’s a mathematical thing. This single value might contain an array, or a set of values. We might want to be able to easily parse to values (talk about splat in a second), but the bottom line is that function return a single value. Trying to return weird things like { obj1, obj2 } which is actually an abbreviation of { obj1: obj1, obj2: obj2 } create syntax anomalies which in turn makes the code less readable.

reduce the anomalies! stop adding more of them! On a side note, I never really understood why typeof and instanceof cannot be simply treated as functions. or why the are different from one another. inconsistencies is what makes any language dreadful. This is something I would have like fixed.

5. For (;;) => For (…in…) => forEach(function) => for (…of…)

So For…of is just like For…on, only it’s more useful as it actually return the iterable elements of an object and not all its elements (which might include functions, for example). we’re having a zillion of loop and iterations that one cannot deny that this is a money-pit and there’s never going to be a solution that makes everyone happy. And that’s ok – but why incorporate ALL the solutions in the language? it only makes it more complicated.

why can’t we simply say that object has an iterables property, returning an array of its iterables so “for (key,value in Object.iterables(map)) {}” would iterate over ONLY the relevant items and in each iteration key will be index and value will be the iterable object itself. there. problem solved without adding a new command.

We already have Object.keys, so it shouldn’t be a problem to add Object.values and Object.iterables.

6. Parameters default values

Avoiding the need to handle default values within the code is very nice, but it leaves the devil an opportunity to introduce hell when my default value is actually a function that runs… when?

This is one complexity I think we should avoid.

7. Splat, Spread, Splat and Handling named parameters

We’d like a feature that says – “hey, all these values should actually be part of an array” and vice versa – “hey, this object is actually is a bunch of separate variables”

Here comes splat – “” which is an ok idea. so why can’t we simply have the other way around


  function myFunc (...numbers) {

  return number[2];

}

myFunc (1,2,3); // return 3
function myFunc (values..., ...other) {

  return (first + second + other[2]);

}
myFunction ({first:1, second:2}, 3,4,5) // return 8

in my example “values” doesn’t exists anywhere – it’s created and immediately breaks apart to it sub-elements.

In the current proposal “…” is actually used for both scenarios – either to collect variables and to spread them. I suggest the position will hint it action – …collect, spread… making it much more readable

It’s worth mentioning that whenever you invent a new element in a language someone is very likely to use it in a way you didn’t expect. For example, what will happen if I write source…target. well, you guessed it, it will break source to different elements and recollect back them to target.

8. Method definitions instead of function expressions in object literals to

the ability to write var obj = { myFunction () { … } } is pure laziness and breaks the consistency of the code. That’s bad.

9. Classes and Class extends

There’s ruling paradigm called “object oriented”. But javascript isn’t about it. JS is about manipulating JSON objects. JS is perfectly fine without classes. stop forcing it into something it’s not. All JS apps start small and fast but as soon as they become robust, they also become incredibly slow. So, people, please trying to make complicated JS. you’re killing our web!

Prototypical development means that whenever I get a JSON from the server I can easily apply function unto it – cat.prototype = catBehaviour. so now the cat JSON I got can cat.meow(). I don’t really need to create a new object for that. why do you insist to make thing more complicated?

I agree that the current prototype mechanism is slightly too complex but why not simply fix it?

10. From objects to Maps

Javascript’s Object suffers from having string keys. not only that but there’s an escape issue with them. so ES6 introduces a new element type just to solve the escaping issue. seriously? I’ve never bothered with that. If you go ahead and fix that (and not clear why not update the existing object) – why not have the keys as any object (you can flatten with JSON.stringify internally if you want)

11. New String and Array functions

Yes, with ES6 you can now have string.startsWith(). but, seriously who care?

you do realise that because you now decided to use this stupid function, you’ll no longer support ES5-only browsers, right?

and maybe this is what it really comes down to – Languages should have extremely long cycles – let’s say update a language every 5 years if not more, in order to give it time to propagate everywhere. Javascript is the most important language de-facto in the world today not because it’s a great language, rather than because everyone uses it. If you make it into something that not everyone uses – they’ll just keep using ES5. All those small nice-to-have function should be on external layer, or framework. Let’s call the language coreJS, and this will be scaffoldJS, and this can be easily updated, let’s say every 2 years. On top of that we can have libraries that every developer decided which to use – a reasonable update time for this should be 6 months.

js-core should be super-stable, super-consistent with itself, super-reliable, super-simple (and not super-easy) and super-fast. once we can have that, we can start talking about the external layers or silly features like startsWith or arrow functions.

Passwords are troublesome. I can tell they’re troublesome because most website have the “Lost your password?” button readily available. Because password tends to be lost, or forgotten, or entered via keyboard with different layout (Try using the “£” symbol and good luck to all american-keyboards users).

Passwords are crackable, as majority of people don’t understand the likelihood of someone trying to break down their password. So to make the life of hackers slightly more difficult we now have the CAPTCHA mechanism, that aside from being already cracked by hackers is simply annoying. In fact, the “Lost your password?” is annoying too – you might as well call it “Annoyed? Click here”. Think of it this way – the user clicking this button is only one step away from not using the service.

And funny enough – this button is actually the solution to our problem. When you click button a two-steps authentication is initiated – usually via email which includes an unbreakable code that allows to update your password. Well, why just change password? Why shouldn’t it allow access to all the service?

With this reasoning, once you can you edit the password – the service is practically accessible and should therefore be so!

So instead of asking the user for his username (which is usually an email anyhow) and password – why not simply asking for the email?

So here’s the entire procedure

  • user open service, type in his email, click submit
  • A special token with time of creation and the user’s IP is created and sent to the user’s email
  • User click the link in his email
  • Token is sent back to the server and is verified that the IP matches and token hasn’t yet expired (let’s say one hour from token creation time)
  • A new token is created with user-id and user’s IP and sent to the user, encrypted
  • The user cannot decrypt this token but whenever he communicate with the server he passes this token along to authenticate himself

The browser should keep the authentication token for a reasonable time – let’s say 3-6 months, during which the user won’t have to go through this process again. This cookie should not and cannot be simply copied to another machine as it require the computer to have the same IP. And if you’re truly concerned with security, the service can ask the user for his public PGP key along with his mail and thus send him an encrypted mail only he can decrypt.

The only problem with the mechanism that I found is that it requires your user to temporarily leave the service and check his email. How many users will you loose because they forgot to return and how many will you loose because the password was just another hassle they didn’t care to handle?

Six years ago I made a video predicting the way we would interact with technology in 2020. Truth be told, it was more of a commentary on Minority Report movie, and having strong belief in augment reality. This video still gets comments, most referring to the probability or improbability of such interface considering today’s technologies advances. My usual response is “hey, this prediction was done when touch technology was only surfacing!”. I think it was a relatively good prediction back then. But things have changes since then and I was asked now and again what is my prediction now.

I should give credit dues, just as the previous prediction wasn’t mine (although the vision was. Making that video wasn’t simple with zero budget!), this idea isn’t completely mine as well. I have two sources to rely on – one is this TED lecture by Tom Uglow and the second is Harry potter. I should also give some credit to my sister, whose been bugging me for year to invent a photo-album that can also store short videos.

Since 2009, I became an environmentalist, and I’m much more aware of the economic fragility that began at 2008 and I believe will never fully recover. That in mind, I can give 3 predictions. The first is that most things will stay as they are: after all, the difference between iPhone 1 and iPhone 6 are negligible.  The second is that the economy will collapse before any major improvement will take place. Just like Cuba got stuck somewhere in the 50s, so we will get stuck with today’s technology for years to come, It’s actually a lot more horrid than you think, because things built in the 50s were built to last, while today, electronics simply die after 5-10 years (I’m still proud owner of an iPhone 4, that today for some strange reason would ignore my attempts to communicate with him for an hour so. Very frustrating.)

But let’s imagine humanity will able to pull it through. In my most optimistic vision, where do I hope technology would lead?

Imagine you have a book. an e-ink paper book, so every page is actual screen. Now comes the important question – why would you need a book filled with many e-ink screens? and there are two answers – one is to give the book a sense of essence – weight, and the second is that each page is actually a bookmark to a different page you’d like to keep. Of course you can have a virtual bookmark, but it’s much nice to browse through the pages to find what you’re looking for. the size of a book is a personal issues – kids would probably want a small simple book to begin with, while scholars would probably go with a big leather-cased book. They’ll be proud of their big book, just like people were once proud in their enormous library of book which they’ve never read in their life but they hoarded because it made them feel more intellectual.

Some spec – so every page is a double-sided e-ink screen, sensitive to a special pen that can be used to write on it. the cover contains the actual computer; It might also contain a small solar panel can use to charge the battery that helps to run your book for weeks on end. The cover also contains a WIFI adapter that connects to other books to form a network of books sharing an online connection to the internet.

Reading stuff from a book is somewhat intuitive – just open the book and read, when you reach the end of the page, simply flip the page and it will automatically show the next page (of course you can scroll down in the very same page, but why?). If you happen to reach the end of the book but the current content didn’t end, simply press the marked circle at the end of the of the page and flip back a few pages, When you let go of the circle, the new page will continue with the previous content. Writing is also very intuitive – just use the special pen and start jotting down on the paper as the e-ink will display your scribbles.if the first line of your text was underlined – that will be the title of your text (otherwise, the title will be the time and the first few words). Erasing text is also easy – simply use the the other side of your pen over written lines and it will be erased. When you’re ready to save your content, simply draw a save icon, a circle around it and press on it for two second, the circle will blink and your text is saved. Which brings us to actions in general. To issue an action, draw it’s icon; a circle around it and press on it for few seconds. If your don’t know which actions are available, draw the hamburger icon (three lines) and a menu of all available actions (and their icons) will pop. Some applications might have actions button already appearing on the page and then all you have to do is press them for two seconds. The text is saved in your hand-writing, but you can transform it to actual text at any time.

I don’t think there’ll be application in the book. At least not as we know them. Mainly because no one really cares, which application they’re using, as long as they get their work done. Why would I want to deal with incompatible versions or upgrades or anything like that. But this doesn’t mean you can only read and write. Obviously you can read and write mail messages, by a adding a “To: xxx” at the top of the message and drawing the “send” action. Your inbox will appear on one page and by marking a message and flipping to the next page, you’ll be able to read what your grandmother has send you. Flipping back will bring you to your inbox again. crossing over the messages will remove them from the inbox the next your flip a page. Searching the web is also easy, write your query or question and draw either the search or the question mark action icons to see the answer form in front of your eyes. The big difference between a general query and a question mark is that the question mark is curated – usually more focused but my be limited at times.

A great way to interact with book is the use of bookmarkspicture of a book. Whenever you have content that is important to you and want to have a quick reference to it in the future, just put a sticky bookmark on the side of the page. you’ll quickly see a black border forming at the edge of the page. Now, whenever you open the book on that page, the previous content will pop up. If, however, you’re reading content that extends over several pages and your flip through a bookmarked page, your bookmark will give its place to the current content your viewing, as if it wasn’t there. To quickly switch back to the bookmarked page, take the page up and down and quick motion, as if the knock the previous content from it. Note that when looking at another page’s content, removing the sticky-bookmark and re-applying it will cause the un-bookmarking the previous page and marking the new one instead.

As regards to Music and videos – personally I don’t think books should be used to play music. You will probably have a seashell-looking speaker whose interface is very likely to be like today’s iPod. and videos will be played using a crystal orb or projected. Not that music and videos are strangers to the book, but that’s not its purpose and I consider it a waste of battery-life. You’d probably disagree, but heck, if Steve Jobs allowed himself to limit the user capabilities, why can’t I.

And on a closing note-