Archive

Monthly Archives: June 2017

This weekend I had the pleasure to attend the CancerDataDive Hackathon hosted by ProductForge at CodeBase. The general idea is gather around a bunch of young enthusiasts for an intensive work and try to come up with cool innovative ideas and proof-of-concepts. This is a great idea for an institute to get developers pay to contribute their skill and capabilities for its endeavor. I also learned that sometimes companies use Hackathon as a recruiting tool. To be honest, I think it’s actually a good idea as you get to see people work and interact with others in something that does feel like fun (as opposed to “feels like work”). I have some reservations as this intensive, incredibly-loud and overly dynamic environment doesn’t really represent real-life (and defiantly not my cup of tea), but still – coping with such intensity should qualify as a good trait.

My 2cents would go for the team-formation-part as I was rushing for another event and I tried to make it as efficient as possible. Fortunately, I immediately targeted the single person who mentioned he had an idea for a project and teamed up with him (later to be joined by 3 other gentlemen). The rest of the people were struggling to both find reasonable teammates but also come up with a startup idea at the same time. I think it might have been much more productive if we could first brainstorm ideas and then create teams based on commitments to ideas rather than “well, these folks don’t strike as psychos, now we need to think what we can”.

For whatever reason, my team decided to base our application on Meteor.js. As I admit that my preferred style of vanilla.js is not feasible for fast-pace project I agreed, hoping to learn more about this framework.

We didn’t try to publish to mobile app, which Meteor presumably allow so I cannot comment on that but I can tell that I found myself cringe as Meteor expect/allows you to write the db-access function in the front-end. In that sense, it doesn’t differentiate between client-side and server-side at all. This flaw isn’t crucial only when you have (near-to) unlimited bandwidth, otherwise your app will falter once you’re actually trying synthesize large volumes of data and send to the front-end only a sub-set. You, as the developer, won’t have the ability to handle it.

We actually came to this problem as reading data from the database happens presumably synchronously but in reality it returns an undefined value only for the function weirdly run in a loop until the data is retrieved. That’s probably one of the worst ways to hand asynchronous command. Instead, I would have advised to pause the code until a response is retrieved (mind not to hog the cpu, though – only the thread) or fork to a separate thread once the data is retrieved.

Another task I found unreasonably daunting is updating a the screen once it already displayed. Yes, I could simply write to DOM myself (which I eventually did) but as Meteor is based on Mustache.js, I didn’t find how to tell the template to re-run itself.

Lastly, accessing component’s variable kept changing depending on the current function – one time it’s this.variable, sometimes it’s this.data.variable and other times it’s Template.instance().variable. Weirdly enough Template.instance() doesn’t indicate which template is being referred so calling a template’s function from a parent function might introduce the wrong template’s scope. Ultimately, for the quick-and-dirty job required, Meteor pulled through, without wasting too much of our time, but for longer hauls I’d rather go Vanilla or any smart framework.

That said, I did enjoy rapid development. It’s incredibly reckless (no time for testing) but I understand why customers would like it as it provides results very quickly. We discussed the financial cost of medical errors, which amounts to roughly 25% of the ministry of health’s budget – and let’s assume this number is right for software bug fixing as well – how much time/resources should we spend on writing tests beforehand? The cap would probably be 25% so I understand why customers would like to save that portion of the money but in reality it’s going to be spent one way or the other.

However, what I learned from this project is that development is incredibly unimportant for hackathons, which is quite sad for the amount of developers that attended – The entire event revolves around thinking about cool ideas and pitching them in  1 minute talk and then a 6 minute presentation. You don’t have to – in fact, you’re expected not to – show your working application as experienced taught them that 72-hrs-worth code is too likely to break down. So my advise is to simply not code at all, rather than make a beautiful mockup and a presentation filled with pictures of cute puglets. Yes, your presentation should talk about your ideas feasibility – both in the sense of development and in the sense of legal issue. That’s why it might be helpful to have an engineer-mentor and lawyer-mentor to give advise but generally – Hackathons are for people who collaborate on ideas and not necessarily on code.

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.

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.