Why the “handover” of the internet is a nonissue

I am writing this article because many media outlets are dumbing this current situation down. What exactly does “handing over the internet” mean?

The internet links many machines together. When you visit a website, you are visiting a machine. How do you know how to get to this machine? IP addresses. We don’t memorize IP addresses, but we do memorize domain names. For instance, we know 1600 Pennsylvania Ave NW as the White House. This system works very well. Except, how do we know which IP address(es) correlate to which domain names? And if they control this, how much control do they have over the assigning of domain names and IP addresses?

It turns out that the organization that controls the “address book” of the internet is called IANA, which is owned by ICANN. IANA operated the DNS root (“address book of the internet”) under the supervision of the National Telecommunications and Information Administration of the US Department of Commerce. On October 1, 2016, the NTIA’s contract to let ICANN control the DNS root expired and control of the DNS root was ceded to ICANN.

One major bit of information that media outlets and Ted Cruz have failed to mention is that this DNS root is only the most popular one out of many. It turns out that there are also many alternative DNS roots. They can also choose to add their own top-level domains (TLDs; e.g. .com, .net, .org, etc.), and they have. Ever heard of “.free” or “.geek”? IANA’s DNS root does not have either of these TLDs in their DNS root, but OpenNIC does have these two TLDs. OpenNIC has been around longer than Ted Cruz has had his concern that the internet will be hijacked by other countries. His argument is fallacious, simply because other countries could hijack only one predominant DNS root, out of many DNS roots. If the predominant DNS root were hijacked, it would be very easy for the US to simply route major ISPs to start using a non-hijacked DNS root. Don’t forget that Russia and China, instead of whining about the US’s control over the internet, instead created their own DNS roots and methods of censorship. Regardless of whether their actions were good or bad, they found a solution to the problem.

A prudent solution would be for the United States government (and I even suggest other organizations like the EFF) to maintain a backup of the DNS root to its liking. That way, if a foreign country truly does begin “censoring” in the predominant DNS root, we can simply switch DNS servers on our machines to begin using our preferred DNS root. Better yet, just begin using OpenNIC, if you’re truly paranoid about internet censorship à la DNS.

As someone who owns domain names, I obviously have dealt with ICANN. I do believe they do a pretty good job. They won’t suddenly be swayed by foreign countries, and if they do, we’ll simply switch to another DNS root. Think of ICANN as the United Nations. If a country truly did not like the UN, they can simply leave. In fact, Switzerland didn’t even join the UN until 2002, and Indonesia left the UN in 1964 (only to rejoin in 1965). The internet is decentralized and this is simply an administrative change that has been waiting to happen for a long time. There’s nothing to worry about.

The Olympic Creed

In honor of the Olympics:

The most important thing in the Olympic Games is not to win but to take part, just as the most important thing in life is not the triumph, but the struggle. The essential thing is not to have conquered, but to have fought well.

—Pierre de Coubertin

On my 2016 AP exam scores

I wrote a similar blog post last year regarding the 2015 school year administration of AP exams. I realized that the blog post covered the entire AP experience, but I will continue the naming convention for sake of naming conventions. 🙂

I took a truly college-level difficulty course where the grades reflected the difficulty. I struggled through twice the amount of history class notes. I have little to no reflection as an introducing summary for this year so I’ll just cut to the chase.

So it began the second year of high school. Did you know it began at the end of the 2014–2015 school year? I did not even know my AP Biology score at the time, yet our Biology teacher sardonically handed a piece of paper as part of the “iceberg” of summer learning for AP Chemistry. I was scared to death and I had a bad feeling about AP Chemistry. The only chemistry knowledge I had was from 4th to 8th grade. So, a periodic table, protons, neutrons, and electrons. Yikes. I was even iffy on what an ionic bond was.

Meanwhile, the end of the Humanities GT World Geography class (in actuality a Historic World Cultures class) marked the beginning of my other two AP classes I would take next year. AP World History was the natural continuation of GT World Geography. However, I didn’t really even learn world geography. I was quite disappointed. Additionally, the next year’s GT freshmen would be taking AP Human Geography instead of GT World Geography like we did. Over the summer, I added AP Human Geography to my schedule and was determined to expand my passion of geography-like subjects, as I had fallen in love with on Wikipedia.

