Category: Internet

The Ethics of Data Mining on Social Media Platforms: a paper


I wrote a paper a few months ago on “The Ethics of Data Mining on Social Media Platforms” for the Ricco Ethics Scholarship and today, I was pleased to hear I had been selected as an award recipient. One of the stipulations for winners is their work will be available online for all to view. In that spirit, I share my work if you would like to read it. (It so happens this prompt is one that truly interests me, and I’d love to further delve into the topic if you want to discuss it with me.)

The struggle with migrating to PHP 7


When PHP 7 was first released, I was very excited to install it on one of MyWikis’ servers. In retrospect, I was too excited to install it—I should have been more patient. Some critical components of our website ended up breaking because they were incompatible with PHP 7. Of course, I hastily reverted back to PHP 5.6 and have kept it that way since.

Today, I’ve been thinking about whether to begin migrating to PHP 7. It has matured and many PHP applications have had time to adjust to PHP 7. The primary application I have in mind is MediaWiki—the lifeblood of MyWikis. Since MediaWiki 1.27.4, it has been fully compatible with PHP 7. It is now viable for MyWikis to initiate an upgrade of PHP on our servers. However, my answer to upgrading is still no.

I truly do look forward to unwaveringly upgrading to PHP 7. However, that day has not yet arrived. Too many legacy web applications are still stuck in PHP 5. Heck, many of them are stuck in PHP 5.3. In fact, 5.3 strikes that sweet balance between old PHP and new PHP (as it only deprecates certain legacy features instead of removing them). I have taken the responsibility of maintaining an old website that my mom wrote in PHP ten years ago (yes, really, in 2008). This website is deeply sentimental to me because my mom made it for an eight year old me. When I restored it back from a backup, it was an honor to fix the PHP errors that had appeared. I assume the website was written in PHP 5.2 standards, so when it was upgraded to 5.4, I had to remove all of the register_globals() functions, LOL!

But my point is, as a businessman whose livelihood depends on PHP, I don’t have the liberty to screw around and upgrade PHP to the latest version whenever I please. I have to consider its compatibility with legacy software that, while not up-to-date yet, is vital to my business. Today is not the day that MyWikis will be upgrading to PHP 7. I don’t think the day will come until PHP 5.6 is completely EOL’d. I do believe this is the best course of action, as upgrading will only bring havoc to our tranquil servers in their status quo and disqualify our servers from handling potentially important legacy software.

Until PHP 5 completely flatlines, MyWikis will not be upgrading to PHP 7.

Net neutrality support has become way too hyped


Before you ostracize me for my post, I want to make it clear that net neutrality is very important for the survival of the internet. I’m currently unaware of anyone who is legitimately against net neutrality. And back when the internet’s freedom was challenged by SOPA and PIPA in 2011 and 2012, I was doing what I could as an 11 year old to stop it from advancing. Even the father of the internet, Tim Berners-Lee, supports net neutrality, and he knows what he’s talking about.

However, it’s a lot of other supporters that unfortunately don’t know what they are talking about.

I have seen a lot of messages about saving net neutrality since this summer, especially from advocacy groups such as the EFF and Battle for the Net. In fact, if you visited my company’s website a few days ago, you would’ve seen that we have a modal asking you to support the cause of net neutrality.

I’ve seen a lot of correct and accurate content about net neutrality being posted, but I am frustrated when I see misinformation being spread, such as this tweet:

The specific language used here was “websites we will lose access to without #NetNeutrality” (emphasis added by me). Thankfully, this is not immediately true. If net neutrality were to be repealed, it would be up to your ISPs (internet service provider) to determine if they want to start charging you to access a specific website. ISPs include your cable or telephony company (AT&T Uverse, Verizon Fios, Charter Spectrum, Apogee Telecom, etc.) and your mobile provider (AT&T Mobility, Verizon Wireless, T-Mobile US, and Sprint).

But here’s the thing. Currently, we do not know if these ISPs will be creating special access lanes or faster access lanes or whatever. In other words, we don’t know how they would change what they are doing right now. We know Comcast is currently already implementing monthly data transfer caps, which wouldn’t be allowed under perfect net neutrality. However, no ISP has said they will be forcing you to pay extra to access Google or Netflix. Anything else is speculation.

Saying that ISPs will “deny you access to Google if net neutrality is repealed” is a dangerously broad and speculatory statement. This kind of statement, while attracting the hoi polloi to support a once obscure issue, lowers the pro-net neutrality camp’s credibility, introduces unnecessary and unjustified panic into people, and causes more confusion than clarity.

Oh, and by the way, I wrote this post before net neutrality was officially repealed by the FCC. Now that is repealed, can you access Google? Yeah, you sure can. So this tweet was wrong and deceitful.

I encourage everyone who supports net neutrality to read up on how it could and would actually impact the internet and why it’s important, instead of just relying on series of 280 characters.

Continuing to master the art of free Gogo Wi-Fi


Note: This is an updated post of something I wrote almost a year ago. I have since learned more about the art of free Gogo Wi-Fi. Enjoy this updated edition:

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.

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 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.

