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\

      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\

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

Evaluating the need for the Voting Rights Act – A Case Study of Mississippi

The Voting Rights Act was a landmark piece of legislation that provided the tools necessary to monitor and enforce the right to vote for all US citizens. In the decades after Reconstruction, the South consistently was guilty of disenfranchising African-American and minority voters. This practice was none more public and brutal than in Mississippi. Since the passage of the Voting Rights Act, there has been a meaningful increase in both African-American voter registration and African-American representation at local levels. With this change has come pressure from the South to lift these restrictions, the focus being specifically on Section 5 with requirements on federal approval for any district line or election law changes in qualifying areas. With the recent Supreme Court decision of Shelby County v. Holder that disabled the coverage formula for determining Section 5 coverage, Section 5 has been made dormant and ineffective. Thus, we will evaluate the conditions leading up to the Voting Rights Act, why Section 5 was necessary for enforcing the right to vote, how African-American voter registration changed in the decades after the Voting Right Acts’ passage, and what the outlook is for African-American enfranchisement in Mississippi in absence of the Acts arguably most powerful tool to prevent disenfranchisement practices.

Mississippi has a long history of violent and bitter opposition towards the civil rights movement as well as the voting rights movement. After the Civil War, Mississippi and other southern states were occupied by federal troops and were forced to rewrite their state constitutions, as well as adopt the 14th and 15th amendments. These particularly amendments guaranteed a number of civil rights and the right to vote for all citizens in the United States, regardless of “race, color, or previous condition of servitude.” These Reconstruction era amendments to which Southern states were forced to abide by marked a period of increase in political activity by blacks, with a registration rate as high as 90% of eligible black voters (Constitutional Rights Foundation). In Mississippi, former slaves made up over half of the states total population, creating a strong electoral force that saw the election of a Republican state legislature as well as two black Senators being elected in the years after reunification.

            However, these conditions did not last and dramatically changed dramatically after federal troops withdrew from Mississippi in 1877. Soon after, the elements of white supremacy rushed back into play as whites, largely led by the wealthy plantation owners from the delta area, set out to reign in and suppress this new powerful voting force. None more obvious was this goal than at the 1890 Mississippi Constitutional Convention, where Convention President S.S. Calhoun stated, “We came here to exclude the Negro.” While the ratification of the 14th and 15th amendments prevented Mississippi from blatantly refusing the right to vote to African Americans, African American disenfranchisement was to be implemented in another way. The methods of doing this in Mississippi became the playbook for other Southern States; the convention wrote such measures as poll taxes, literacy tests, grandfather clauses, and others into their new State Constitution. Along with this, violence and intimidation by groups such as the Klu Klux Klan as well as white business owners suppressed African American desire to even attempt to register to vote. While voter registration rates among African Americans had been around 90% during Reconstruction, they fell to just 6% in 1892, after the new Constitution took effect.

            In the years leading up to the Voting Rights Act, powerful and violent resistance to the growing momentum of the Civil Rights Movement occurred across the South. Mississippi was perhaps the most extreme in both of these senses. During the Freedom Summer voter registration campaign in June of 1964, four civil rights workers were killed, three African-American Mississippians were killed as a result of their support for the civil rights movement, four people were critically wounded, eighty Freedom Summer workers were beaten, 1,062 volunteers and supporters were arrested, thirty-seven churches were bombed or burned, and thirty black homes and businesses were bombed or burned. What made this worse was the institutional nature of the violence in Mississippi; the violence was coordinated among state and local government officials, police, the Klu Klux Klan, and the White Citizens’ Council. Their tactics of murder, arson, arrests, evictions, and property destruction ultimately drew national attention and inadvertently gave the idea of serious federal intervention significant merit.

            The pattern of behavior in Mississippi to disenfranchise African-Americans as well as the extremity of methods used to discourage African-American political participation showed the need for serious federal involvement in the state and the South as a whole, to which the federal government responded. First, Congress passed the Civil Rights Act of 1964, which outlawed racial discrimination. Shortly following the Civil Rights Act was the Voting Rights Act in 1965 which empowered the federal government to enforce and prevent interference with the right to vote.  Our focus is going to be on evaluating Section 5 which forces states who qualify for coverage to pre-clear changes to voting laws with the Department of Justice at the federal level. Mississippi provided much of the evidence necessary to convince Congress to include a provision that takes the power of passing and implementing voting laws out of the hands of the states. After passage, the Mississippi response was typical: the state legislature moved immediately to circumvent this federal intervention by refusing to abide by it, culminating in the 1969 Supreme Court decision in Allen v. State Board of Elections, which requires the state to follow the requirement of the Voting Rights Act.

            The impact of the Voting Rights Act in Mississippi was instant. From approximately 6.7% of eligible blacks registered to vote in August of 1965, Mississippi saw 59.8% registered in 1967 (Constitutional Rights Foundation) . Of the 82 counties in Mississippi, 51 of them had direct federal oversight through the Section 5 provision. Analyzing a map of the affected counties reveals some familiar patterns. The powerful, wealthy, white delta region of Mississippi saw the heaviest and most complete Section 5 covereage compared to that of the hills (Attachment 1).


