Soldering

The big problem of soldering is the resources. If you don’t have the right materials, the right solder and the right flux, you’re going to end up botching the whole thing like I did.

View post on imgur.com

It was fairly obvious that I was going to mess up. But hey, you know what they say: if you must fail, fail spectacularly!

Oh well, eventually I’ll have this 20×4 LCD set up and wired to the Elegoo Uno R3 (an Arduino/Genuino Uno clone). Unfortunately, I don’t have those easy-to-solder pins, which is why I have to do this ugly hack soldering the cables in. Hopefully the LCD doesn’t turn out to be destroyed by the heat.

On rescue

A few weeks ago, I watched, live, a kid climbing the Trump Tower with a few suction cups and shortly after getting nabbed by the police that cornered him. One of the police men was just hanging the cord to pull him up in case he ever wanted to be “rescued.” Obviously, the police made it look like they were “rescuing” the kid, not nabbing and strangling him until he was unconscious.

But I had a daydream: suppose my school had a structural failure and collapsed (God forbid) and I found a way out. The police, firemen, and paramedics are all waiting outside the hole I would be escaping from. Right when I find the hole and they come within my line of sight, they immediately take me and put an oxygen mask on me, maybe throw a shock blanket on me. Gasping for air, I try to tell them, “I know where the rest are,” stating my intentions to sacrifice myself to make a heroic effort and rescue others trapped inside.

Back then, your request would be accepted. The firemen would helplessly watch as you look outside for a second and scamper back into the rubble, perhaps either returning with a few bodies or becoming one of those bodies yourself. After you rescue the bodies you can and throw yourself into the ground, everyone would surround you and praise your heroic efforts as you are placed in the ambulance and taken to the hospital, in case you were stabbed by a piece of rubble or your lungs are filled with the fine particulate matter. After a few days, you would be globally recognized as hero and/or a saint, depending on whether or not you died in your mission.

But times are different. The same firemen will not honor your heroism. They will say, “No, the structure is unstable. We will do the best we can.” or, “We cannot afford to lose another person.” or, “If you die in there, your parents might sue us.” Shaking and fighting, you are put in the ambulance anyway and sent off as yet another victim.

A few days later, you would hear news of the tragedy, and, of course, the girl, the hero, who rescued five bodies. She gets all the media attention; all the reputation; the visit to the White House. You tell the media you wanted to rescue people too, but the firemen did not allow you under any circumstances. The media ignores you in favor of reporting the trendy headlines celebrating this newfound hero.

Whose story is better: hers or yours? Who should be honored more: the hero who wanted to be, but was forcefully restrained; or the hero who did not intend to (or perhaps she did), and became one?

And the psychologist will come and look at your case file. You will cry, “I wanted to save them! I wanted to save them but I couldn’t!” She will apathetically write down, “Survivor guilt, possible PTSD.” And she will say, “There is nothing you can do.” You will ask for retribution. You will want to sue them for gross negligence, but they will argue they were doing the exact opposite. But in the end, there is no answer. You must somehow continue your life, knowing that the firemen let many people die only to save you.

Then who is more important, the people entrusted with saving lives but are not heroes; or the people who want to be heroes but do not have this single responsibility?

This is the social dilemma. Is honor and symbolism something of the past? If I had the opportunity to be a hero, I would be one. Honor is something passed down across generations until it fades away. But nowadays, it seems people do not care about their ancestry, their past. It is all part of the American drama of divorce, lawsuits, obesity, drugs, irresponsibility, and a chronic disjunction between parents and their descendants.

Can the new generation’s response to the newer generation possibly improve?

The hackathon

The hackathon was okay. There were some regrettable moments and some unforgettable ones.

When I arrived there, I was still pretty miffed that my friends had ostracized me from their group. I came in with the “I’m-scared-of-tall-white-people-with-glasses-and-braces” look, but to be honest, looks turned out to be deceiving when the final products appeared.

I saw some kids from my summer engineering program, at least the ones that mattered. There was a noticeably smaller amount of kids than were expected, but this turned out to be quite advantageous.