I had a good feeling about AP World History and AP Human Geography. Their coursework might be painful, but typing notes on my computer is not a big deal. Furthermore, the note templates of AP Human Geography were quite a refreshing change from the by-paper power notes of 9th grade World Geography. However, they minimized the effectiveness of reading the entire AP Human Geography textbook. That was important because the test actually covered the small details of each textbook.

When I started school, I didn’t feel bad about World History and Human Geography. Actually, at times, World History seemed like the easiest class that I had. However, Human Geography, catered to freshmen, was more “guided” and therefore contained more busy work. While it was easy, it was tedious.

I don’t feel these two AP classes were that difficult, so I won’t explain them any further.

The class that gave me the most grief was AP Chemistry. I had an extremely experienced and talented teacher who was tough on grading and even taught in a college before. She gave lectures that you didn’t want to miss but the key to success, like any other college class, is the textbook itself. I did not know this until second semester, so my grades plummeted as I started to realize that I really didn’t know what I was doing in the class. The material was tough to synthesize, I started to fail quizzes, and on each test, I was so nervous that I felt cold, my heart sank, and I was sweating a lot. It was terrible.

I did so terrible once that I nearly failed a test. (Was a 69 before a 3pt curve bumped it up to a 72.) It was then that I realized I had to study hardcore. So one entire day before the test, I simply did textbook problems going over that unit. If I didn’t get a question right, I would figure out why and do another similar problem until I got it down. I would also read the textbook a lot to make sure I got the concepts down. The test I was studying for was the hardest test of the year. I got a 101 after a 4-point curve. This is not a joke. I felt SO happy. And this studying regiment continued for the rest of the year.

The only feeling I had that was better was when I saw my AP scores.

Screen Shot 2016-07-05 at 5.55.14 AM

I felt I had finally completed my goal of mastering an AP science. I had gotten a 4 in Biology, and truth be told, I felt just awful about it, getting a lackluster result in something I worked so hard in. And I am happy to finally show my love for history and social sciences in the form of an AP score too. But AP Chemistry was really difficult and I am just stunned at how much I had grown and learned within a year.

Thank you so much to all of my teachers. I can’t thank you enough. That’s probably why Chinese culture believes a student is forever indebted to their teacher.

It’s time to develop ClearCloud 2

In the spring of 8th grade, before my friends and I entered AP Computer Science, we went in the direction of developing programs. Two friends developed a simple but quite fun retro-style “racer” similar to Bill Gates’ Donkey game. The web programmer I was, I decided to develop ClearCloud, a file storage service. I had read an O’Reilly PHP book with a section explaining how to handle file uploads and I decided to quickly hack one up.