While the geographic separation between delta and hills is a good tool for visualizing the different ideology attitudes, V.O. Key Jr. also mentioned using prohibition support as a method of visualizing the divide between the two groups. Using a 2011 map of Mississippi that demonstrates which counties are dry, there is a visible relationship between the dry hills mentioned by Key, and counties covered by Section 5 (Attachment 2).


This is especially evident when we overlap the maps of counties that are certified for federal observers under the Voting Rights Act with the map of delta area and high African American density area counties.

            Looking at Department of Justice intervention in Mississippi, one notices a few significant items. First, there have been 169 cases of intervention through Section 5 since the laws implementation in 1969. Additionally, federal observers have been sent to areas of intense enfranchisement resistance in Mississippi many more times than any other state. A second point, which builds on the previous one, is that these violations are not just from the years after the law was enacted but are mostly recent. Of the 169 cases of intervention through Section 5 mentioned earlier, 112 of them have come since 1982. Additionally, federal observers have been sent into Mississippi over two hundred and fifty times since 1982 including in the 2011 election when observers were sent to eleven primarily African-American counties in the delta region of Mississippi. Thus, resistance to enfranchisement as well as activity to undermine the Voting Rights Act and its’ provisions is still alive and well.

            Through the powers granted to the Department of Justice by the Voting Rights Act, and specifically Section 5, Mississippi has seen a large and maintained level of African-American registration to vote as well as an increase in the number of elected African-American representatives from Mississippi districts. While there have been hundreds of attempts to change voting laws, redraw districts discriminatorily towards African-Americans and minorities, as well as other maneuvering, the Department of Justice has been able to review these and strike them down before implementation, protecting the enfranchisement of African American and minority voters. Additionally, the 1982 amendments to the Voting Rights Act created a formula for districts to be ‘bailed out’ from Section 5 coverage if there had been no Section 5 objective standards or obvious voting changes, no assignment of federal examiners or observers, and no adjudication of discrimination. An additional significant change to the bailout formula was that individual districts could be bailed out, thus discrimination in one part of a state would not preclude specific districts from being bailed out. This was designed to satisfy the understood over-coverage of States such as Mississippi, where districts in the hills regions were not guilty of violations and thus did not deserve Section 5 coverage like their delta counterparts (The Urban Lawyer).

            In June of 2013, the Supreme Court issued a ruling that had the ability to have huge implications for voter enfranchisement in the South as a whole, and especially Mississippi. In Shelby County v. Holder, the Supreme Court was asked to review the Constitutionality of Section 4(b), the formula for determining which districts would be covered by Section 5. While the Court did not strike down Section 5, it did rule Section 4(b) was unconstitutional due to it being out of date. The formula itself was a snapshot of a county in November 1964 that evaluated whether that county had a test or device as a condition to the right to vote and had a voting-age population of less than 50% registered. Therefore, while the formula for being bailed out had been updated to consider recent history instead of a static point in time, the lack of change for the coverage entrance formula meant that, in the Courts opinion, this formula was aged and unconstitutional. While it was Section 4(b) that was struck down, curiously Chief Justice John Roberts’ opinion seemed to describe a South that had moved on from the disenfranchised behavior, making the law no longer necessary. In his opinion, a table of voter registration numbers was included to show the enormous change in registered African-American voters between 1965 and 2004 (Shelby County v Holder, pg 15). While the Court did acknowledge the laws effectiveness in “redressing racial discrimination and integrating the voting process,” (15) Justice Thomas took it a step further, going on to say that he would find Section 5 unconstitutional on the grounds that extraordinary conditions no longer exist to require such extraordinary measures.

            To understand the implications of these changes to the Voting Rights Act, we need to understand a bit about voting behavior in Mississippi. First, racial polarization is higher on average in areas that are covered by Section 5 than those which are not covered (Ansolabehere, Persily, Stewart III). Even when accounting for party identification, there is a statistically significant difference in rates of racial polarization between the two. Taking a look at racial polarization in Presidential Elections from 2000 – 2012, likely support for the Democratic nominee by whites in covered states has dropped from 0.247 in 2000 to 0.198 in 2012 while support has remained at around 0.41 for non-covered areas, with the exception being Obama in 2008 when he captured 0.45 of the white vote in non-covered areas on average (Ansolabehere, Persily, Stewart III). This holds true even when accounting for variables such as party, ideology, church attendance, religiosity, union membership, age, income, and education. In addition, residence in a covered state remained a statistically significant negative factor in predicting the vote choice of whites in the 2008 election, though the same cannot be said for the 2004 election. Even when controlling for party, whites in covered states were less likely to vote for President Obama than for Hillary Clinton.

            This racial polarization in voting is significant for a multitude of reasons. First, polarization of voters in covered districts is increasing over time, making the regulation of district lines even more critical to maintaining appropriate race representation (Ansolabehere, Persily, Stewart III). One useful method for suppressing African-American and minority votes has been to divide their votes between white majority districts in order to ensure the white choice candidate wins. Therefore, as voting becomes more racially polarized, the effect of this practice will become more significant. Second, as voting becomes racially polarized, the tendency for race-based discrimination against a minority group to become entrenched within these racial divides increases. Naturally, a candidate seeking to protect his or her incumbency by appealing to these racial groups would strongly oppose the aforementioned practices. Third, this unwillingness for races to ‘cross over’ and vote for minority-preferred candidates presents several dangers in regards to African-American and minority voters being accurately represented. Finally, this shows that, although the superficial numbers have shown great increases in African-American participation and election, the voting behavior and attitudes still remain the same in regards to race, especially in areas previously covered by Section 5.

            Mississippi has the highest percentage of African-Americans versus overall population in the United States, coming in at 36% (McDuff). Huge disparities in income and opportunity continue to exist between whites and blacks and, although local levels have reached integration parity, blacks continue to be significantly under-represented at the state level. With a contentious and violent history of behavior towards civil and voting rights, Mississippi was the poster child for the necessity of federal oversight into state election laws. As has been shown here, in the decades after the passage of the Voting Rights Act there continued to be a significant level of activity to disenfranchise African American and minority voters, most of which was blocked through Section 5 intervention (Department of Justice, McDuff). Unfortunately, with the Supreme Court invalidation of the Section 4(b) formula, Section 5 is powerless to intervene in state-election business. Following a similar, though certainly less volatile, timeline as Reconstruction, Mississippi has pushed through a number of new measures. These include new Voter ID laws to go with already strict measures such as the removal of absentee voting, murky Election Day registration laws, et cetera. While Mississippi does not have a law for this, there were still a number of voters registered on Election Day (Jackson Free Press), as well as a purge registration of the voter registration based on immigration status information provided by a Homeland Security database that has questionable accuracy was not designed for use in elections (Brandeisky & Tigas).

