21+: Republican Debate #1 + Liquid Refreshment

21+ year old friends, the first Republican debate for the 2016 primary promises to be a doozy, with no less than 10 incredibly (politically) diverse candidates getting ready to square off against one another.


With insane rhetoric leading up to the debate, I took the liberty of merging various ideas as well as my own in the form of a drinking game for you and your friends / family to participate in with your choice of beverage. I’d recommend choosing in a 5 – 3 – 1 -1 manner from each list, but it’s a free country (that we need to take back!!..). Enjoy responsibly.

One Drink

  • Donald Trump mentions his wealth or intelligence
  • Someone mentions Benghazi
  • A candidate starts a sentence with “This President ..”
  • A candidate bitches about the debate rules / moderator
  • Someone promises to “Take America Back ..” or “Make America Great Again”
  • The crowd cheers something awful (see: gay soldier example)
  • A candidate recounts their poor / hard upbringing
  • Trump refers to himself in 3rd person
  • Trump treats a policy idea like he’s selling a hotel.
  • Someone mentions how bad they think the Iran deal is
    • Bonus Drink: They do so by an insulting analogy
  • A candidate cuts another candidate off
  • A candidate blatantly ignores the question to respond to something earlier
  • Someone says “Free Market”

Two Drinks

  • Someone softens their bigotry by saying something like “I have many [minority] friends..”
  • Someone says welfare state
  • Someone equates terrorists with Muslims
  • Someone says “traditional marriage.”
  • Someone mentions how many firearms they own
  • Someone bitches about illegal immigrants
    • Bonus Drink: If they’re blatantly referring to Central + South Americans.
  • Someone says the US is a Christian Nation / Christians are being persecuted


  • A candidate mentions Reagan during their speaking time.
  • Mentions Obamas birth certificate
  • Someone calls Obama a socialist or America socialist.

Windows 10 on MacBook Air (Late 2010)

Windows Boot

I’m always up for a frustrating challenge that involves banging my head relentlessly against a wall until one side gives in. That’s why I love my MacBook Air. Boot Camp doesn’t officially support Windows 10 right now, and my MacBook Air is too old to support booting from USB. At least that’s what Apple wanted me to believe.

The following is the tedious process I went through to “trick” my MacBook Air (3,2 / Late 2010) into letting me “burn” a Windows 10 ISO file onto a removable USB in order to put Windows 10 on my MacBook. A bit of intuitive tinkering with this process should allow you to get this to work for most models.

  1. Back your stuff up and grab a Windows 10 ISO here.
  2. Create the Windows installer. This gets fun, as you have to do some “sneaky beaver” stuff to trick your MacBook into thinking it’s much younger than it is.
    1. First, click the Apple logo in the top left -> About this Mac -> System Report. Look for something called “Boot Rom Version.” Mine was MBA31.0061.B07, yours should be something similar with the first 3 letters being a prefix for your computer model.
    2. Modify Boot Camp app – Warning, you could nuke Boot Camp here. Open up terminal and run the following command;
      sudo nano /Applications/Utilities/Boot\ Camp\ Assistant.app/Contents/Info.plist

      There are 2-3 modifications you need to make here.

      1. Add the “Boot Rom Version” under the header “DARequiredRomVersion” .. be sure to follow their tag formats.
      2. Find where it says “PreUSBBootSupportedModels.” Remove “Pre” from this string and then make sure your Mac model is there. This can be found in System Report from earlier next to Model Identifier. Mine was MacBookAir3,2 for example.
      3. (Might not be necessary) Check under “Win7OnlyModels” to make sure your Model Identifier is not listed. For some reason, Apple locks certain models from being able to install newer versions of Windows, simply removing your model from this list gets around this.
    3. Since you’ve modified the application, it will need to be resigned. This can be done by running the following;
      sudo codesign -fs - /Applications/Utilities/Boot\ Camp\ Assistant.app/

      (You might be prompted to install some additional tools if they don’t exist already, go ahead and install them.)

    4. Now, relaunch Boot Camp Assistant and you should now be able to create an install disk on your removable USB with your Windows 10 ISO file. Select “Create Windows 7 or later install disk” and “Download the latest Windows support software from Apple,” while leaving the third option unchecked. The next part will take some time.
  3. After your install disk is created through bootcamp, restart your computer and press + hold the option key as soon as you hear the Mac chime. Release when you get to the boot menu, where you should see a USB drive named EFI. This is your Windows installation drive. Select it.
    Boot Menu OS X
  4. Now we need to manually create a partition to install Windows 10 on. When you get to the setup menu with the option “Install Now,” open up a command prompt by pressing Shift + F10. Now, enter the following sequence of commands.
    select disk 0
    convert gpt
    create partition efi size=200
    format fs=fat32
    create partition msr size=128
    // Decide how large you want your partition to be.
    // 102400 == ~100 GB
    create partition primary size=102400
    format fs=ntfs quick label=Windows

    Now that the necessary partitions for Windows are created, close command prompt and follow the installation guide. When prompted, select your “Windows” partition as the drive to install Windows on.

  5. Now, your computer should boot straight into your fresh copy of Windows 10. When you need to use OS X, just hold the option key when you hear the Mac chime on startup and select your Mac HDD. If you want to change the default startup disk back to Mac and have Windows be secondary, follow these instructions.