As with any group project, I was the mastermind, and everyone else just sat and watched me do all the work. More specifically, they played League of Legends for hours on end. That morning I did not have an idea for a project, but before I came, I suddenly recalled my need of an all-encompassing cloud storage solution, so I decided to call it UltronCloud. I mean it’s not ever going to be finished, so just give it some joke name.

The environment was excellent; this was the college my brother goes to. It’s private but the tuition turned out to cost less than that of a public university, and needless to say, it seems that every penny of it was spent wisely on the infrastructure and architecture. I got a huge-screen television all for myself, so I was able to use the television as my primary monitor, which made it very easy for my eyes as the night progressed.

The hackathon was great, or rather should have been great. But I think I did not take advantage of the opportunities; there were mentors who were teaching how to develop for mobile platforms. I also didn’t take as many breaks as I should have; I strained myself in order to squeeze every hour of the venue, so I didn’t have as much fun with other kids. On top of that, the challenges I was facing when making the project were serious yet to a ridiculous extent. Some problems took hours to be solved, only to be met with yet another problem.

This following section is part of an issue I made on the repository of the library I used, because the following morning, I was so mad that I had wasted all this time for nothing. Once again, I hold nothing against the developer of the library:

Literally every step of the way has been riddled with bugs and other quirks and undefined behavior, even when following the instructions to the letter and trying it on two different Windows 7 x64 machines. Needless to say that I wasted my time trying to make a frontend out of this library. Maybe you can figure out whether the library hates me or if it’s just that unstable.

The first problem was when DokanCloudFS failed to load assemblies when I set the build configuration to NuGet-Signed. If I tried cleaning the build, it would still error out. If I tried changing the build config back to regular NuGet, yet again it would throw the exact same exception. The solution was to nuke the entire project, keep it in the default configuration and never touch it again. This alone cost me a few hours to figure out.

And alas, very shortly later, more problems arose. My mounted Google Drive appeared as a drive, but all interactivity with it was completely blocked, thanks to a vague exception thrown repeatedly as shown in the console:

Exception thrown: 'Google.GoogleApiException' in mscorlib.dll
...
Exception thrown: 'Google.GoogleApiException' in Google.Apis.dll
Exception thrown: 'System.IO.InvalidDataException' in SharpAESCrypt.dll
...
Absolutely no stack trace and Visual Studio did not even bother to break.

And this was after I had compiled CloudFS, put in secret keys for GDrive, copied the output DLLs to the DokanCloudFS Library folder, and assured that it had access to the Drive API by turning it on in the console, and waited a few minutes for it to “enable”.

So I said, screw it! Let’s use OneDrive instead, thinking that somehow it would ease my pain. Nope. Same spiel. Except Microsoft was taking me to some OAuth2 auth link that would just take me to a blank page. After a bit of research I found out that I had to add “mobile” as a platform in order for me to even have an OAuth2 login page. Okay, so when it asks me, “Let this app access your info?” and the usual permissions and I click “yes,” ….it just opens another browser window to do the exact same thing. I click yes again, and the window reappears ad infinitum. And instead of the `GoogleApiException` I get a `System.Security.Authentication.AuthenticationException in mscorlib.dll` along with a `System.AggregateException` which VS *should* be breaking to tell me about, but it’s not doing squat.

By this time I’m forgetting about even running the DokanCloudFS.Mounter example and instead just building hacks to bridge the frontend with the library, using the mounter program as an example because there’s absolutely no documentation that comes with it.

And as of the time of the writing of this issue, I’ve spent sixteen hours trying to get all this to work just to make a frontend that will mount OneDrive, Google Drive, etc. in unison.

I racked my brains so hard that instead of pulling the all-nighter as I had intended to, I decided to sleep for three hours. I didn’t bring a pillow nor a sleeping bag, so I was in for a really nice sleeping experience. Thank the lady who showed me where the cot was in the nice, dark, quiet room; all the couches were taken. So between the hours of 3 AM and 6 AM, I decided to rest and try to figure out what to do with the project. Now, the resting period was important because when I woke up (I think I only achieved REM sleep for a few minutes), I did not feel disillusioned as I usually am when I am sleep deprived (the reason for this is that the image of sunset is still ingrained in my brain, so it gives the impression that it was a very short night and that I will have to sleep during daytime hours to compensate for this).

