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.
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.
- 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”)
- 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”.
- 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.
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.
My significant other took me to watch the documentary “Embrace“, which essentially talks about women’s indoctrination to despise their own body and encourage them to accept their own imperfectness. Albeit being well-made, I would claim that the movie didn’t tell me anything I didn’t know beforehand but more importantly – it offers a half-baked solution that is bound to fail. I’ll get to that later.