30th Anniversary of the June Democracy Movement in South Korea

Democratic consolidation: The process by which a new democracy matures, in a way that means it is unlikely to revert to authoritarianism without an external shock. – Wikipedia

Today marks the 30th anniversary of democracy protests in South Korea–known as the 6월 민주항쟁 (the June Democracy Movement)–that led to democratic consolidation in the South Korea. While so crucial to the identity of Korea today, and even having learned about it in school, its significance wasn’t in my consciousness until much later as an adult when I had gained a greater appreciation of the human fight for progress (which continues today!) across centuries, especially recent decades.

(Aside: Much of that recent appreciation came via a Democratic Development MOOC on Coursera, taught by Stanford professor Larry Diamond. The movement in Korea itself is part of the greater context of a democratization wave (1960s-1980s) across Asia, worth learning for those w/o contemporary Asian history context)

As I started the appreciate the historical relevance that happened in the span of my family’s lifetimes, the need to be proactive in dealing with today’s challenges is also clear, as the fight for democracy continues across this world.

The background of the Korean protests are fascinating and worth reading into (I won’t go into them here), but despite much uncertainty, they ended peacefully, with concessions from the then-authoritarian government to rewrite the Constitution and established the Sixth Republic of Korea, leading to the following promises being implemented:

  • Direct participation in upcoming presidential election for all citizens over age 20
  • Freedom of candidacy and fair competition
  • Amnesty for Kim Dae-jung and other political prisoners
  • Protection of human dignity and promotion of basic human rights
  • Freedom of the press and abolishment of the restrictive Basic Press Law (see: Media of South Korea)
  • Educational autonomy and local self-government
  • The creation of a new political climate for dialogue and compromise
  • Commitment to enact bold social reforms to build a clean, honest, and more just society.
    https://en.wikipedia.org/wiki/South_Korean_presidential_election,_1987

I had just turned 2 at the time, so I have no recollection of the actual protests, but my parents do remind me that it was only months before we moved to the U.S. in late 1987. By the time we moved back in 1995, it had only been a few years since the events, but indeed, at least what I observed and felt like a functioning democracy.

Through the eyes of history, these events are seen as the Asian component of the Third Wave of Democracy, which also includes similar movements in Philippines and Taiwan. As most of the world knows, these transitions from an authoritarian rule to democracy are often messy, with the principle characters being young people (students) against the various proxies of authoritarian regimes.

And not all of these movements succeed or remain peaceful, as sadly, we we’ve seen recently in the Middle East after the much anticipated Arab Spring, and when things go wrong, horrible things can happen like the ongoing tragedy in Syria.

And with major disruptions in stability, the temptation of authoritarianism when facing crises real, or amplified by the political climate is ever present. One notable rollback of liberal democratic norms has been in the Philippines, which despite their history of democracy, we are seeing with the current administration, a steep decline in the rule of law, and a sharp rise in populism, supporting a distinct shift toward an authoritarianism. For someone like me, who focuses on trends, this is not encouraging, and across the world, we’ve seen with a rise in those willing to fan the flames of populist resentment. Not in Korea though, and with the newly elected center-left president, Korea’s execution of democracy moves forward.

Still, advocates for democratic development can take hope in the one more recent event in South Korea: the overwhelmingly peaceful civil protests that ultimately led to the impeachment of President Park (a constitutional process that hasn’t even (yet) happened in the U.S.). With this and the subsequent peaceful transition of power to an opposition party president, it is clear that despite the chaos, it was a test and a win for the rule of law, democracy as a principle, and the people at large.

I actually remember when I was younger, seeing a US official address a crowd of students in Korea. Referring to the idea of “national stability” — he said something along the lines of, “In Korea, if you had an impeachment, the country would tear itself apart.” Glad to see that wasn’t true.

Politics aside, kudos to Korea for demonstrating how democracy is done! It is something the country should be incredibly proud of. What had been still on formation while growing up, as of today, I’d say that it is one of the few true democracies in East Asia, along with Japan and Taiwan.

Looking back at the last 30 years, I think it’s important to remember the active role the citizenry must play in fighting for and preserving democratic norms and values. The global push and pull of nationalism and internationalism has never been so readily apparent, and in this joined mission, we must realize that the universal principles and norms of liberal democracy must be fought for and the battles, and heroes, remembered.

The specific date of the anniversary does celebrate one particular incident — a democracy movement protester that was killed by a police tear gas grenade. That event is considered crucial to bringing public awareness to the authoritarian regime’s violent crackdown of the protests and is considered a pivotal moment in public sentiment. From that shift, ultimately, the government conceded to the demands of protesters seeking democratic reforms.

Today, Korea remembers this day to remind itself of how freedom from authoritarianism must be won, and to remember those who fought in that struggle.

Awesome Game: Screeps!

I’m here to briefly rave about this game I’ve been playing called Screeps. This real-time MMO AI programming strategy game has managed to get me to spend the last 4 hours writing and tinkering with my own game AI, code, which is deploayed into a substantial persistent universe populated with every other player in semi-competition. A brilliant concept, made by these dudes in Russia.

