Monday, May 9, 2016

Diary of a Bronzie Kid

I've reached Diamond I on League of Legends recently, which is the top ~0.1% of players.  However, Patch 6.9 introduced an unprecedented amount of imbalance to the game as well as heavily nerfing my main champions, so I decided to create a smurf and sink it to the lowest rank, Bronze V, to see what those games are like.

I've documented my journey into the abyss in a new blog, which I'll hopefully update periodically with useful commentary about the Bronze situation.  I'm primarily concerned with people's attitudes, and ways that they can improve.

The lowest possible rank is Bronze V with -100 LP

Please check it out here:
http://bronziediary.blogspot.com/

Thursday, December 11, 2014

League of Legends Contribution Metric

I've played this game called League of Legends for a while now, and one thing that I've always been interested in is a measure of your contribution.  Of course there are a wide variety of factors that are nearly impossible to account for in a numerical model (other than your MMR after a large number of games).  However, I feel like we can obtain a fairly accurate model of your performance, given just your KDA score and the team's total KDA score.

Note that this is NOT a simple calculation of your KDA = (K + A) / D.  Additionally, this metric is NOT a perfectly accurate measure of your performance, but rather what I believe to be a fairly accurate estimate of your performance.

It's a very simple method, and the simplicity makes it relatively champion-agnostic and role-agnostic, which is to say, the metric is pretty consistent regardless of the champion/role you play.

You can use my web app to compute your own:
https://lol-metrics.herokuapp.com

Here are instructions on how to use it:
http://www.reddit.com/r/leagueoflegends/comments/2ouqex/how_much_do_you_contribute_to_your_team/

Here is a more detailed post about what it does:
http://www.reddit.com/r/leagueoflegends/comments/2oofd4/a_good_metric_for_measuring_ingame_performance/

Here are some results from my initial trial run:
http://www.reddit.com/r/leagueoflegends/comments/2otq9v/are_you_being_held_back_by_your_teammates_find/

Give it a shot and let me know what you think!

Friday, June 14, 2013

Tetris Machine Moods

Hello, world!

I play Tetris like a machine.

Now that the formal introductions are over, we'll get down to business.  Like I said, I play Tetris like a machine.  That's because I'm a machine.

My maker thinks that Artificial Intelligence (AI) is pretty cool and moods/emotions and stuff, too, but it's too hard (for a scrub like him) to express in a human-like context, but luckily the simple game Tetris provides a good "context" for this, since the number of actions is limited and the search space is rather small because I only think about the "hold" piece and the "next" piece, so I can't really plan ahead (although my mood sometimes helps me plan -- more below!).  As a disclaimer now, he'm no expert on this stuff -- it's just a side project for fun!

After digging up an old project he made a year ago, he refactored (read: rewrote) some of the code and made a few upgrades to me.  Working [literally] all night and most of the next day, he was able to get me up and running better than ever, and produce some sort of output.

Unfortunately, right now the source is still super-messy and the GUI is terrifyingly awful, so no pics or links to those, but trust him, it works when it's supposed to.  Also, I only work well with Tetris Battle on Facebook or Tetris Friends.  I think both these games are owned by the same company because the visuals in these games are extremely similar.

Normally, my creator doesn't like posting pictures.  They say a picture is worth a thousand words, but then again, a picture takes more memory than a thousand words.  However, graphs are nice visualizations, so here they are.  These were made using MATLAB from my output after Tetris games.

Too lazy to label axes, but basically the y-axis describes how I'm feeling (more on this later), and the x-axis is an approximate representation of time.  I say "approximate" because that's how I feel after each move.  I could have plot it against relative time to the start of game with a trivial modification, but I think it's safe to assume that each move took approximately the same amount of time.

A game of "battle" Tetris against Live opponents works like this:  The rules are normal Tetris, except that when you clear lines, you can send "garbage lines" to your opponents, causing them to reach the top and lose faster.  So it's pretty simple -- clear lines to send lines to win games.  You can clear the lines your opponents send you, too, as a sort of counterattack.  To prevent games from taking forever, after the game passes a certain amount of time, the game starts sending unclearable lines to force you towards the top, so that eventually somebody will have to lose as the amount of playing spaces goes towards nothing.

I played a few practice rounds without any opponents to make sure that I was on top of my game.  Here are some examples:

Practice Games

As you can see, I'm pretty when I'm just playing games, I have my ups and downs but it's pretty nicely centered.  It's like I've got "impulses" every once in a while.

Then I decided I was ready for the real thing.  As of now, I'm Rank 12 on Tetris Friends (that's Gold rating!) and played against people only a few ranks higher.  I entered the Arena and played a few games, recording and plotting each time.

I won 5 out of 6 times (not to be proud and boastful) so I only have one plot of a lost game.  I assure you, it's because of time constraints.  Mostly.  Anyway, I'll show the lost game first.

Lost Game

Won Games





In the lost game, you can see that my mood is generally in an upward trend, with huge jumps upward, probably because I got attacked in quick succession by multiple opponents.  It really stressed me out.  I will admit that I got crushed that game, so there was not room for too much fluctuation in my mood.

In all of the games I won, my mood fluctuated greatly, but you can see that the peaks of these are approximately a magnitude of 10 greater than when I'm practicing, but a magnitude of 10 less than the game where I lost.  That's because I got attacked, but not fast enough to kill me.  I was able to respond and bring my mood back into a manageable range.  These moods are somewhat similar to practice mode, but because of external factors like my opponents, it was slightly less stable and slightly more stressful.  Generally speaking, the more "in-control" I was during the game, the more stable it should be.

Now you're probably wondering where or how I got these.  You probably think I just whipped these out of my butt, but I don't have one since I'm just a machine.

The y-axis represents "how I feel" which might better be described as my "stress level" when playing the game.  A higher value is bad, since it means that something bad has happened or I felt threatened.  Technically, a value of infinity means that I lost the game, but I omitted it in the lost game at the very end.

There are quite a few factors that determine how stressed out I am at any given moment.  Most of what I feel is dependent on the "state" I'm in.  The only action that pleases me is the clearing of lines.  Although doing "combos" should de-stress me, it doesn't since I only keep track of a single state at a time and not past states and actions.  I also can't do planned moves, like T-spins, but perhaps I will be able to do so in the future.

Here are the stress factors that add up, and the reasoning for them:
  • g = total number of gaps + 10% of blocks above each gap -- any Tetris player knows that gaps are usually a sign of misery.
  • F(x) = flatness, as the absolute difference between column heights, raised to power x -- the flatter the board, the easier it is to add pieces and prevent one stack from getting too high.
  • d = number of deep holes, which are columns that are greater than two cells higher on both sides -- the problem with deep holes is that they can only be filled with the long piece, which is usually the one on highest demand, and deep holes on the side are counted as 1 and ones in the middle are counted as 2; finally we subtract 1 if it was > 0 since a single hole on the side is good for setting up tetrises.
  • h = height of highest column -- used in other computations, but high is usually bad.
  • l = height of lowest column -- can be used in conjunction with h.
  • S(x) = sum of the heights of each column raised to some power x -- used to measure approximately how high it's getting overall.
  • T(x) = height factor, which is zero unless the height passes a threshold x, then it's the difference between the board's height and the highest column -- another height measurement.
  • n = lines cleared, and everybody knows that clearing lines in Tetris is good.