When I woke up, I returned to my workspace. My teammates were still playing League as they were before I went to sleep, and I sat down and looked at Visual Studio. I tried to begin hacking together some sort of interface to figure out if any functionality is possible, but it was futile. By 10 AM, I simple gave up. I failed.

I had really been looking forward to the hackathon, and I met quite a few people there. But I was not met with a stroke of luck, and the hackathon was not as enjoyable as it could have. If I went back in time, I could have done all the right decisions: convince my friend to let me in the team, bring a pillow and a surface to sleep on, actually go to one of the Android workshops, talk with the head of the hackathon, etc.

But alas, the result would have been the same regardless of anything. The judges delivered some rather questionable decisions in terms of which project was “better”; despite my utter failure, I placed third in “best software hack,” and my friend’s team, who had put all their efforts on a robotic hand, did not seem to place at all in the “best hardware hack.” What? At least there was an “everyone’s a winner” attitude which is a nice way to end a hackathon. No massive prizes for winners, like a graphics card or anything like that.

I don’t really know what to do now though; I left the hackathon with an incomplete satisfaction. What can I do instead: order parts for the electric bicycle? Compensate by trying to invite my friends to do something similar? Or just work on the school stuff I’m supposed to finish by the first day of school?

Ugh. I had felt during the hackathon that this was the beginning of my demise; that this was a glimpse of my condemnation; that I was no match for anyone around me in terms of college admissions. It’s not true. But one question still remains: what am I to do now?

Zero-gravity soccer – part 1

A few weeks ago I was assigned a final project. The final project could be anything as long as it’s written in Python. So I chose to make a game.

And so the mad scramble began. Actually, it wasn’t really a mad scramble at all. I took my time with the code, working on it only when I was able to do so. And so without the distractions of my brother, I was able to knock out 8 hours of coding today, which equates to 570 lines to check into source control.

Python is an incredibly addictive language. I thought it was just some simple language for kids; boy, was I wrong. It is a language of elegance, of minimalism. It makes Java look like a rusty pipe under a sink (which it is, for the most part). Say goodbye to curly braces and excess if statements. And bugs are incredibly easy to find, even without an IDE, if there are any in your code.

Python does have its shortcomings, however. Its object-oriented design isn’t exactly something familiar, and the mechanics of it are definitely not explicit. Still, it allows for multiple inheritance along with a degree of control you could never have with Java. In Java, you had to make a rigid model of the class before actually implementing it, and changing constructors around leads to problems down the line fairly quickly. In Python, however, you can build the implementation first, and then make an object encasing that behavior. It is purpose-driven rather than enterprise-driven, and so it works extremely well for small projects.

This is what I’ve been able to accomplish so far. I have until the 20th to “ship” the project, if you will, and I’m quite satisfied with the progress so far. I estimate it will only take 500-750 more lines to bring it to a playable state, but then again, I cannot make a fair estimate of line count because it’s not really what matters. I need to implement network, HUD, and some game-specific behaviors like grabbing the ball and throwing it to the goal.

I shall press forward…

On virtual reality

Many people view virtual reality (VR) – and let’s point out the big elephant in the room, HTC Vive – as “the future that is now.” Then they hype hype hype and buy it. Then they complain that there aren’t enough VR games, that they’re all bad, etc.

But instead, consumers need to look at it from this standpoint: Where were video games at ten years ago? Twenty? Ten years ago we were doing these low-poly games and the best console on the market was PlayStation 2. Increasingly developers understood the architecture more and more and were able to hyperoptimize their games to exploit what the hardware could really do, which still can’t be emulated at full speed today without hacks along the way. Now it’s 2016 and we are seeing Direct3D 12 and photorealistic graphics. No, not FSX “photorealistic,” but as in faces rendered realtime and so humanlike that you couldn’t even tell whether they were fake or real. And in the 90s and 80s, we didn’t even have 3D graphics good enough for gaming, with the exception of some rising consoles such as the N64. And even they were extremely limited in capability.