Actually, this part does not work anymore. Gogo has added enhanced detection of whether a device is a mobile device or not. In fact, this might even detect which carrier you use. So be careful.

If you have a rooted Android or a jailbroken iPhone, 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 past one hour of use. This usually happens for me.)

2. SSH Tunnel

If you own a server (VPS or Raspberry Pi at home works), be sure to allow SSH to run on port 3128. For some reason, Gogo allows traffic to pass through port 3128 without authentication. You can repurpose an SSH connection to become a VPN of sorts, by using an SSH tunnel.

For me, setting up an SSH tunnel is trivial, so I recommend you check out this article below:

Essentially, you connect to SSH using -p 3128 and -D [whatever port number you want locally], then in your browser or OS settings, enable SOCKS proxy with the address of, port [whatever port number you want locally].

Five years of MyWikis: how I successfully founded and managed a business


On February 22, 2017, my company MyWikis will celebrate its fifth anniversary. While it is a small business, it has been a one-in-a-million experience that has positively changed my life immensely and forever. Part of its success lies behind passion, uniqueness, and quality that we give our customers. But the last element of success? Luck. This blog post reminisces what I did to get my company where it is today.

Ok, let’s go back to 2009. I can thank a good chunk of my passionately-accrued knowledge to Wikipedia. I read articles like they were movies, storing their information as either trivia or useful knowledge. It helped me find some of my passions.

But if you go on Wikipedia and scroll all the way to the bottom, you’ll see a small image that says “Powered by MediaWiki.” Try clicking on it. One fateful day 6-7 years ago, I too clicked on that link. What I saw excited me: the ability to run my own wiki using the same software that powers Wikipedia. I love the concept of wikis.

At the same time, I liked to use the wikis on a website called Wikia. In 2010-2011, I contributed to quite a few of them, but their management made decisions that caused its entire community to go into an uproar. A few other wiki hosts popped up, and I started visiting them, but none satisfied me. I loathed all of them, especially Wikia. (Actually, I did help with one wiki host, but things went sour within months of their advent, so I was quite disappointed.)

I had been messing around with MediaWiki for a year now, and I was excited to implement real ones online. So I decided to create a wiki host based on these premises. Don’t be like Wikia (don’t screw over the community and make them hate you), host a safe haven for wikis, and don’t shut down like the others.

One night, I went on a walk with my dad and pitched this to him. He agreed to pay for the hosting costs and that was the day that MyWikis was born. (February 22, 2012. I was 11.)

I originally planned to have a wiki farm-style community. The wiki farm would have to be supported somehow, so I decided to go with donations. Then, I decided that donations didn’t make enough money, so we’d go with advertising. Turns out that didn’t work either. Those plans slowly faded from reality.

A year went by. The company was approached by another wiki farm and offered to merge with us. On principle, that sounded great. They were going to start a wiki farm-style community and had the wiki set up to accommodate it. I originally accepted, but I found they were in fact jerks and I couldn’t bear to work with them any further. (I sound like a child, but remember, I was 12 when this happened.) The experience left me scarred and distrustful of the wiki hosting industry. I did later approach another wiki host to collaborate business-wise, but they also had unbearable staff members that I refuse to collaborate with. It turns out that most people who manage things related to wikis are antisocial, heartless jerks. I might be included, in which case I apologize profusely 🙁 really sowwy, but I certainly can’t work with others like that.

(Digression: the one thing I did envy was that they had a team that worked on the wiki farm. I have been solo since day one.)

I was at rock bottom. I owed about $150 to my dad and we had to pay $130 for next year’s hosting again. The situation was dire. There were several corrections that I made so my business would turn around from our money-bleeding:

  • start charging for plans. While I never intended for MyWikis to be this way, it wouldn’t have worked any other way. It turns out this is the secret behind our business.
  • bought We started out with but was someone else’s. On August 19, 2013, I had finally been able to buy the .com domain. Since it boosted SEO, I immediately moved operations there.
  • distinguish ourselves from other wiki hosts. There are many free wiki hosts out there, so why would anybody pay for wiki hosting? I had to convince others why, and today, it’s pretty much a given that my company’s target audience will shell out money for their wiki hosting.
  • advertise and increase marketing. We had no money for buying ads, but there is a place to spread the word on (it has a specific page dedicated to listing wiki hosting services) I also made efforts to increase the website’s SEO.

Adding explanations of our service and what it included has since attracted many clients. MyWikis now provides premium support to all of our clients. I use my MediaWiki experience to cater wikis to the client’s needs. Furthermore, there are two things free wiki farms do not offer:

  • privacy – companies need this. Many of our clients are companies needing a wiki for internal purposes. Other wiki hosts simply don’t offer the level of privacy we have. Furthermore, other wiki hosts don’t tailor wikis for our clients like we do.
  • VisualEditor – this is a big boon for our business. Our clients want it and so do we. MediaWiki is edited by wiki markup, by default. However, VisualEditor is a WYSIWYG editor that helps our clients edit their wikis effortlessly.

We adapted to what was needed. I still think it all worked out in the end because everything fit together perfectly, thanks to luck. The company’s focus wasn’t what I expected, but the unique combination of all of these traits makes MyWikis what it is today: successful.