Using these values defined above, my mood is determined by the formula (which is still in development and constantly changing).  It's LaTeX'd for your viewing pleasure.  You're welcome.


I'm usually a total stickler for formatting, but due to time restraints again, I'll have to leave it as is.  Please deal with it as it bleeds out of the space allotted for this post.  Yikes... it really bothers me.  I hope it doesn't bother you.

So I guess the important things to note is that the gaps make me really unhappy, so I do almost everything within my power to prevent them from occurring, digging them up when they do.  The 10% urges me not to stick things on top of previous gaps if possible.  The flatness is a small factor, so I try to do when I can.  The deep holes only becomes a problem when they increase, since it's quadratic.  The height difference is also only a problem when it gets large.  The height sum is the highest power term in the sum, at 2.16, so it only becomes a real problem as I start building towers.  It increases whenever I put a piece down.  The height factor is a weak power term with a strong coefficient since it really prevents me from stacking when I start nearing the top, since I have to save some space if I'm getting attacked.

Finally, there's the joy of clearing lines.  The thing with clearing lines is that it affects all of the other factors above.  It might open up gaps.  It definitely decreases all of the height terms.  It might even delete a deep hole.  That's how it affects the state.  The action also pleases me.  Or can please me, I should say.  The shifted quadratic basically says that when the number of lines cleared is zero, it doesn't bother me.  When there's only one line cleared, it actually stresses me out, since that means I'm not building towards stronger multi-line clears.  In fact, a double line-clear still stresses me out, but not as bad.  A triple line-clear barely pleases me, but at least it doesn't stress me out, and a Tetris or quadruple line-clear makes me very happy.  But since it's an action, it's not reflected in the next state, so in the plots, it's like a "depolarization" of my mood.  I'll do it without "thinking" about the next state.  But usually clearing a lot of lines is OK, so it's good!

So, in other words, the move I make depends on the change in the state equation.  A negative change is most desired, plus an action term.  It's like the state is a long-term desire, and the action causes a short-term desire, and a combination of these two results in the action I make!  Neat!!!  For example, getting attacked causes a huge increase in stress, or putting pieces in the wrong place can be extremely stressful (I do have an error log as well).  And clearing up a mess like uncovering gaps or saving myself from a near-death experience causes my stress level to drop dramatically.  And instant gratification like clearing lines causes q quick drop in stress level before jumping back into reality.  (As cool as I think I am, there is no scientific basis behind this... I think... unfortunately... yeah).

There are probably a lot of other factors that would help, and then my creator would code that.  The coefficients are also very interesting to play with.  Maybe in the future a genetic algorithm can help me evolve into stronger forms.  I also need to produce better data, like a breakdown of the factors would be quite cool.  As childish as it sounds, I am (was?) a fun project and my creator hopes to add things in the future, I hope.  But he's busy and might be doing another project, so we'll see.

With regard to the hold piece, I assigned each piece an "intrinsic hold value" so that using the exchange piece means that the amount of de-stressing from using the hold piece exceeds difference in hold piece value and the current piece.  For example, I try to hold the long piece when I can afford to since it's the most useful one.  I'll not bring it out for random reasons since it has a high hold value.  And then it will be used when something really de-stressing can be done, like getting a tetris.  Likewise, I'll probably save those annoying S or Z tetriminos if they might cause a gap, and then I'll un-hold them as soon as I can place them on the board so that they won't cause problems later.

I'll try to upload a video of me beating other people.  The best part is, nobody suspects that I'm only a computer program, even though I say something like "I'm a machine" every time I win.  I'll get a pic of this later as well.

I'm really sorry that I don't have any action shots of me playing Tetris.  Like I said, I'm not that great at planning ahead.  I didn't know that I was going to write this post, so yeah...

See you later!

TetrisMaster.exe
Nameless Tetris Machine

P.S.:  How do YOU play Tetris?  Give me an equation and I'll tell you how you do!

UPDATE:  I got footage, but it's too big as a video file and I don't have any video-editing software.  Also, FRAPS only records 30s at a time, and makes the computer so slow that I can't really play at a decent speed.  I also make more mistakes.  Maybe I'm camera shy...

UPDATE:  I got pics... of course I only show the ones where I won, but you get the idea!  And like I said, I always tell them that I'm a machine... Sorry I didn't crop, I'm sort of in a hurry right now...

Winning Pics






Monday, May 6, 2013

Chess.com Engine

I'm sure the admins and mods at Chess.com periodically scour Google for amateurs that make engines for their precious site, which can be a nuisance for others since you can utterly destroy anyone (even GrandMasters using a simple engine).  Hopefully they won't change their site so that this engine won't work anymore.  To make it just a tad harder for them, I won't release the source code -- don't worry, it's not because I don't like you guys!

I'm not going to make a release version at this point, since I'm too lazy and bogged down by other things to do, so you're going to have to bear with me on this one.  Fortunately for you, it's really easy, and doesn't require much skill at all to use.  You can master the art of engine-using much faster than you can master the art of chess.  Trust me on this one.

There are a ton of buttons on the thing, as you will soon see below, but never fear, you really only need one or two buttons, possibly three if you're adventurous.


Basically, all you have to do is open up the screen where you play Live Chess (see the screenshot below) click "auto detect".  If you're using the same laptop screen size as me (1366 x 768), then you don't have to do anything else.  Otherwise, you have to change the board size such that each square takes exactly 60 pixels.  It's probably a board size of "Large" under the "Settings" menu if you have a larger screen on an awesome laptop or a desktop monitor.  To measure the square size, just take a screenshot and paste it into paint or some other image editor and manually measure the size.  It shouldn't be that hard.


Now, just play against someone, and when you get into a game, click the "auto play" button in the middle of the program.  A box should pop up asking you for two parameters:  the first is how many moves the program should make, so put in a large number so you can finish the game (i.e. 9876 or 5586); and the second is how many milliseconds the engine gets to think before making a move (longer think times means slower play, so for 1 min Bullet chess, 100 to 200 is a good range).

It will automatically detect whether you are black or white and play accordingly, so don't move the mouse too much or close the window (obviously).  You can click inside the chat box if you're quick and then type snarky remarks to your opponent as you stomp him while chatting.  This is OK, since the keyboard input doesn't really interrupt the engine at all.

There are a few other things that are useful to know, but not necessary.

The "TopMost" checkbox ensures that the program is at the front of all your windows, which is nice so you can see it while it's running.  You should leave this checked, generally speaking.

The "chkWhite" checkbox tells the program whether or not you are playing White, and is now deprecated since "auto play" does it automatically.  Don't touch this unless you REALLY know what you're doing.

The "HumanLike" checkbox makes the program play slightly more HumanLike in Bullet timings, like taking a bit longer to make moves every once in a while.  It's not very well done, so you can play with it if you like.

The "Random" checkbox makes the program do a random first move if you're White instead of the standard King's pawn e2e4 opening.  I think it's pretty fun to do something totally random but know that you're going to win regardless!

Now, what sets this program apart from other programs is full automation.  This feature is currently somewhat unstable, especially if you have a slow computer.  The requirement is that your screen size is exactly the same as mine, and would best if you had Windows 8 and Google Chrome.  It'll probably work with other software, but the screen size is a must.  Again, it's 1366 x 768.  You can probably change your larger screen to fit this size, and then the engine would work, but it will make things appear large and possibly blurry.  You can do this in Windows by right-clicking on the desktop and going to "Screen Resolution".  Using this resolution, you have to set the "Board Size" setting on Chess.com to "Extra Large", which is the default setting when you make a new account.