Thus, I implore consumers not to look at problems in the “now” but in the future. In twenty years we were able to achieve photorealism for realtime applications such as gaming. And now that the whole issue of graphics has been resolved (since any graphics card made since last year is able to render basically anything you wanted on it), we have new issues related to VR, such as wield variably shaped items, move around in a physically confined area (less than 9 m2!), sense their environment beyond sight, interact with the virtual environment? Currently these problems have yet to be solved. But if we literally invented (and perfected) 3D graphics in 30 years – could we not invent and perfect virtual reality in the same amount of time?

And the whole idea of how these problems will be answered frightens me because the solutions might become intrusive. What if in 2030 we simply became accustomed to human alteration? What if 2040 the first human beings entered the long-awaited “dream pods” that would cede their consciousness to the hands of a computer? What if in 2055 we decided to just transfer our entire beings into solid-state drives? What if in 2085 the human race just disappeared from the face of the planet? Soon, virtual reality will become the only reality. And it’s turtles all the way down.

So don’t complain because one day, you’ll miss playing on a monitor.

The AoS bot that I originally wanted to make

crossposted from the BnS forums:

A few years back I thought of exactly this, a decent bot. At that time I did not have the experience to actually create AI but I started slowly working on a client implementation in JavaScript anyway. My imagination ran aloose: if I could make excellent AI, I could start a clan of “noobs”, watch everybody get rekt in League, and then reveal how I did it. Built-in inaccuracies and limitations would prevent any detection of ESP, because the AI would hypothetically only be able to view the map and within its line of sight, perform some limited communication, and have a reasonable (and adjustable) hit/miss percentage. The bot could also build prefabs, and other bots could join in or defend as they are building.

I thought about a design for such a system of bots for a very long time, and I looked at some dumb bots some people around here made in Python. But I wanted the “unauthorized” approach, so I was not inclined to create a serverside script. I wanted a clientside approach that would be controlled by the bot master’s computer, so that I could simply and inconspicuously deploy three or four well balanced bots on a server. The problem, of course, is that there is a limit for clients per IP address.

The problem in the holistic sense when I envisioned this concept was not the algorithmic portion as it was the implementation and the time that it would take to complete this undertaking, which I repeatedly underestimated. Moreover, I was not familiar with three-dimensional A* or machine learning concepts. I was eager to learn them, which is really what matters. But time always turned out to be the greatest deciding factor in all of this. My time was always fragmented; 15 minutes doing this, 15 minutes doing that, rather than a solid slot of 3 hours of project time. And due to school, my free time varies from 3 nice hours of relaxation to absolutely nothing.

Many of you think that this is my excuse all the time for not being able to do anything. But it’s true, and so my disposition to commit to things has fallen. That’s why I never carried out the whole bot thing in the first place. I just did the backend and that was it. You want to pressure me into doing it for that AoS of the Future project, fine. You want to pressure me into doing it so I can fill your servers with future-proofness, fine. You want me to do it for the betterment of all your little FPS projects, fine.

Suffice to say, a well scripted bot would be perfect in imperfection. But I am not one to do it.

On computer terminology

I see in many books certain attempts to ease the apparent pains of using computer terminology.

For example:

With the help of Tim Berners-Lee, the Internet became popularized with the creation of the World Wide Web.

This simple statement becomes this convoluted paragraph:

With the assistance of Tim Berners-Lee, a computer technology was developed that allowed computers to communicate each other through what became known as the World Wide Web, which people could connect to through new software such as America Online and CompuServe that came in floppy diskettes. Thus came the existence of the Internet.

Authors continue to be extremely cautious in introducing computer terminology in their writings. But the truth is, who doesn’t know what the Internet is these days? Who doesn’t know what software is? And when authors do use the terminology, they often surround it with these metaphors so as to try to compare it to tasks once done by hand. “The Internet, like a pair of telephone wires, …” “With the advent of the microprocessor, computers once the size of rooms became smaller than the ‘a’ in this book…” This is the virtual world we’re talking about here. There is no substitute for these things.

