Month: July 2016

It’s time to develop ClearCloud 2

ComputersInternetProgramming

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

Internet

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:

216.58.192.206 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

Computers

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

Uncategorized

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.

#HackForTheFuture

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

ComputersSchool

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

Uncategorized

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.