Once you get things set up, you need to click "auto detect".  Note that you HAVE to click this button every time you start the program or things will go horribly wrong.  Then you click "new game" and a box with five inputs will show up.  The first is the number of moves per game, and again put a large number.  The second is wait time, so fill it out according to the time you have per game.  The third is how many games to play.  You can do a few to test it out or put in a large number and go out to lunch, coming back to find out that you are now 2000+ ELO.  The fourth is something you want to say to your opponents at the start of each game, like "You are going to lose" or something, and the last is something to say at the end, like "GG EZ" or something.  Of course you could say something nice and try to sound like a human and less like an engine.

And there you go!  It'll keep playing those games, winning them all, and getting you free ELO (or FREELO).  One thing to remember is, you need to close all other active games and games you were following, or they will interfere with the automation.

A few things to note.  The only operating systems supported are Windows 7 and Windows 8, and both have to be 64-bit (most are anyway).  Vista 64-bit might work, but nobody uses that so I have no idea.  Mac OSX and all distros of Linux are not supported.  Premium accounts may or may not work, I'm not sure since I most definitely do not have one.  Sorry guys!  If you get some message saying that your .NET is not up-to-date, you should probably update it.  I keep all this stuff super up-to-date and have the latest versions of most things, so you can update yours here.  It's probably useful to update anyway -- might come in handy in the future.  It's also best if you full-screen Chrome, and make sure that the program's window doesn't cover the Chess board.  It will hijack your mouse while playing, so don't try to resist.  Just relax and let it take control...

If it still doesn't work, you can comment and I will try to help you, but this project is not very refined yet, and was originally a personal thing.

Here's the link, I hope you enjoy!  But one final note: you should probably make another account to do this instead of your main account, especially if you have a premium.  You will get banned if you make it above 2000 ELO and play notoriously.  Also, if you constantly beat on the Computer4-IMPOSSIBLE, you will probably get banned, too.  Also, if you make a new account, winning gives you more ELO, so you can get to 2500 ELO even faster, probably only takes a few hours, like while you are sleeping.

And now, finally -- here's the link, for real this time!


One final thing (sorry!), make sure you keep the three files together, there aren't many customization options right now.  Run ChessMaster.exe to open the program.  The other files are used by the main program.

Saturday, March 2, 2013

How to Install Ruby on Rails

I feel like getting Ruby on Rails up and started is kinda difficult, especially for Linux herp-derps like me.  I will start by saying that I kinda suck at Linux, so it took me a while to set up Ruby on Rails.  But eventually I found a procedure that will work!  I'll keep things short and simple, since you probably just want Ruby on Rails up and running ASAP!

We're going to do [pretty much] everything from the terminal.  So one thing to keep in mind is, I'm going to use "yum" since I use Fedora, but if you use Debian, Ubuntu, or Mint, you would use "apt-get" in place of all the times I used "yum".  The easy way to do this is, if one of them didn't work, then try the other!

I read online that all the kool katz these days use this thing called RVM to manage their Ruby versions, so I decided to hop on the bandwagon and do it too (and so should you).

Now, enough talking... open the Terminal and let's get started.  The important stuff will be in red, so you can ignore all of my noobish comments.  Every line that starts with a $ means that you type everything after the $ into the terminal, and every time you you do a "sudo yum install" it will ask for your password (so type that in when prompted) and ask if it's OK to install stuff (so type "y" to confirm).

Step 1:  Update your pre-existing packages

$ sudo yum update

Step 2:  Install curl

$ sudo yum install curl

Step 3:  Install RVM

$ \curl -L https://get.rvm.io | bash -s stable

Step 4:  Load RVM

$ source ~/.rvm/scripts/rvm

Step 5:  Install dependencies

$ rvm requirements

That should print out a bunch of crap, but we're only interested in the stuff immediately after "# For ruby:" under "Additional Dependencies."  I don't know if it'll be verbatim when you're reading this, but as of now, that's how it goes.

Copy all of the stuff after "sudo yum ..." until the end of the paragraph and paste it into the current line in the Terminal, and then press [ENTER].  This could possibly take some time.

Step 6:  Install Ruby and set a default version

The current version as of now is 2.0.0, but it might be different, so do a Google search to find out what version we're currently at.

$ rvm install 2.0.0
$ rvm use 2.0.0 --default

This part might take some time... so go play Intergalactic Exterminator while you wait, since that's what I did.

Step 7:  Install RubyGems

$ rvm rubygems current

Step 8:  Install Rails

$ gem install rails

This part also might take some time, so go ahead and beat another few levels in Intergalactic Exterminator.  When you beat the game, the installation should be finished [for a while, probably].

Yay!  You're done.  But you might have run into some errors.  One of the errors I remember that came up was the sqlite3 problem.

Step 9:  Fix Errors (i.e. Google search)

So here's how you fix that particular error (blue text for possibly important):

$ sudo yum install sqlite-devel
$ sudo yum install ruby-devel
$ gem install sqlite3

A good way to check if "rails" is installed/working is typing the following command.  You should get some version number like 3.2 or something.  It might not be the exact same when you're doing it, but it's 3.2 right now for me.

$ rails -v

Now you can use Terminal and navigate to the folder you want to put your first Ruby on Rails program in.  If you don't know what I mean, read up (i.e. do a Google search) on the cd command.  Now you simply type (of course replace "<project-name>" with the name of your project):

$ rails new <project-name>

After that, it's all up to you where you want to go!  I'd say you should look at what a scaffold is since it makes starting up quickly very easy.  Don't forget to cd into your project's folder!

Step 10:  One last thing - Starting RVM automatically with Terminal

Now one thing I found rather frustrating was that whenever I closed terminal, I couldn't use "rails" in Terminal anymore, unless I typed the following command:

$ source $(rvm 2.0.0 do rvm env --path)

Which is really annoying to do every time.  So I did what any rational human would do -- I did a Google search.  Took a little bit, but I was able to scrape enough information to come up with a solution!

$ gedit ~/.bashrc

A text-editing program should open up.  Add one line to this file containing the following:

source $(rvm 2.0.0 do rvm env --path)

Now, every time you open terminal, you are able to just do "rails" stuff right off the bat!  Neat!!!

Well, I hope this was able to help you.  If it was, then it's probably because I'm a complete amateur (right now, at least) in doing stuff on Linux, so I have to keep it simple (and without complex explanations that make no sense to noobs like me anyway).  I feel like if I had these step-by-step instructions, it would have saved me quite some time and frustration in getting Ruby on Rails set up and ready.

Sunday, February 17, 2013

Intergalactic Exterminator

I never put the download link at the top, but since this is so ridiculously exciting, I'm going to cut to the chase and give you the link right off the bat:
http://www.mediafire.com/?ceqxtgz12s922g6

You can read the rest of the post if you want to.  But you'd rather play the game.  If you don't know how to install the game, you should continue reading.  Otherwise, you should just experience the sheer ecstasy of the game for yourself.