While it remains to be seen whether this has a significant impact on the number of African-American and minority voters participating in the next election, the behavior is concerning to say the very least. Without the issue of redrawing a new coverage formula based remotely on Congress’ legislative agenda, significant election law changes continue to happen across the country with Mississippi again leading the way in engineering legislation to make the process of registering to vote and actually voting more difficult.

A discussion about the nature of the formula for determining Section 5 coverage is worthwhile, however it is important to understand that the real target for the Court, as indicated by opinions released by Justice Roberts and Thomas, is Section 5 itself. Understanding that voting behavior is still significantly polarized in regards to race – and even growing when looking at the 2004 and 2008 Presidential elections – gives us the necessary evidence to understand that, unlike Justice Roberts and Justice Thomas, we cannot take the large strides in voter participation levels at face value. As the research presented here has shown in regards to voter polarization, the pressures of supporting a white candidate in previously covered Section 5 areas based just on the premise of race still exists. It is this mere existence that poses the great threat to the fairness of election laws and districts, which are no longer required to be pre-cleared by the Department of Justice since the disabling of Section 5. Thus, as seems to be a familiar narrative, the South has changed superficially but not its attitudes or behavior towards the enfranchisement of African-Americans and minorities. Truthfully, with the restraints of federal oversight and limitations lifted once more, the outlook for voter engagement looks bleak across the South and especially in Mississippi for the years to come.

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