I-Corps final push: New York.

Upper West Side

The first stop of the final push of the National Science Foundation I-corps program we are in is none other than New York. Airbnb’d in the Upper West Side a few blocks from Central Park, it’s weirdly nice here and much different than I remember. Dense but not overwhelming. Amazing food so far, the favorites are The Meatball Shop and a hole-in-the wall pizzeria we found a block away.


Diverse in every facet, with the soft rumbling of the subway you’d almost swear was thunder at night. Unfortunately, only two days here until moving onto Las Vegas. Then Los Angeles, San Francisco, and Seattle before returning home.

NSF I-Corps Kickoff in Atlanta

One of the big projects I’m involved in is the CAM2 image analysis team in Purdue Universities ECE Department. Headed by Professor Lu, CAM2 seeks to synthesize the vast array of public cameras across the world to create a platform where users can easily select and execute image analysis’s on the accumulated datasets.

The I-Corps program specifically accepts roughly 20 teams into each co-hort (I believe there are 3 per year) to investigate whether the research technology is commercially viable. For our team, our Principal Investigator is Professor Lu, our Entrepreneurial Lead is Kyle McNulty, and I am serving as the Business Mentor. Although young relative to other business mentors, I think it will be an advantage as far as relating and working with Kyle and Dr. Lu as well as working in a more agile Business Model development environment such as the one the Business Model Canvas requires.

Over the next 6 weeks we will use the $50,000 I-Corps grant to travel and interview an abundance of potential “customers” / users of our hypothesized application – using image analysis to allow retail stores understand and react to the behavior and intent of their customers. So far we have conducted store level interviews with Nike, Microsoft, Bloomingdales, and Banana Republic to name a few and are looking to move up the corporate decision making ladder in the coming weeks.

With a great team, I’m sure we will be able to thoroughly evaluate this market segment using the Business Model Canvas and hopefully we’ll have a continue or don’t continue answer founded in solid market evaluation at the end of it all. Nonetheless, I’m going to try and write about the progress each week if not for my own records and sanity.

The Finished Product: Web Crawler + Search Engine

After 6 long weeks of work, I finally wrapped up my CS 390 Web Crawler + Search Engine project. Although only worth 1 credit hour, I must have spent at least 30 a week working on it. The best part; it was easy. Finally, after sitting through so much theory and mundane labs and projects, I could finally apply all the different things I’ve learned throughout my coursework.

Of the things I set out to accomplish, I achieved almost all of them save a few database optimization features which I simply ran out of time to implement. My Web Crawler managed to crawl at a rate of roughly 800 URLs fetched and parched per minute, mainly through the (painful) implementation of threading and breadth-first URL grabbing. The search engine itself used Java Servlets to perform the computations, with Ajax requests getting the necessary information.

The three applets created were an autocomplete servlet for the user input, a URL list generator from the user query ranked with a simplified version of PageRank, and a special person servlet to return the information of Professors. Ranking the results was probably the most difficult part of the project, as it took a few iterations to get it right. For example, in addition to incrementing a pages rank when another pointed at it, I also checked for the case of the user query appearing in the title of the webpage as well as artificially boosted the rank of faculty pages to ensure they were towards the top for a Professor name search. Very difficult to balance this and some additional tweaks are probably needed. The search query suggestions and results were calculated in real time, the former using a Mealy machine automata to predict the user input complete with state transitions and all. The result is a quick video I captured and uploaded to Instagram below. I will try and host this project on GitHub or a personal site, and will continue to work on improving the querying speed as well as evolve special cases.