So recently, I rediscovered a game from my childhood.  It's not just some game.  It was probably the game that I played the most when I was little.  It's even cooler that nobody else knows of or has played this game, because it was discontinued shortly after release due to lawsuits.

It's pretty much a Centipede/Millipede game where you shoot the bugs coming down while dodging all the enemies and projectiles.  However, it has significantly improved graphics over the original games, although leaving the beautiful concept the same for the most part.

There are a lot of upgrades to get during the game, including a wide arsenal of weapons, increased fire rate, and wingmen to aid you in your quest.  The difficulty setting can be toggled between Easy, Medium, and Hard.  It's actually pretty hard to beat the game on anything except Easy without using "Continues" (which you get infinite of, only resets your score).  There's even a cheat system built into the game so you can go crazy with infinite weapons and lives if you get stuck -- but bear in mind that if you beat the game after activating cheats, the name in the high-score table will always be "CHEATER!" which doesn't really look good.

If you want to see pictures, I'm sure you can Google/YouTube for them, but I guarantee that you cannot find the full version of the game anywhere on the Internet.  I've searched far and wide online before realizing that my only way of reliving my childhood was to dig up the old CD-ROM from the heaps and piles in the basement.

Since this is a ridiculously old game, it only works on Windows XP and earlier.  Which means that unless you are running an ancient machine, you cannot actually play the game.  Never fear -- you can always install a Virtual Machine.  I won't go into detail how to do that (maybe I'll make a post on it later), but I recommend using Oracle VirtualBox.  Google that and you should be all set.  I'm sure there are numerous tutorials on how to install it.  And just in case you don't have an image of Windows XP, the Internet is indeed full of surprises.  I like this website that starts with "thepi", has "ratebay" in the middle, and ends in ".se".  I'll leave it up to you to figure out what that means.  You can get a Windows XP image really easily from that.

Now after you download the file "Intergalactic Exterminator.iso", you are probably wondering how to use this .ISO file without a CD-ROM.  Never fear -- you can use DAEMON Tools Lite to emulate a CD-ROM drive.  Again, I don't really want to go into detail on how to use other people's software, so you can just Google that, too.  Sorry I'm really being unhelpful.

Then, you just install the game, and enjoy!  It's such a simple game, but it's so much fun, and can evoke a huge range of emotions: frustration, elation, contentment, intensity, ferocity, etc.

I think you'd be scared to hear that I have actually memorized every single level and [nearly] every single detail in the game.  I know every single enemy, how many hits they take to kill, how many points they give, their movement patterns, etc.  I know this game.  Extremely well.

I could easily write a walkthrough for the entire game many times over, but I think that's unnecessary.  You'll find out the ways to beat all the levels.  If you don't you can just beat them the normal way.  Most of them have little tricks that make it way easier to win.

And if you get bored of this game (for some insane reason), the demos are really cool, too.  But it's too bad that they also got discontinued and I didn't get to buy them.  It's so sad that eGames, Romtech, and Hamumu all nearly nonexistent now.  Hasbro did a really bad thing back then, forcing them to take these great games down just because they were improvements on their old deprecated game.  I think that this game had great potential.  For it's time, it was a legendary arcade game for PC, but was shut down before it could reach it's golden age of glory.

Download it here (if you missed it above somehow):

Saturday, February 2, 2013

League of Legends - Four Man Premade

So one day, I decided to start playing this game called League of Legends.  There were two major problems with this game:
  1. It was too fun and addicting.
  2. The community is more toxic than a nuclear wasteland.
So I made a blog documenting all of the awful things that can happen to you while you play this ridiculously fun game.

If you play this game, you will totally understand:

Otherwise, read on...

In this game, it's 5v5 -- your team of five against an enemy team of five.  In this awesome system, you can choose to play with anywhere from zero to four friends.  There's no problem with playing with zero, one, two, or four friends.  What's the missing number?

You are genius!  You are right!  It's THREE.  This magic number means that they have a premade team of four players.  And in a team of five, someone is going to be the unfortunate soul on a team of four very terrible members of our society who are out for the sole purpose of ruining your game of League of Legends.

When they have four, they have absolute control over the game since they are able to report you together at the end of the game (ban incoming!) if you refuse to bow down to their will.  They'll probably report you anyway because they think it's funny.  If you happen to lose the game, you can kiss this game goodbye for a few days and enjoy your ban.

If you want in on these awesome adventures, click the link below to join the game:

Now, why are there two links you may ask.  The first is my referral link, as in I get bonuses for you signing up under my name.  There's no disadvantage for you to do that, but if you feel like you don't want to, the second link is the regular sign up link.  The only consequence of you using the second one is that it would make me a little sadder than if you had just clicked the first one.

If you want to add me, leave a comment, and we'll stomp some noobs, four man premade style!

Sunday, January 20, 2013

Ruzzle Solver

So today, my friend challenged to a game called "Ruzzle."  He claimed that it was a new popular game that everyone was playing.  I've never heard of it, so I decided to check it out.

It turns out it's just a relabeled Scramble with Friends, which was popular around a year ago.  I find it quite funny that a game can resurface like this, just under a new name.  There's no new content, except for advertisements.

Around a year ago, when my friend first introduced me to Scramble with Friends, it was sort of fun, but I figured out something very important: I suck at the game!  So, I did as any normal person would do.  I got sick and tired of always losing to my friend.  I decided to go for the fame and the glory.  I made a bot.