The result is a continuing file storage service that still exists today. (https://www.mywikis.com/clearcloud)

While it (barely) works, it is very hacky. The code is absolutely terrible. I followed no conventions except what felt, at the time, to be “right.” The result is an unmaintainable code base that cannot support any expansion or addition of features. Simple security flaws are patched, but not complex ones.

I realized this a year ago and began work on making a new ClearCloud from scratch. Today, I still do not have a better version. It was almost going to be my team’s Computer Science 3 class final project, but it was decided to make BoxBot. (Visit boxbot.me for more info.)

This time, I want to achieve several goals:

  • A clear distinction between frontend and backend. The previous version horrendously mixed the two together.
  • Object-oriented design. The old version was a miserable (but educational) attempt at object-oriented programming. This time, it’ll be better now that I finally understand what it means. Modularity is also a central component of this.
  • Clean, readable code that makes sense and is hopefully well-documented. While documentation isn’t my priority, clean code is.

When I had the opportunity to work on projects such as Terml.io, Pattr, BoxBot, etc., I gained exposure to Python with a heavy amount of Flask. The overarching format was a single-file Python script that wasn’t very object-oriented. For the purposes of ClearCloud 2, I have seen first-hand that this won’t be enough. There’s simply not enough modularity or extensibility offered by this format. Furthermore, I am interested in implementing CC2 with Apache/Nginx traditional systems and not WSGI. Finally, the language that I have been most comfortable in implementing frontend-backend unions is PHP. I agree that it might not be a good idea to mix the frontend with the backend, as that has been the root of my problem with adding features to ClearCloud. However, I am not in the mood of maintaining a daemon that continually runs on a VPS, and products like Django and Flask pose the same issue. Moreover, the backend will probably be using features that PHP offers in its native libraries. (At this point, Python libraries are not something I want to deal with.) This is why I have decided to continue using PHP for the development of CC2.

You may now pelt your rotten tomatoes at me.

Anyway, I will probably move this to GitHub, as long as they don’t go down again. I don’t know if anybody wants to help me this time, but you’re more than welcome to do so. Just ping me if you know me, and if you don’t know me, you may find my contact information on this website.

Hoping for the best.

Mastering the art of free Gogo Wi-Fi

There are many things you can do to get free inflight Wi-Fi without having to shell out your money. Some are unethical and others are customer freebies. Anyway… let’s get to it.

Note: At the bottom of this page, I have a list of resources for what may interest you.

1. Via T-Mobile

As a T-Mobile US customer, you just need to input your phone number into the special T-Mobile landing page and you get an hour of free Wi-Fi.

Here’s the catch: you don’t need to be using this on your T-Mobile phone. You just need to have a T-Mobile phone number with Wi-Fi calling used once. To avoid pissing off your family member or friend also on a flight and using T-Mobile, just use the phone number of someone not on the flight (and yes, it works!)

How would you get this to work on a laptop? Simply download an extension on your browser that changes the user agent to one of a phone, then visit airborne.gogoinflight.com and you’ll see the “Only for T-Mobile customers” plan appear. Click on it and authenticate as usual. It truly works.

After you have authenticated, you can return back to a normal desktop user agent and Gogo won’t notice. All should be well.

You can simply change your MAC address and do this again with another phone number after the free hour of Wi-Fi has passed. Clear cookies to be safe. Sneaky, but yes, it should work.

(Also, sometimes the T-Mobile free hour of Wi-Fi will continue working slowly.)

2. Google App Engine Proxy

In a nutshell (TL;DR), Google’s IP addresses are whitelisted by Gogo even if you haven’t bought anything. In addition, if you edit your /etc/hosts file (on Unix systems), then you’re able to assign other Google subdomains (like mail.google.com) to this whitelisted IP. For example, this is my /etc/hosts file: mail.google.com appspot.com plus.google.com youtube.com drive.google.com code.google.com voice.google.com hangouts.google.com developers.google.com gstatic.com apis.google.com googleusercontent.com googleapis.com ajax.googleapis.com fonts.googleapis.com console.cloud.google.com accounts.google.com dl.google.com

Suddenly, services like Gmail, Google Drive, Google+, etc. will begin to work.

Originally from: http://bryceboe.com/2012/03/12/bypassing-gogos-inflight-internet-authentication/

See http://www.hongkiat.com/blog/proxy-with-google-app-engine/ for more information on making a GAE Proxy.

3. TCP over DNS

Once traffic is being sent over a TCP over DNS tunnel like Iodine (code.kryo.se/iodine), it probably will be slowed by Gogo in an effort to combat DNS tunneling. It’s not recommended because it probably won’t work, takes a LONG time to set up, and is only 1Mbps at the fastest. However, if you know how to access your TUN/TAP device, you’ve done preflight configuration ALREADY, none of the other things above worked for you, and you’re in the mood for experimenting, try it.

How-to section:


Why I play Pokémon Go

If you know me well, you should be pretty shocked that I play Pokémon Go at a moderate level. I’m not the kind of person to play Pokémon Go and I never have been. When I was 5 years old, I dismissed trading cards and other pop culture as shallow and pointless. Yu-Gi-Oh? Stupid. Pokémon? Even more so. Superman, Spider-Man, Batman? Illusions. I knew that these fads would get me nowhere and I found them annoying. I didn’t want to join the cult.

So why would I even consider playing the game now?

Let’s look at my friends. One friend has a Windows Phone and is fine with it. Another friend has a Windows Phone and hates it because the combat and capture features were corrupted from the original series. A third friend has an Android and hates it for its stupidity. A fourth friend has an Android and plays it quite a bit and is a member of Team Mystic. (I am also in Team Mystic. Guess how that happened.) A fifth friend has an iPhone and played it until level 5, then quit. Although he joined Team Instinct because his closer friends were on that loser team. Pfft. There are many more specific scenarios between my friends. However, there is no real pattern between my friends and myself, nor our decisions to play Pokémon Go.

Perhaps it might be because it’s the summer and I have nothing better to do. Well, I have a lot of things to choose from, but at the end of the day, yes, I am more open to playing Pokémon Go now than during the school year. Or perhaps it’s because I need to exercise more.

I was initially hesitant to play the game. After hearing about it from my friends, I decided to download the game on my jailbroken iPhone and it crashed. As Cydia didn’t even launch, the phone was effectively uselessly jailbroken and I decided to update to the latest version iOS, which would remove the jailbreak and allow me to play Pokémon Go. Before I did that, however, I was so bored and fascinated about the game that I decided to use my backup phone, a LG Leon LTE running Android Lollipop, to play Pokémon Go. It worked, even though it was rooted. But it wasn’t enough, because the phone was slow, so I went back to using my now unjailbroken iPhone and then Pokémon Go became fun and enjoyable.

The game was confusing and boring at first. So why did I continue? First, I was still interested in getting down the game mechanics and doing well in it. I also played Pokémon Ruby (or Emerald, I forgot which one) on my iPhone’s Game Boy Advance emulator for a while until it was accidentally deleted, but it was inspiring and fun! Additionally, as a pig, I need a carrot hanging from a stick to motivate me to exercise. I decided consciously that I would be able to control a game addiction while also encouraging exercise. (Side note: my serious gaming addiction began in 2008 with RuneScape and it seriously damaged me, or at least changed me. While I have not fully recovered from that massive scar, I have learned a lot from it. Perhaps I was numbed by the experiences of gaming addiction, but it helps me play Pokémon Go responsibly nonetheless.) It was a done deal and I began playing.

Today, I find myself playing pretty often and bringing me places I would probably never visit without the game. I play as responsibly as I can, in a fun way. When school starts, I will balance Pokémon Go with schoolwork. While the game’s community is full of addicts and irresponsible gamers, I am able to legally play, regulate my activity consciously, and control myself. At the same time, I am continuing to use the game to exercise. And it’s so much fun.

I encourage you to play the game if you think it’s the right thing for you to do. Not because you want to get addicted. Not because your friends all play it. But because you think it’s truly something good for you. Don’t ruin your life by playing it but don’t ruin your life by not playing it either. Ignore the differences between the original game, ignore the negative social perceptions, ignore the hesitancy, and make your decision.

(By the way, I don’t really care about all of the Pokémon animals or stories but absorption of Pokémon knowledge comes naturally with playing the game. Play at your own risk and try to forget about it if you don’t care for it/hate it.)

The MacBook Incident

The 3rd of November Incident, as I like to call it, or probably better named the MacBook Incident, represented a digression in the forward-moving “21st century-style learning.” I was never before negatively penalized for experimenting with technology. In fact, that’s how I learned programming and computer skills: through experimenting. After all, programming, computer science, computer skills, etc. are scientific fields, and experiments lay at the heart of that. Regrettably, McKinney ISD did not approve of this and instead took a step backwards like the GOP did with their platform towards homosexuality, to name just one example. It was the WRONG direction.

The below article was written about the aftermath when McKinney ISD punished several students experimenting with their MacBooks with administrative privileges. The first one victimized was myself.

We should be rewarding students for experimenting with tech, not punishing them.

November 3, 2015

Just over an hour ago, a student at my school was given in-school suspension (ISS) for finding an opportunity in the code on his school-issued laptop to enable administrator privileges. Now I know this student personally. He’s a good friend, and I know his intentions behind what he was doing, and why he chooses to pursue technology. It’s his passion, and he was merely trying to allow himself more privileges to experiment with some cool technology. On one hand, it’s fun to mess around on a computer, finding some settings to play with or a cool place to test some code. Although it can have some unintended consequences, it does have its advantages.

On the other hand, the school’s position is understandable. You don’t want 3,000 kids running around with admin controls on a school issued laptop wreaking havoc on the systems and the network, but one guy who I have never seen do anything remotely close to wreak havoc should never be punished with something as severe as ISS. At least they should let him off with a warning.

I believe this is a great example of the unrealistic restrictions imposed upon students in schools today, not allowing room for creativity or room to explore, especially through technology. As the fastest growing industry, companies in tech and STEM are looking for people who can think outside the box, love to explore, and have a passion for what they do. Restrictions to only use a school laptop for schoolwork, disabling the potential to explore more about a system or its parts is unrealistic and stifling to the creativity the industry is searching for today.

Although this small post won’t reverse the school’s decision or make this student feel any better about the situation, I hope it brings to light the type of students we need more of, and why the school district should better respond to situations such as this.

“Hack is not a four letter word.”*

*A popular phrase in the tech world to disassociate “hack” with curse words to a more positive connotation valuing learning and forward thinking.

— Justin Potts

I know the school district won’t budge though. The One to the World MacBook Air program is fundamentally flawed, and although I suggested an alternative implementation, what are the chances it will be taken seriously?

Let this incident remind us that our world is still very backwards and flawed, and that we must approach progress in technology with a new approach.


McKinney ISD’s One to the World program is fundamentally flawed

When McKinney ISD high schoolers first received MacBook Airs for learning, millions of tax dollars were given to Apple for these laptops. Originally perceived as changing the learning environment, the frustrations that the One:World program present to students reveal fundamental flaws to the entire program.

For one, students are forced to use a minuscule, locked-down version of one of the most powerful, elegant operating systems in the world, intended for much more than what is being used right now. And how about that tiny laptop screen? It’s too small.

Many of you know what happened to some of my friends and myself when we were fed up with this locked-down version of the OS and proceeded to escalate our privileges on the MacBook Airs.

What happened was I became angrier and more discontent with this program.

There were attempts to resolve this but unfortunately, as much as I appreciate these efforts (and I really do), they do not resolve the fundamental flaws within the One:World program.

Our school district has effectively used a local taxation referendum to extort more money from our property owners, originally intended for teachers’ salaries only. Now, these MacBooks are small, locked down and don’t allow for children to use these MacBooks as they please. Furthermore, McKinney ISD has many mechanisms (namely their Acceptable Use Policy or AUP) to enforce their restrictions in a most tyrannical way; I was a victim of this.

My parents are upset with how small the laptop screens are. They’re upset that taxpayers didn’t get to choose what laptops we could get. My parents, and likely many other parents of McKinney ISD, would’ve wanted larger, less restrictive laptops.

The obvious solution would be to allow parents to buy their children alternative laptops.

Unfortunately, this doesn’t work because McKinney ISD has built up a monolithic ecosystem where everything is controlled like a police state. Outside laptops could use the “BYOD” system, which would further be restricted by the AUP and are not able to use essential functions that these authorized, locked-down laptops are able to use, such as printers and ports for running network applications.

I have already proposed a solution, but I doubt it would be taken seriously.

The con/divergence of Buddhism and Christianity

Today, I stumbled upon this article dealing with Buddhist-Christian syncretism. A long time ago, I struggled with Christianity’s rejection of Buddhists willing to be both Buddhist and Christian at the same time. Regrettably, I tried to do just that. It was Christianity’s exclusivity for which I am thankful. Unfortunately, some people have developed a form of mirage from Christianity, like this man in the article who describes why he is Christian and not Buddhist.

Can one be Christian and Buddhist at the same time?

This Dr. Tan person’s central argument seems to be that nothingness does not satisfy him. Yet, it is his greed that motivates him to become Christian.

For a long time, it has become apparent to me while Christianity contains MANY beneficial and moral lessons to which we should adhere, its central revolution around the Abrahamic god is flawed. The way Christianity attracts its adherents are through manipulation of one’s fear and greed. Furthermore, it is expected that after people are extorted into submission, they must embrace whatever God says in the Bible and that He is always right. (facepalm) If this doesn’t seem like the case to you, then all I can say is that the reasoning that Christians present towards me is not very convincing. And there are many other religions in the world trying to do the same thing: convince and convert.

Furthermore, the blatant dissatisfaction with nirvana seems to me that Dr. Tan is extremely immature and he has not been through an existential crisis. Well, that may be good for his mental health, but his innocence undermines his wisdom. His embrace of the Abrahamic god is linked to desperation. Anybody who has suffered an existential crisis, especially to the point of contemplating suicide, will know that feeling of not wanting to exist, that everything will be better if one becomes nothing. It requires a long time to process, but eventually if one realizes that there is no difference between two things (nihilism), that nirvana can be reachable.

This person needs help. May buddhas forgive him for his mistake. I hope he finds the truth soon.