No. Heck, no. If you’re going to include words like “axle” and “spigot” in a book and don’t bother defining them, then don’t bother with “die size” or “parallelization” either. Suck it up and make people learn the jargon. Don’t talk to them as if they were elderly people.

On Anki: 14 months on

Since January 27, 2015, the first set of cards that I had inputted on Anki, I have learned 550 kanji. No, not just stared at for 5 minutes… LEARNED!

When I first heard about spaced repetition, I thought the forum posts were too good to be true. But they prescribed the same advice: Anki. Anki. Anki. Study every day. Mine the crap out of Japanese and fling it into Anki. And I haven’t had any complaints about the system ever since that day, not because I’m an optimist who only looks at the positive side of “good” things, but rather because it’s (1) a scientifically proven model that accurately works with, not against, the dynamics of the brain, and (2) because once you set it up, you can study from wherever the heck you want. I study on my phone because it’s the most convenient, but I have to input new notes on the computer because it would take an eternity and a half doing it on a tiny phone with an even tinier keyboard.

(more…)

The phoenix

After receiving a carefully timed letter from the people at MIT – as if they knew perfectly the stages of grief of an MIT applicant – my confidence almost immediately reemerged after flipping through the pages. It reassured me that these people aren’t demigods, they’re real people who took the time to document the fun in their lives that they have over there.

My brain somehow took what I knew about MIT, who you’re up against, what it takes, what kind of people get admitted, and the passion I’ve had for it since I was twelve, and melded it together. And that evening I felt, since a long long time, that I was intellectually driven by a purpose. I got to work right away: I constructed “the path to success,” what needed to happen between now and the day that I apply, in order for me to successfully assert my worth.

Yes, I missed many opportunities I could have seized, but humans are not built to perfection, and like I’ve said, are influenced by circumstance. It’s hard to get to MIT, and that’s an understatement. And if I truly want to get there, then I will. If I want to be successful, then I will. If MIT has to be the impetus to get off my lazy butt and do what I love, then I will.

I never cared about the prestige and the fame, but rather the people and what they do. The engineers, the coders, the mathematicians, those are my people! I wish there was somebody at my school who would love to talk about Lagrange points and Taylor series. But there’s really nobody to compare to. I’m unique, and thus the doors are not closed.

And even if they find me uninteresting, I have options. The world is growing, and MIT’s officers know that they cannot possibly expand the campus. The people just get better and better; the 10% of soon to be 8 billion people in the world.

The science fairs are over and the competitions. No more awards. It’s time for me to just show off my projects, unadorned and unappreciated, to the world.

So here we go. Another phoenix is rising out of the ashes.

Back to our roots

I’ve been reading a bit on how extremely difficult it is to get into MIT. It appears that nowadays the classes are just the amalgamations of all the “best” people in the world. The admissions website makes the process seem easy. But these people are telling me that you have to be in IOI, be a champion at a couple things, make a bunch of cool stuff (not just one thing), rek high school, make friends, do sports/band, the whole extracurricular shebang (be president of everything), AND somehow live?

That is devaluing rather than valuing human life right there. Because by abusing the opportunities you’re given, you’re basically draining the life out of everything. Being the best is putting yourself first at the cost of everyone else, regardless of how many people you led or helped. You trod on everyone’s faces and now you expect them to smile back.

If that’s the kind of college I want to go to, where people idolize their hobbies and do studying on steroids, then heck no! I want a balance. I don’t want to feel alone working on a project, but then again, I don’t want to be pushed into doing things from 6 AM to 1 AM every day.

I don’t really know what I prefer anymore. For so long I’ve lived “alone,” i.e. nobody really helps me in my projects or homework. I just do it. I have not assimilated into the American collective identity.

But then again, maybe I should stick to my guns. MIT might have what I want. For all I know, there is a snake eyes chance of getting accepted. Even if I don’t, MIT has a much better grad school anyway.

But since I doubt myself, I am going to ease the pressure on myself. By doing things for fun and profit rather than for college, I’ll get a better result. I am unencumbered trying to fit myself in a nice suit. I don’t prevent myself from doing stuff because “going to college is a higher priority.” I go to college because I do not prevent myself from doing stuff.