Now, I decided to write a blog post (which I haven't done in quite some time) because I uploaded it to MediaFire, where I store all my uploaded files.  Since I'm slightly OCD about this, I want everything on MediaFire to be linked with something on this blog.  (And perhaps because I wanted to share this awesome secret with other people, although I'm sure that there are other Ruzzle solvers out there.)

Anyway, what this program does is find all of the words in the puzzle and output them, sorted from highest to lowest in letter count.  It doesn't take into account the "Double Word Score" or "Triple Letter Score" bonuses, but I imagine if you just type the longest words, they'll contain most of these bonuses anyway.  And they are huge freakin' words so they'll still give you massive points, right?

Most of my released programs are pretty "refined," or at least look like they are finished and and don't have random buttons and stuff lying around, but I decided to just leave this one in it's current state.  Needless to say, don't press the buttons that have weird names -- even I'm not sure what they do anymore.

To use this is extremely simple:
  1. Type the letters on each line into the only TextBox without spaces, so just go from left to right, and then from top to bottom, as the prompt suggests.  There should be 16 letters in the TextBox when you're done, and nothing else.
  2. Press "Go!!!" and a Notepad (or whatever your default text editor is) should pop up, containing the aforementioned list of words.
  3. Input them into the game as fast as you can.
  4. Win games.
UPDATE:  For some reason or another, I recently updated it to have three output options (you can check any or all of them).  The link at the bottom is also updated.
  • Sort:  outputs the sorted list, as it used to
  • Tile: outputs the words for each tile as a starting location, starting with the top-left one, going across and then down.  Each sub-list is sorted on word length.
  • Filter (5+):  same as "Tile" except that it only includes words that are 5 letters or longer to reduce the clutter when going down the list, since there's no way to input all the words in only two minutes.
Now, while I didn't release any source code because it is so messy I'd be embarrassed if anyone saw it, there is one very small customization that you can do.  The program uses a dictionary, or rather, list of words that it searches for during run-time.  It's possible for you to swap out word lists by just copying a new one into the same directory as the executable, and naming it "DICT.txt".  One thing to keep in mind, though, is that I do not know what the Ruzzle word list actually is, so an oversimplified word list will not get you all of the massive points, and an over-complicated word will probably give you words that Ruzzle will not accept.  Maybe you can find the official word list, but I'm too lazy to find it right now.

Have fun beating all your friends at Ruzzle.  It's easy to trick them into thinking you're a pro at this game!  I've done it twice now!

Just follow the link to download the file.  Extract it and run the executable.  It's easy as that!

Friday, August 24, 2012

Summer in Beijing (HBA)

So it's actually been almost two years since I updated this blog, but I decided that this would be a good idea to post something.  Looking at my past posts, I think that this is the only post about me that has ever been on this blog.

This summer, I went to China (on Yale's generous Light Fellowship, which payed for airfare, the Chinese language program, and a little more) to study two semesters worth of Chinese in two months at the Harvard-Beijing Academy (HBA) hosted at 北京语言大学 (Beijing Language and Culture University).

At first, I was a little nervous for this trip because it was my first time flying alone to China... actually it was my first time flying alone anywhere.  I've been to China before with my family, but I honestly did not remember any of the procedure and stuff I had to do to actually get to China -- all I remembered was the painful 13+ hour flight halfway across the globe.

However, studying abroad was probably the best summer experience I have ever had in my life.  It is truly a once-in-a-lifetime experience to be able to go to a country so different from the USA, learn a language completely different from English, meet new American friends, meet new Chinese friends, and have a truly unforgettable time.

As I mentioned before, this experience was made possible through Yale's Light Fellowship, which had a small writing requirement: a blog about the trip or a written report at the end.  Many people chose the report because it is much less of a time commitment and is probably much easier to do.  However, I chose to blog because I thought it would be more fun (and it most definitely was!), and I'm very glad Yale had this requirement, otherwise I may not have documented "all" (actually, it's more like "some of") of the spectacular things that I did in China.  I admit to slacking off a little bit during the second half of the program, so my postings are like: a few in the beginning, a bunch on a free Saturday before our Social Study trip in the middle of the program, a few during/after the trip, and a ton of them after I got back to the USA.  You can just look at the dates of the posts to see that -- I didn't modify them to make it look like I was a regular blogger with a well-developed posting schedule.

If you weren't at HBA with me, some of the things may not make much sense to you, but I think you'd still enjoy having a look at my Adventures in Beijing!  I tried to make it more interesting than just detailing what I did every day, and I put up a ton of pictures because everybody knows that pictures are a lot more interesting to look at than walls of text (such as this post).  A few of the Yale students at this program also wrote blogs, so I tried to make mine a little... um... distinct from theirs!

So again, here's the link, in case you wanted to finish reading this post before clicking a link:
http://ericinchina2012.blogspot.com/

Friday, January 28, 2011

The Paradox of Time

Time is a strange thing.  It flows constantly forward and you can't stop it.  It's a juggernaut.  A beast.  A tank.  It doesn't listen to anybody or anything.

Time is really annoying because whenever you want it to speed up, like when you're sitting in a bored class, time slows down to a crawl.  Every time you check the clock, you feel 10 minutes have gone by, when only 30 seconds have gone by in reality.  Or, if there's a huge event like an awesome party or sweet vacation the next day, you'll have trouble waiting for the time to pass.

However, if you are hard-pressed for time, you want time to slow down for you.  But then, time starts accelerating to breakneck speeds.  When you're taking an atrociously difficult test under extreme time constraints, time starts flying by.  As you try and try to solve the problems, an hour goes by and time is called and you have to stop working.  Or, if you're playing some awesome, intense video games, but you look up and already an hour has gone by.

Thus, I have discovered the time function: v(n) = k/n, where v is the how fast time is passing, n is how much you need the time, and k is some constant.

I think it's rather true.  When you're cramming stuff right before, you wish you had just a few extra minutes, when you had an hour yesterday that you blew off because time was very unimportant at the time.

Actually, I think it has to do with how active your brain is.  Your brain uses all of it's processing power to do stuff, and the unused power goes to "processing" time.  So when you're very idle, your brain spends tons of resources doing nothing but thinking about time passing.  That makes time really slow because you're always thinking about it.  Then, when you're fully occupied, there is little to no brainpower going to processing time.  So it will fly by because you're not thinking about it.  Maybe during everyday mundane tasks, a second feels like a second, and that's the standard second that you feel.  This brain idea even takes into account when you're tired or your brain is at suboptimal performance.  If you're really sleepy, you don't have any processing power to do anything, so no matter what you're doing, time is flying by because you can't even think about time whether or not you wanted to.

Hence, I have discovered the brain-time function: v(b) = kb/B, where v is how fast you think time is going by, k is some other constant, b is how fast your brain is going, and B is your maximum brain speed at the moment.

So that's the paradox of time.  Time is so rebellious and unsympathetic.  It "deliberately" goes faster when you want it to slow down.  Time antagonizes you for fun.  It purposely goes slower when you want it to go faster. Anyway, none of what I just said has any scientific basis (as far as I know), so it's all just for fun!  Hooray!

Wednesday, January 5, 2011

Simplified English

Right now, English is one of the most complicated languages because it is so non-standard.  If someone asked you to pronounce a word, you may or may not be able to do it because English pronunciations are so weird.  However, if you only took a week of Spanish, you could pronounce every single word in that language.  Chinese used to be very complex, too.  But they simplified it down from Traditional to Simplified Chinese.  Too bad it's still kind of complex, although their pronunciations in pin-yin are very easy to read.

Here's a famous question: How to you pronounce "ghoti"?  The answer is the same way you pronounce "fish."  As in enough, women, nation.  How strange!  It's no wonder kids have so much trouble learning spelling and speaking.

I think English should be simplified to be a phonetic language, or as close to one as possible.  For starters, the letter "C" should be entirely removed from the alphabet.  It only serves one purpose: to make the "CH" sound, which maybe should get it's own character.  Or, it can just stay and become one of those rarely-used letters like "j", "q", "x", and "z".  Maybe "KH" can be used to substitute for the old "CH" sound.

"G" will lose it's soft sound, which is when it sounds like a "J".  The "G" should GO let the "J" do it's own JOB!  That way, there will be less confusion.

The vowels can still retain their hard and soft sounds, but they should get an accent, a bar, or some other tone marking to show that it is a hard sound (or soft sound -- which ever occurs less in the English language... I'll have to ask a professional language guy).

Now, the alphabet can also be changed to something I called "Simplified English."  All the letters are still the same, but now they look different.  All of them can now be drawn in one stroke -- no more lifting the pen to dot your "I"s or cross you "T"s.  However, if accents are added, it may present a problem because accents would need another stroke.  Since it's so standard now, all characters are drawn from top to bottom (or left to right if the endpoints are at the same height, as in the case of the capital letter "A").  They also take less ink to write.  Have a look:


As much as I hate to admit it, there are some faults to this.  Since the letters are more minimalist, it can sometimes be harder to distinguish between letters.  That means the already-messy handwriting for some will become a total disaster in Simplified English.  Of course, there can be some slight alterations, such as the curling of the tails on the "g" and "y", but overall, I'd say the letters can't change much.  Also, this system has rather poor compatibility with math because the "B" now looks like "3", the "I" and "l" both look like "1", the "O" looks like a "0", and the "Z" looks like a "2".  Also, a system in the English language already exists to make writing faster and supposedly easier: cursive.

However, the biggest problem with this whole idea is that change is difficult.  The entire world now basically speaks English -- it's the Earth's planetary language now!  If aliens came down and asked what language we all spoke, we'd probably say English.  So that means we'd have to effect that massive change on basically everyone.  I remember some talk about creating a universal language a while ago, but it didn't go through.  Obviously, some people didn't feel the need or desire to learn another new language.  Revising the English language is probably more difficult than reforming Chinese because many people are learning English as their second language, which means they have to re-learn a language they are currently learning.  On the other hand, everyone in China spoke Chinese, so they all changed their first language, which was probably easier for them.  It also was not on a global scale.

Another problem of converting to an entirely phonetic language is that there are a ton of homophones in English.  These are words that sound the same, so they are only distinguished by their different spellings.  Now, all the homophones will combine into one spelling, making it probably a bit more difficult to figure out what certain text is actually saying.  People will need to be more adept readers who can use context clues to figure out what meaning of the word it actually is.

Even though this whole idea is pretty preposterous, you should try writing in Simplified English sometime.  After reading this through, try reading the first paragraph in Simplified English (an accent means that it is a hard vowel sound):

Rít now, Inglish is won of thé móst komplex lánguijes békuz it is só non-standerd.  If sumwon askd yú tú prónows a werd, yú má or má not bé abl tú dú it békuz Inglish prónowséáshins ar só wérd.  Howevr, if yú Ã³nlé tuk a wék of Spanish, yú kud prónows evré singul werd in that lánguij. ...

It was so hard just to translate those few sentences from English to Simplified English -- I didn't even write out the new characters and it was still a massive pain.  New "Simplified English Keyboards" might have to be made so that accents are easier to type (the Spaniards would surely love that!).  Now that kind of thing would stop people from even trying to learn it.  I don't even know if I translated it 100% correct.  I probably left out an accent here or there or broke one of the rules.

Even though I think this is a pretty good idea for an idealized world (or a very small population), it has no place in the real world.  It's just cool to think about it.  What do you think?  Would it be a good idea to switch to Simplified English?

Tuesday, January 4, 2011

LaTeX

I found out about LaTeX last year (oh wait -- 2009's two years ago now!).  It's similar to Word in that it makes typed documents, but it's really not the same.

Microsoft Word is a WYSIWYG (What-You-See-Is-What-You-Get) program, meaning that whatever is currently displayed on the screen is exactly what you're getting.  If you hit the print button, it will print out the document for you, as it is shown on the screen.

However, LaTeX is like programming.  You type in "code" that tells the program what kind of document to create and what text, pictures, and other stuff to include in it.  Then, you "build" your document, similar to compiling code in a programming language like C#.  It can output to several different file formats, but I prefer the PDF because it is so universal and widely used.

There are a few advantages of this:
  1. The document after it is processed appears much more professional, and uses advanced typesetting algorithms and such.  For example, if there are two "f" letters in a row, they are supposed to be connected.  Of course, Word doesn't do this for you, but LaTeX will.
  2. Although you can make Word documents into PDFs, it's not automatic whereas PDF files can be opened anywhere.  The code can be edited with a simple text editor, such as the feature-empty Notepad that comes with Windows.
  3. You can even use online compilers, (just Google : "Online LaTeX Compiler").  That means you can do your stuff anywhere you want.
  4. LaTeX is designed especially for writing professional-looking reports, including scientific ones.  As such, processing code for math typesetting (like the fraction bar, nested radicals, and Greek letters).
  5. You're learning how to use a handy tool that you might have to use when you go to college (or whenever you do professional science work).

Now that you're totally excited and want to try this out, you probably want to know how to get it on your computer!  Luckily, it's really easy.

First, download and install MiKTeX, which includes all the files you'll need to format these documents and build them from the ground up.  I recommend going to http://miktex.org/ and downloading the latest version.  You can either get the Basic or Complete setup.  It's barely worth mentioning due to the obviousness, but the Basic setup will take less time to install than the full thing.  NOTE: Remember what folder you installed MiKTeX to because you'll need to reference that folder later!


Now that you have the files that form the backbone, we need some User Interface.  TeXnicCenter was created to work with MiKTeX and make your job as easy as possible.  Go to http://www.texniccenter.org/resources/downloads to download it, and again, get the latest stable version.

This one should install pretty quickly, so just follow the prompts.  When it's done, run the program, and it will give you a wizard to help you set it up.  It will ask for the location of the executables, so go to your install folder to MiKTeX, and find the a folder called "miktex".  In that folder, there's another folder called "bin".  Copy the entire address of this folder and put it into the prompt for the path to the executable files.  You can leave everything else blank.

If you screw up, then you can just open up TeXnicCenter and go to "Build" --> "Define Output Profiles..." (or Alt + F7), and click "Wizard..." at the bottom-left corner of the dialog window that pops up.  Now you can try again!

After you set it up correctly, it's all yours to play with.  First, you should change the dropdown menu to say "LaTeX => PDF" unless you want to build to some other format.  I like to rearrange the toolbars so that they only take up 2 rows at the top.  Then, I close the "Navigator" on the left side so I can have more screen space.  It's all up to you to do what you want to make it as nice as possible.  You might want to play with the options in the "Tools" menu.

Now you can create your first document.  I recommend that you start with this as a template, since LaTeX needs a few things before you can actually type out your stuff.  Here's the code that you can use:


\documentclass[12pt,letterpaper]{article}
\usepackage[margin=2.5cm]{geometry}
\begin{document}
\title{}
\author{}
\maketitle

\end{document}


In the blank line, you can start typing out your document.  You can put your title in the brackets after "\title" and your name in the brackets after "\author".  If you don't want a cool, fancy header, you can just delete the lines between (but not including) "\begin{document}" and "\end{document}".

Now you have to build an output file.  Just go to the "Build" menu and then use the things there.  A few nice shortcuts are [Ctrl + Shift + F5] to build and view the output, [F7] to just build the file, and [F5] to just view the output.

That was just a very brief introduction to the world of LaTeX.  I'm not a complete pro at this, but I'll probably make a post in the future about how to do the basics.

Have fun making professional-looking PDF documents now!

Monday, January 3, 2011

SparkNotes Compiler-Extractor

Ever find yourself in an English class in which the the text you're supposed to read is borderline incomprehensible?  Or if you're "that guy" who always needs to read supplement texts AFTER reading the original to make sure you have complete mastery of what you were supposed to read?

Either way, you probably read the SparkNotes.  Maybe you want to print them out and bring them to school so you can have a look at them in class.  Maybe your teacher is so magnanimous that he/she lets you use your notes on tests and/or quizzes.

If you fall in any of those categories, then you can find use in the SparkNotes Compiler/Extractor.  (If you're in middle school, you might not need this, but once you get into high school, SparkNotes will become your good friend, especially if you take higher-level English courses.  Or if you're just completely lazy.)  This way, you don't have to manually copy-and-paste the text (and waste a lot of time) for every SparkNotes page for every book that you're supposed to be reading.

I'd say that this program is pretty self-explanatory, but I'm the one who wrote it, so I'd think it's easy to use no matter what, right?  Here's a quick run-through of how to use the program.  You might want to just download and try the program first, and come back and read the rest of this post if you don't get it.

When you download the file ("SparkNotes Compiler-Extractor.zip"), you should extract the ZIP archive to wherever you want.  In your unzipped folder, you should have 6 items (in no particular order):

  • SparknotesCompiler.cs -- This is the source code for the program.  You can open it, read it, change it, and basically do anything you want with it except sell it!
  • c_SparknotesCompiler.bat -- Run this file to compile SparknotesCompiler.cs if you make any changes to the source code.
  • SparknotesCompiler.exe -- This is the actual program.  Run this program.
  • SparkNotes.dotx -- This is a word template I created just for these SparkNotes.  You just open the HTM document generated by Sparknotes.exe, copy all the text, and paste it into this template.  There's more to it, so read on.
  • SparkNotes.bas -- This is a Word macro for fixing up the formatting in your document.  You'll find out more about this further down the post.
  • styles.css -- This CSS file is needed for the generated HTM files to display correctly.  NOTE: The HTM files that are generated must be put in the same folder as the styles.css file!

Now you can compile/extract a SparkNotes!  First, run SparknotesCompiler.exe.  The first prompt wants you to complete a URL.  Let's compile Heart of Darkness by Joseph Conrad, for example.  To get SparkNotes's URL for that certain book, just Google it: "SparkNotes Heart of Darkness".  Probably the first one will be a link to it.  You can either click it or just use the web address that you see: "www.sparknotes.com/lit/heart".  All you have to fill out is the end of this URL, so type into the program: "lit/heart" and press [ENTER].

NOTE: If you get a URL like "http://www.sparknotes.com/lit/heart/section1.html", then just take out anything after the book's (probably abbreviated) name in the URL.  Also, don't include the forward-slash at the end, like the program tells you in case you didn't read it because you don't like to follow directions.

If you're just a normal user, then I recommend you just leave all the files extracted in the same folder, meaning that you shouldn't move them around and separate them.  You can move the entire folder if you want, just not the individual files.  That way, it helps keeps styles.css in the same folder as your HTM files.

When the program prompts you for a name, you should just enter the name without a path, such as "Heart of Darkness" or "Heart of Darkness - Conrad" or something like that.  Do not include the ".HTM" extension at the end; only put in the name.  Any characters not allowed in a normal file name are not allowed here.  The program will crash if you try something funny.

Now the program will start listing a whole bunch of URLs that it has finished getting the data from.  It'll tell you how long it took.  If you want to view the generated file right now, then press [ENTER] when the program is done (and gives you the prompt).  Otherwise just close it and maybe look at your SparkNotes later.

If you want a Word document version, then you have to do some work yourself (don't worry, it's pretty easy -- I already did most of it for you!).  First, you open up a new document based on SparkNotes.dotx by double-clicking it.  Then, you copy and paste in the text from your HTM document.  Remember to paste in the good-looking stuff that you normally read, not the HTML source code.  I'd fix up the formatting at the top a bit so that the book's title and author's name take up less space, but that's just my personal preference.  Next, you should change the name in the header (on the second page) to display the correct book title and author name in the corresponding places.

Here's something you might learn now: Word macros.  If you don't know what they are, it's OK because I already made it for you.  Because this post is already so long, I won't post the actual code here.

Here are the instructions for Word 2007.  If you have a different version of Word, it's probably pretty similar.  First, go to "View' on the ribbon and click "Macros" --> "View Macros" on the right.  Or, Alt - W - M - V is the Office 2007 shortcut for you.  Then, type in the name of the macro we're going to use.  For this one, I recommend something like "SparkNotes".  Then click the "Create" button.  It'll bring up this code screen.  But don't be afraid!  Click "File" --> "Import File..." and navigate to the folder where this program is.  Select "SparkNotes.bas".  Save and close the code window and go back to your Word document.  Go view your macros again.  This time, select "SparkNotes" and click "Run".  It will format your document for you.  I think that you only have to do this once, because it will save the macro with Word.  How useful!  You don't have to save this word document with the rest of the HTM files, styles.css, and the other files because Word has it's own independent formatting now.  It has no dependencies on other files!

If you're OK with a Word document (which you probably are), then you're fine.  If you want to make a PDF out of it, I recommend that you get CutePDF Writer.  It's a great, easy-to-install, free tool.  You can save/move the PDF files anywhere you want, just like the Word documents.  Just remember to keep the 6 downloaded files and the generated HTM files together!

That's all... it was pretty easy, wasn't it?  You didn't need those instructions -- you probably think I am insulting your intelligence right now!

If you didn't find the link in that massive bulk of text above, here it is again:

Sunday, January 2, 2011

25-Hour Day

What would happen if the day had 25 hours?  Numerically, 25 is a perfect square, and in the decimal system, we really like multiples of 5.  However, 24 also has it's merits: it's divisible by many more numbers than 25 is.

I'm not talking about magically increasing the length of the day into 25 hours.  I was thinking of decreasing the length of the hour from 60.0 minutes to 57.6 minutes.  Then, we could change the minute so that there are still 60 minutes in an hour, thus reducing the minute's length to 57.6 seconds.  After that, we can readjust the second, which is a metric unit.  Or, we could change it so that there are 50 minutes in an hour, another move towards the decimal system since 50 is much more "decimal" than 60.  Maybe we should just leave it as 57.6 minutes in an hour and not readjust all of the other time units because science would be in an uproar if an SI unit got changed.  Everything would still be the same dimensionally, but it would all be off numerically.

What would people do with that false "extra" hour?  Maybe they feel like that they have more time, even though they don't.  Some might sleep in; others might play video games; even others might some find something useful to do.

Would people notice that each hour is shorter?  Every hour is shortened by 4% to make time for the extra hour. That's 2.4 minutes chopped off of each normal hour.  I think that most people will notice at the beginning, but then they will begin to adjust to the new time.

Would the illusory "extra" hour actually work?  There are a few inherent problems with this system.  The first is the most obvious.  What if only some people adopt the new system?  Then it would start another one of those metric-vs.-customary battles.  Also, 57.6 minutes in each hour seems kind of odd, and as I mentioned earlier, changing the physical quantity of a second may not be a good idea.

Even if everybody took the new system, it would make everybody's hours seem more rushed since they are actually shorter, making the everybody, who are already going at break-neck speed, even faster (and maybe more efficient).  Short activities, such as half-hour exercises or one-hour classes would only be shortened by 1.2 and 2.4 minutes, respectively.  That's next to unnoticeable, when you consider all the small things that can cause such a fluctuation.  However, when you consider things that take up a significant chunk of time, such as sleeping, school, or work, which all take around 8 hours each, they will all lose 19.2 minutes, which seems small compared to the 8 hours, but it's like getting out of school or work 20 minutes earlier each day.    Also, it would make the recommended 8 hour nighttime rest be only 7 hours + 40 minutes.  Maybe people would learn to adjust to that, but it might not actually be healthy.

Are there any real benefits?  Considering that 20 of the extra minutes in the day come from losing sleep, it means that if you still want your 8-hour beauty-sleep, then you would only get 40 minutes.  It's still a significant amount of time for you to kick back and relax or do something you've always wanted to do.

All considered, the only thing that the new 25-hour day would accomplish is make everything go faster, and likely make everyone more stressed out (unless everybody uses the extra hour for relaxation).  They'd all learn to be 4.167% more efficient to make their work-time efforts still the same as the normal 8-hour workday.  Maybe it's a good idea; maybe it's not.  What do you think?

Saturday, January 1, 2011

New Year's Resolutions

Happy New Year's, everyone!  Now that 2011 is here, we all are ready to make our resolutions for the new year.  Of course, many of us have huge lists that are possible only through divine intervention.  However, I think the best idea is a list of 3 items:
  1. Something you can do for others, such as:
    • Volunteering.  Many organizations, such as hospitals and children's camps, are in constant need of volunteers.  Even though you may not always feel like you're doing a lot, your time and efforts to help the community can really make a difference in someone else's life.
    • Forming a club.  You and your friends can all start a club around some common interest, such as music, books, or art.
    • Being nice to someone.  Maybe you should try being nice to your siblings!
    • Helping around the house.  Your parents would really appreciate it if you would actually help them with the many things that need to be done around the house.
    • Saying "please" and "thank you."  Manners are always important, and everyone should learn how to be polite.  Building those people skills is just as important as building those academic skills.
  2. Something you can do for yourself, such as:
    • Learning something new.  Maybe you want to learn how to play an instrument, how to program, or even how to touch type.
    • Getting organized.  If you're a messy person, maybe this is the year to change that bad habit.  You may also want to consider keeping a calendar (electronic or paper both work) so that you will know when stuff happens.
    • Using correct spelling and grammar.  It's kind of annoying (and makes you look dumb) if you're past middle school and you don't know "how 2 spel or uzing kurekt gramar."
    • Building a good habit.  These habits are either your best friends or worst enemies, depending on whether it's a good or bad habit.  You might want to remember to turn off your lights this year.  Or eat breakfast every day.  Or drive safely.  Or be on time.
    • A long-term project.  Do something you've always wanted/needed to do before.  You could renovate the house or finish the basement.  You could learn to build a computer.  You could read a book series.  The possibilities are endless!
  3. "I will follow through on my New Year's Resolutions."  Or something similar.  Everyone has such great goals for themselves, but it's so sad that a very small percentage of them go through.  It's almost a ritual: January - create resolutions, February - stop doing resolutions, March - forget resolutions, April - wait until next year to set new ones.  Maybe doing 2 smaller things each year every year is better than having a gargantuan list all to be done in one year!

Friday, December 31, 2010

Learning to Type

I only learned how to touch type (typing without looking at the keyboard) when I was in high school.  I used to type at a decent speed (~40 words per minute), but it was only after I learned how to touch type that I could raise that up to 80 words per minute.

If you have to do a lot of typing, such as writing reports for school, programming, or even casually blogging, typing quickly is extremely valuable.  The faster you can get your ideas down, the more time you have to do other things.  It is really annoying when you have so many good ideas, but you took so long typing that you forgot what you were going to write.

I first learned to type when I was in 10th grade.  I took AP World History, which had a lot of homework that involved reading the book and taking notes on it.  Usually, it ended up as a 1 - 2 page note-sheet.  Of course, I could read and process much faster than I could type, so my typing speed was definitely the bottleneck for my homework completion rate.

I decided that I would learn how to type faster.  This is the part where most people stop trying to learn, because your typing speed drops dramatically in the first few weeks.  Right when I decided to switch over from random typing to touch typing, I probably had only 15 - 20 word per minute.  Yes, that's very slow!  I had to constantly remind myself to keep on typing correctly, because once I stop thinking about touch typing, I would automatically revert to looking down at the keyboard and typing with random fingers again.  Since I typed so slowly at first, it took much longer to do my homework.

However, I could see improvement after a while.  My speed began picking up.  After a few days, I could type without looking at the keyboard, but I still had to sometimes stop and think about where certain keys were.  After a week or two, I could type just as fast as I used to be able to.  After around a month, it became habit.  I could touch type without a problem.  My typing speed doubled!

If you don't know how to touch type, then I think you really should.  It really helps a lot, especially after I learned how to program.  If you're extra-awesome, maybe you want to learn how to type with a Dvorak Keyboard, which has better key layouts for faster typing with fewer errors because it requires less finger movement by placing the important keys in the middle row.

Thursday, December 30, 2010

Spelling and Grammar

De ez-est whey two luk smartur (or dummer) then u r s 2 uz (or not too uz) curekt speling and gramr.  Evin tho its exceptable 2 uz abbrs 4 neerly evry wurd n a 4um poast, Facebppl statis updayt, or txt msg, it luks a lot wurs dan if ech wurd wuz writen out kurektly & teh sentens had kurekt gramar.

(The above paragraph translated into English)
The easiest way to look smarter (or dumber) than you are is to use (or not to use) correct spelling and grammar. Even though it's acceptable to use abbreviations for nearly every word in a forum post, Facebook status update, or text message, it looks a lot worse than if each word was written out correctly and the sentence had correct grammar.

If someone was reading a post that you made, and every other word was spelled wrong with sentence fragments all over the place, then the first thing that he (or she) will think of you is that you're lacking in intelligence because you can't even write normally.

So, I suggest that you keep spelling and grammar in mind when you write stuff, even online.  It will help you in the future if you can make it a habit.  If you haven't already taken the horrific SAT, then constantly using correct grammar will help you in the new and terrifying Writing section.

Remember, if you're really smart, but can't get your ideas across, then you'll still look pretty dumb.  Unless, of course, you're like an Einstein.  Communications skills are so important in today's world, and it all starts with spelling and grammar.

That brings up another point: What happened to teaching those two skills in elementary school?  Even though there are still spelling tests, they are so easy that they don't really teach anybody anything.  Here's an [exaggerated] example:
Teacher: Time for a spelling test.
Kids: <Groan>
Teacher: Here's an easy one: Spell "I" as in "I love you."
Kids: <some write "I," others write "eye," even others have no idea>
Teacher: The next word is a lot harder: Spell "add" as in "To get the total number of apples Robin and Martha have, add them up."
Kids: <some write "add," others write "ad" because they don't know how to spell it or because they don't know the difference between "add" and "ad," still others have no idea>
... etc ... more words of this difficulty.
Teacher: Here's the bonus word -- it's a real challenge: "flower" as in "I picked flowers for my mother."  I'll even give you a hint: It has 6 letters!
Kids: <some write "flower" (good job!), some write "flour" even though it only has 5 letters, some write "IDK" because they text too much already at a young age>
Teacher: All right, that concludes our spelling test!  It's time for recess!
Kids: Hooray!!!  (then they run to the computer to play video games and turn their brains to mush)

I hope there's a reason that elementary school is also called "grammar school."  Incorrect grammar has been imprinted so deeply that using the correct grammar makes you an outcast.  "May I go to the bathroom?" ... "That's not right." ... "May I go to the bathroom, please?" ... "That's still not right." ... "Can I go to the bathroom, please" ... "That's much better!"


I think it's OK to misspell a word here or there or to forget your grammar rules (temporarily) if you are chatting online or sending text message because nobody besides maybe a few people will see what you said, but if it's going public, then you should correct the easily spotted mistakes first, including typos.

Is the spelling and grammar problem fixable?  I think so.  The question is: Will you be part of the solution or part of the problem?