Nonetheless, I suggest anyone and everyone at Purdue who wants to take a Computer Science course try and take one with Professor Rodriguez- Rivera as his projects are tough, but relevant in the real world and get you thinking and applying the fringes of your skillset. Especially CS390, which is offered in C++, Java, and Python for 8 weeks each.



Ubuntu + MacBook Air

Seeking to procrastinate in any way possible, I decided it was time to get rid of the ubuntu crutches of OS X and jump into becoming a terminal warrior. Picking Ubuntu was easy, as if I get lazy the crutches are semi there but I can still do all the unique tinkering only available through Linux.

Surprisingly, it works great. Although the installation was a bit of a pain (if you don’t update sensor drivers, you can cook your computer if you’re not careful), in the end it wasn’t too bad and now gives the combination of great hardware from Apple and anything I could imagine software wise from the open source community.


Warning: Don’t run the driver script in it’s entirety or you will create a driver conflict with the wireless cards, which is a pain to fix. Pick and choose whatever pieces you want.

Links to installation instructions;

The Start of an Exciting + New Project

Finally, the years of being in the trenches of discrete math classes, data structures and algorithms, and general programming are being tested by a project I began working on this past week. Essentially, the project is to build a web crawler + search engine, with the only constraint being that it is to be built in Java. Thus, there is a lot of freedom in both algorithms used and system operations.

At the expense of my other course work, this project has taken over my life in a way, with my days consisting of a constant flurry of new ideas and tweaks to squeeze some extra performance out of different components. I’ve completed an initial version of the web crawler that is able to fetch, parse, and insert  + rank URLs at a rate of ~340/ minute on a Mid-2011 MacBook Air (2 cores, 4 GB RAM).

In the coming week, I hope to introduce threading to the crawler and see if I can get some efficiencies between the processes of fetching a URL, parsing the document for URLs and words, and existence check / database insertion. The goal is to get to 1000 URLs / minute on this hardware before jumping into searching + jsp page creation. The ultimate goal is to implement a version of PageRank with some sort of live search (character by character like Google does), but we’ll see how well the crawler goes on this hardware first. Time to brush up on automatas and grammars!

A side note about Java; I never took seriously a friend who used to harp on using Java for applets / programs such as this. But it seems however many new solutions I’ve researched that have been developed to replace Java, Java always seems to come through as a preferable choice whether it be security, scalability, or just plain efficiency (HR or complexity).

Engineering Solutions: flushing toilet back spray

While casually using the restroom earlier today, I identified a multi-million dollar opportunity in regards to the auto-flush sensors on toilets. Fair warning, the description of how I identified the problem might be a bit crude.

Anyway, as I was standing up to wipe, the sensor was triggered and started to flush. Now, these toilets are the mass-use industrial types designed not to clog (easily), meaning the force of the water to help make sure of this is pretty great. So much so that as the level of water in the bowl gets towards the bottom, the jets of water continue to spray violently. Instead of this being dampened by the water in the bowl , it is deflected off of the ceramic confines of the bowl and (uncomfortably) onto your backside making the situation awkward, in a similar manner to this post.

This problem exists everywhere; airports, malls, every restroom at Purdue, etc. So what’s the solution? We can roughly model the rate of the water decreasing from the bowl when flushing, which means that we should be able to adjust the intensity of the water jets to correspond to the rate at which the volume of water is decreasing (related rates actually matters?), thus alleviating the annoying backwash / spray problem.

I’ll take 10% equity for the idea.

Climate Change Debate; How much is due to framing?

“When the issue is framed as global warming, the partisan divide is nearly 42 percentage points.” .. fascinating stuff from a University of Michigan study that indicates that much of the partisan divide in climate change acceptance may be simply down to terminology usage. Full report text (with data, methods, findings etc) can be found at the bottom of the news release.


Shutdown rebranded to Slimdown

While on my Twitter account today, I noticed a number of Republican politicians that I followed began referring to the Government Shutdown over the Affordable Care Act implementation as a ‘Slowdown’ instead of ‘Shutdown.’ I thought this was strange, so I went to FoxNews.com and saw the same verbiage. File this under the ‘Things that make you say hmm’ category, while it also appears as further inarguable evidence of Fox’s ties to the ultra-conservative movement.Image