Note that my age wasn’t really a big barrier. Just because it was unheard of for an 11 year old to create a wiki host didn’t stop me. I had the skills and that’s really all that matters. I’m 16, so I’m still a minor, and I’m celebrating my business’s 5th anniversary. That doesn’t sound normal, but it’s life and it is how it is.

I would like to thank everybody who helped my business and me these past five years. It has been a lovely experience that I wish to continue. I look forward to more years of success and serving customers, helping them with their every need and wish.

The next chapter involves getting involved with the law: incorporation. Oh boy. And I would love to hire some staff members to help me out. I’m still lonely and I appreciate the company. (Pun not intended.)

I don’t have any multi-person business experience yet, so I’ll get back to you when I have learned that stuff.

Someone once heard me introduce MyWikis and remarked “sometimes you wonder what you’re doing with your life when you see people like this.”

I just wanted to say that their job pays more than this company does, in any given time frame. This is a side job for me. Thank goodness I am financially supported.

I do wish to stress that this blog post is not a stereotypical generalized guide intended for you to follow along so you can create your business. While I want to help you, this isn’t the guide. I have helped one person with their business to, objectively speaking, little success.

Here’s some tips you might want to follow, but don’t blame me if this doesn’t work. And please don’t treat the below as a panacea. Unless it works really well, in which case I take back what I said and I want a cut of your profits.

Only start a business if you:

  1. are motivated by passion (not to pay tuition but passionate about what your business does)
  2. are very capable of managing money
  3. know your job well
  4. have principal capital to start it off with (covering initial expenditures)
  5. can devote lots of time to it
  6. know how you stack up against competitors
  7. have an idea on how to attract and keep customers
  8. know how to market your business’s products/services well (advertise and upsell)
  9. have problem solving skills and can adapt to new developments that your business may encounter
  10. are lucky and are ready to put everything you’ve got into it

A business is a major investment of your time. I only support entrepreneurs who have true passion, a vision, and a dream/goal. I’ve met many entrepreneurs, but I’ve only met one person who fulfills those three criteria. The rest are not doing it correctly or honestly, to be frank. Some are forcing it and that’s just awkward, deceptive, and won’t get them anywhere.

Also, I wish to point out that I didn’t read any wikiHow articles about creating a business or take an MIT Launch course on edX. I let my natural intuition and skills do all of the work. Forcing the skills won’t get you anywhere; they have to become second nature to you. Every single item on the list above must be second nature to you in order to have a successful business, and even then, success is not guaranteed. On the contrary, you don’t have to be perfect. There are many people more qualified than me to create a business, but they fail or don’t try because they either don’t want to or they don’t have that innate motivation needed to run a business. I learn as I go and that’s perfectly fine.

Oh, and one more thing. If you want to make your business to get rich or to earn money mundanely, then don’t try, because it’s fake effort, and that won’t cut it. Do what you love and do it well. That’s the mantra of successful business founders everywhere.

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.

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. (

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 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, 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 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 to this whitelisted IP. For example, this is my /etc/hosts file:

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

Originally from:

See 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 (, 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:


@ShareNet, a Wi-Fi Co-Op


Wouldn’t it be great if one could travel somewhere and automatically be connected to a Wi-Fi network? It:

  • saves mobile data
  • better access to the internet
  • more efficient use of Wi-Fi network

Imagine Bob is jogging through his neighborhood. When Bob leaves his house, he loses access to his Wi-Fi network, BobNet. He jogs past Sherri’s house. Sherri’s Wi-Fi network is SherriNet. Neither match, so neither can use each other’s Wi-Fi network without sharing. But sometimes, they go over to each others’ houses. Also, Bob streams Spotify through his headphones when jogging past Sherri’s house, using a lot of data. The issue is, whenever Wi-Fi is needed the most, or outside one’s home, it never seems to be there.

But if Bob and Sherri and all of their neighbors added a guest network (with a password) called @ShareNet to their own home, they’ll also get access to every other @ShareNet Wi-Fi access point! So, whenever Bob is jogging, he will automatically be connected to the guest Wi-Fi network in each house that he jogs past. Now, when Sherri is at home, she uses SherriNet, but whenever she visits Bob, she doesn’t need the password to BobNet. She just uses @ShareNet.

All of the neighbors have ONE password for @ShareNet, so it’s important to keep this key integrous (the key must be of integrity). If Gordon the villain neighbor decides to leak the password of @ShareNet on 4chan, everybody’s screwed and Gordon will be attacked by an angry mob at the next HOA meeting. Most neighbors can set up a WPA2 Personal Wi-Fi guest network on their routers easily, but not a RADIUS server. The only way to keep @ShareNet integrous is to continually update the password (pre-shared key/PSK) and to maintain control over who is participating in @ShareNet. Also, it’s not okay to simply stop offering @ShareNet at your house while continuing to use @ShareNet in others’ houses.

So if you want to join @ShareNet in real life, we’ll try to keep it secure and centralized as much as possible. Just shoot me an email ( Thanks!

  • 1
  • 2