It’s the best experience I’ve ever had playing around with JavaScript (which, I’ve actually been wanting to work with again for my next project… the last one having been a simple WinJS app back in the WIndows 8 days…). and like software development, a highly satisfying experience when things just work, and an agonizingly annoying one when things don’t work. But whatever your JavaScript skills are today, this game will make you better. (The “CPU” and “memory” quota limitations imposed by the game encourages efficient code.)

Out of my time with this game, I hope to practice development patterns for autonomous agents and to start working with swarm AI behaviors. And of course, as a side benefit, practice JavaScript, which I’ll be using with node.js in a future project! At some point, I hope to apply some of what i learn here in practice in the real world, possibly as we develop drones for defensive purposes.

Now, onto the game…

Simple interface, but insane freedom

The game itself features a simple 2D GUI that can be run in a window or from the Screeps website, where it renders in a browser. You can actually view the world without being a member, but to participate in the persistent universe, there is a paid subscription of around $8 / month (I haven’t decided if I’m going to continue after the first month). It’s cheap though, and as long as it provides me entertainment, I’ll continue to play. The game in the browser scales incredibly well – I even managed to get it loaded on my phone, though the touchscreen didn’t lend to a good experience.

Since you don’t control the units via the GUI, but rather, through code, the bulk of your time is going to be spend in the IDE, tinkering around with your unit and colony behaviors via Javascript code. Finally putting my Game AI programming concepts to use!

I’m pretty proud of my little colony so far; it’s like managing my own colony of ants. Brings back old memories of playing SimAnt as a kid.

The competitive aspect is perhaps the coolest part; very evident even within our own group of “novice” players that there those which are more engaged than others. While their code isn’t visible to you, being an open world MMO RTS, you can see every other player and room. For a few of the more advanced empires, I’ve been trying to reverse engineer useful behavior algorithms to see how to create a general purpose empire expansion code base. AI programming indeed!

Procedurally-generated rooms, mostly. Some substantially better than others. Each symbol denotes a different player’s territory. Because We’re in the “green” novice zone, the massive empires looming just outside can’t touch us. Yet…

I’ve always loved learning with an objective, and the framework of this game is an excellent way to focus on logic. The survival element encourages experimentation, and though I’m still early in the game, I decided to break the peace and send out a few of my “defender” units. You’re competing with every other player in real-time–basically your code vs. theirs, so I figured that I’d want to hone my little empire’s abilities to eventually advance beyond it’s “novice” borders. I went into the nearest player’s base and annihilated their walls, workers, resource storage, and “spawn” (which is where new units are created). This leaves the control point to slowly decay, until my own colony units area able to take over.

Attack!

Such slaughter is the cold work of empire building, though, it looks like, to survive, I’m going to need to know how to fight and grow beyond my own box.

AS for the scale of the game’s persistent univserse, so far, it is massive. The below screenshot is just a tiny segment of the scroll-able space, so it’s a huge amount of virtual territory, though of course, it would have to be, since it includes every other player in this single instance. I can’t tell how much further it will scale though, since right now, the game seems to crawl at around 5-10 seconds / tick. They’ve shared their infrastructure details, which is actually a fascinating read, though, perhaps, they could do something to speed the game up, maybe 2-3x.

My “empire” is but a tiny colony among a massive ocean of empires. Better get coding..

Great game. I will post more about it as I play further! 🙂

 

SoundRemote for Android Wear Launched!

I got my Moto 360 smartwatch in April of 2015, and since then, I’ve been pondering what kind of apps I’d want to make, for education, fun, and profit. Today, I’m releasing my first: SoundRemote, a simple Android Phone/Wear app combo that lets you remotely trigger sounds from your watch to play on your phone.

I got the idea while I playing animal sounds from my phone to mess with my cat, Sherman. He’s an indoor house cat, so I try to provide environmental enrichment to keep him (and myself) entertained. At the first hint of another cat’s meows, his ears would perk up and start roaming around looking for the source, even trying to dig under the sheets if the phone was hidden under them.

With this phenomenon in mind, I wanted to create a way to trigger multiple sounds remotely. And I figured — this could be a cool Wear app, and started in earnest to learn the Wear SDK and media frameworks. A few months of intermittent work later, SoundRemote is now published on the Google Play Store!

SoundRemote is my first Wearable app and second Android app generally (after the poorly-named, but still useful Life Counter). Though it took much longer than expected — for a total of perhaps a solid week of work over the course of a few months — I’m quite satisfied at the outcome with v0.1.

The app is pretty straightforward — you pick a few sounds from your phone’s Notifications directory, which can then be played directly on the phone or triggered via the companion Wearable app on the watch.

This being version 0.1, it isn’t the most pretty, but it does everything I need, and perhaps some more. Hope someone else finds it useful as well.

Per usual, I’ve uploaded the source code to Github for the world’s enjoyment. For v0.2, I hope to have two way-syncing of names between the phone and watch, and maybe prettify it a bit more. Both P2s, so it may be a while… 😛

In the meantime, happy cat-pranking!