Web Development with Open Data - Blogpost #1

From D-List to A-List 

Brad Pitt in an early acting role

Brad Pitt in an early acting role

In his article on WaitButWhy.com, Tim Urban presents a collection of videos with our biggest celebrities smallest roles. It's a rather encouraging study on the perception of overnight successes. I myself find that there are very few endeavors I'm willing to undertake unless I can start at the top. I guess it takes a rare combination of grit, a growth mindset, and good fortune to achieve success on the level of Hollywood's brightest stars. 

It'd be interesting to see a data visualization of the ratio of success to failure in the acting profession. I imagine that most of the income earned by actors and actresses goes to far less than the top 1% of people in the profession. In other words, I predict that the salaries for the cast of Ocean's 11 accounted for 99%+ of all the money doled out to actors the year it was produced.

It would also be interesting to see how many supporting roles and commercial jobs the average actor has to take before landing a paycheck above a certain amount.

"Bedder Frames" - Digital Fabrication final project proposal

For my final project, I'd like to approach an idea that a friend and I have shared for the past few years, but have not had the design resources to tackle: a more useful bedframe for the itinerant student and post-grad.

The vision is to make it compact and portable, so as not to be a hassle while transferring from dorm to dorm and apartment to apartment. 

The current options are not too attractive:

The original inspiration was a Hoberman Sphere: 

Hoberman Sphere

Hoberman Sphere

I'd like to use the collapsable design to mimic a frame like the one below:

My preliminary model in Vectorworks shows the points at which each section will cross:

"Waking Up Naturally:" Using A Laser Cutter


I have a problem. And, it's easy to fix; It just requires a bit of discipline.  The issue is that this discipline is needed precisely when I can't access it, so I decided to help myself out.

Introducing "Wake Up Naturally," a case for your iPhone that puts just a but of friction between me and my phone during the very first moments of my day. My hope is that it prevents me from immediately looking at a screen when I first wake up, and has a positive effect on the rest of my day thenceforth.

It's made entirely of Walnut wood, and uses press-fitting, instead of screws, to fasten the various pieces together. 


I decided to use Walnut wood as the material, to give the piece a natural feeling. I also chose not to use screws or nails for the same reason. I like the contrast between the high tech phone and the low tech enclosure, which makes me think twice about what I'm choosing to do first thing in the morning.


Using the CAD Vectorworks, I created the 2D pieces, and tested their compatability by modeling it in 3D.

Prototype before cutting with Walnut. Press-fitting the components together proved to be the biggest challenge.

Prototype before cutting with Walnut. Press-fitting the components together proved to be the biggest challenge.


I then transferred the components into Illustrator, which fed into a 60-Watt laser printer.


The most difficult part of the process was the press-fitting. After several attempts on cheaper plywood, I finally got it. However, my big takeaway is to plan each component one-by-one, and make sure they work before moving onto the next. Printing the entire contraption at once disallows making adjustment without wasting time and material.

Finished Product (1.0)

Next Steps

For the next version, I'd like to think more about how the case can contrast the phone itself, and how it can accommodate phones of various sizes.


Playing with Vectorworks for Digital Fabrication

For my first Vectorworks drawing, I got a bit ambitious. I made a 3D drawing of a record player, complete with dimensioning. It was a challenging subject for a portrait, and I was not able to get as granular in its details as I would have liked. I'm looking forward to learning the tools for a more robust drawing in the very neat future.

Record Player_Top View copy.jpg

Reading & Writing Electronic Text: "Tweet York Times"

For my final RWET project, I wanted to further explore a previous project of mashing up news stories with tweets. I thought it would be interested to create a piece that encompassed the full scope of emotions around a particular issue, by using lines from a NY Times article (for the more removed end of the emotional spectrum), and Tweets (for the less removed end).


The results looked like this:

A 243-page investigative report could have been boiled down to a single sentence: Tom Brady — one the most accomplished N.F.L. quarterbacks ever — is, more probably than not, a cheater, said the NY Times.

#TomBrady its time 2 be a man! U not only knew about this cheating. U lied about it, and tried to cover it up Come clean! #DeflateGate #NFL, said  @SPORTalkYankees on Thu May 07 14:37:55.

After the release of a critical report detailing the Patriots’ apparent deflation of footballs, Goodell must determine punishment for the team and its star, Tom Brady, said the NY Times.

So #TomBrady wouldn't turn over emails or text messages for investigation. He clearly has a future in politics after #NFL career is over., said  @cpfuchs on Thu May 07 14:35:29.

Tom Brady smiled away the Tuck Rule on the way to his first Super Bowl victory, flashing that dimple-chinned grin that said, "I had it all the time,” said the NY Times.

That #TomBrady. Movie star handsome, married a supermodel, always says the right thing, perennial winner. What's not to hate? #DeflateGate, said @mallardNB on Thu May 07 14:35:11.

An NFL investigation has found that New England Patriots employees likely deflated footballs and that quarterback Tom Brady was "at least generally aware" of the rules violations, said the NY Times.

I can't stand playing football with my son in the backyard when he pretends to be #TomBrady  (exhale) #DeflateGate, said  @Bookgirl6 on Thu May 07 14:34:50.

The @nfl has suspended people for a lot less than what #TomBrady and #BeliCheat have done this time. #Forfeit the trophy., said  @MrsSmeej on Thu May 07 14:37:31.

Ted Wells’s report, released on Wednesday, found that “it is more probable than not” that Patriots personnel deflated the footballs in the A.F.C. championship game to gain an edge, said the NY Times.

The output was pretty interesting to me, and represented this strange division between the way we feel and the manner in which we've been conditioned to write. It was fun to perform it, and I think that reading it aloud really gives it the personality it deservers. The challenge there was mimicking the journalistic tone (think "From New York City, this is Michael Weber, ABC News), and the more emotional tone of the sportfans' angry tweets.


To create the program I used the NY Times and Twitter API, as well as the Twython library to parse the incoming data from Twitter. I then took the first few lines of each paragraph in the Times pertaining to "Tom Brady" for the previous 24-hours, and tweets with the hashtag #Tom Brady.

I inserted the Times lines and the Tweets into separate lists, then pulled randomly from each of those lists and alternated the output.

And the code, here:

import urllib2
import json
import random

#API setup
response = urllib2.urlopen('http://api.nytimes.com/svc/search/v2/articlesearch.json?q=Tom+Brady&begin_date=20150506&api-key=471e09ee05c919516a6f1f7973c5ad03%3A16%3A58416624').read()

data = json.loads(response)

response_structure = data["response"]
docs_list = response_structure["docs"]

nyTimesLeads = [] #create list of lead paragraphs
nyTimesAbstracts = [] #create list of lead paragraphs

#grab lead_paragraph        
for item in docs_list:
    if "lead_paragraph" in item:
        print nyTimesLeads


#API setup
import twython

#Get from https://apps.twitter.com/app/8037305/keys:
twitter = twython.Twython("oDtjPPOsBuTpR4SReeQ6fTswZ", "BZqpzpF1gPO6OXZ9tzlZQl5rHLN5muPvGRH5fzTXwxSVcM7x3x", "25921506-vxdQM2M66ad3ZRen1OBdWmGLrLXw91xoHqn9v14TS", "FA4HK1NxILLRHa50NYsU8Cqcgi59LygV7QFKtbDqBPvka")

twitterQuotesUser = [] #create list of Twitter quotes from search results
twitterQuotesTweet = []    
#Search Results        
    search_results = twitter.search(q='tombrady', count=100)
except TwythonError as e:
    print e

#Grab username and time in twitterQuotesUser, and tweet into twitterQuotesTweet
for tweet in search_results['statuses']:
        twitterQuotesUser.append(' @%s on Date: %s' %(tweet['user']['screen_name'].encode('utf-8'), tweet['created_at']))

print twitterQuotesTweet
#**print them together
twitterQuotesUserRandomOne = random.choice(twitterQuotesUser)
twitterQuotesTweetRandomOne = random.choice(twitterQuotesTweet)
twitterQuotesUserRandomTwo = random.choice(twitterQuotesUser)
twitterQuotesTweetRandomTwo = random.choice(twitterQuotesTweet)

twitterFullQuoteOne = twitterQuotesTweetRandomOne + ", said " + twitterQuotesUserRandomOne + ", about allegations against Tom Brady." 
twitterFullQuoteTwo = twitterQuotesTweetRandomTwo + ", said " + twitterQuotesUserRandomTwo + ", about allegations against Tom Brady."


#Lead paragraph
nyTimesLeadSampleOne = random.choice(nyTimesLeads)
nyTimesLeadSampleTwo = random.choice(nyTimesLeads)    


outputComboLead = nyTimesLeadSampleOne + twitterFullQuoteOne + nyTimesLeadSampleTwo + twitterFullQuoteTwo

print outputComboLead 

NYC Pulse Map (Quantified Self About Town)

For our final project, Bartosz, Tong, and I presented our Pulse Map of NYC. We created a device that measures hear rate (pulse), noise, brightness, humidity, and temperature, in order to get a better sense of which factors effect our heart rate, and ultimately decision making, in our urban environment.

1. See our slides, here: https://docs.google.com/presentation/d/1BOEVa6EfwxJZbnku-otHOBGPO0EJM32WKaTwF-bBEvE/edit?usp=sharing

2. Take a look at how we set up our device: 

   3. And, our write-up, which includes an overview, literature review, user personas: https://docs.google.com/a/nyu.edu/document/d/1Dl80X0E1Ximlx4-IaoUjZS6HUWu4Itdi04GWwO8J7hQ/edit?usp=sharing  4. And a great  data visualization  using CartoDB.                  


3. And, our write-up, which includes an overview, literature review, user personas: https://docs.google.com/a/nyu.edu/document/d/1Dl80X0E1Ximlx4-IaoUjZS6HUWu4Itdi04GWwO8J7hQ/edit?usp=sharing

4. And a great data visualization using CartoDB.







Embed Block
Add an embed URL or code. Learn more

Downtown Func

This week at ITP, "Reading & Writing Electronic Text" is bringing the func back to "functions." Where did it go? I don't know, just keep reading please.

For this assignment, I took my midterm project, "#LoveSucks," and transformed an arduous into a simple, repeatable, scalable one, through use of functions in Python.

Here's the code before:


And after:

The function "trimLines" takes the words in a given list, does the following:

def trimLines(loveSucksLine, separator, n=5):
    for item in loveSucksList:
        return separator.join(loveSucksLine[0:n])

  1. Joins them together by removing the comma that currently separates them.
  2. Trims that line down to 5-words (as the rules of the poetry structure dictate).
  3. Prints out eleven iterations, for a total of ten lines (as the rules of the poetry structure dictate).

As you can see, I left variables that make it easy to manipulate the rules of the poem. The number of words to be printed is stores int he variable "n," which can be easily replaced. The separator can also be manipulated, as well s the list from which the function pulls.


Reading & Writing Electronic Text - The Viral Poek

Poetic Form

For our midterm assignment, we created new poetic forms and generated poems based on these new rules using Python. Embarrassingly, I'm not well-read with poetry, possibly because I don't connect naturally with the device. However, there are several poems I've come across in the past few years that I have enjoyed - and they've all been while riding the subway.

In that vein, I wanted to create a poem for the age of the meme- where content must be short, digestable, and current. Hence, the "InstaPoem."


  1. Cannot be longer than 11 lines
  2. Each line can contain no more that 6 words
  3. The content must be taken dynamically from user-generated content.

My hope was to create interesting, timely, and digestable poems. Where they lack in depth, they make up for in the raw honesty and currentness that accompanies social media posts.

Poem #1 - "#LoveSucks"

You sayit’s not my
#followforfollow #grunge #music #indie #alternative
i look like #jesus duude
#followforfollow #grunge #music #indie #alternative
This game is one I
i want to live here
#followforfollow #grunge #music #indie #alternative
love is war and im
I’m bored
#love #lovequotes #lovesucks #quotesaboutlove #quotesabouthim
Changing my theme again Haha

For my first poem, I searched for the hashtag "LoveSucks" on Instagram, and used captions that accompanied the photographs as my source text.

Poem #2 -"#brotherhood"

#fratelli #brothers #brotherhood
Gara’b2 laptop rusak dokumentasi pd
Really miss it......
#court35 #gym #izmir #muaythai #mma
#criplife #thecripworld #thatGshit #brotherhood #formyfam
Heading out the door is
Order yours today at www.blacksmokeapparel.com
#love #lovequotes #brotherhood #quotesaboutlove #quotesabouthim
Stay safe and stay below

Poem #3 - "#ISIS"

#god #jesus #eminem #islam
allah #Shady #detroit #irak #russia #arabia
I haters my country depuis blackhollywood Is


  1. Search through Instagram API for all captions with particular hashtag.
  2. Transfer the output into a .txt file
  3. Transform each caption returned, into a list
  4. Join the comma-separated item into a single unit
  5. Print each unit

import urllib2
import json

url =' https://api.instagram.com/v1/tags/isis/media/recent?access_token=1270.1fb234f.04a11cf1f87a44f6af8f4680a2e36123'

json_obj = urllib2.urlopen(url)

data = json.load(json_obj)
for caption_text in data['data']:
    print caption_text['caption']['text']

captionList = [line.strip() for line in open("/Users/MichaelWeber/Documents/RWET/midterm/#lovesucks.txt").readlines()]    

#each caption returned, split into words, split into lists
loveSucks1 = 
['You',' say', "it's",' not',' my',' fault',' yet',' I',' know',' it',' is',' and', "I'm",' crushed',' and',' your',' fine.', "I'm",' on',' the',' ground',' crying',' and',' my',' heart',' caving',' in',' and',' you',' seem',' untouched',' by',' all',' this.',' Yeah', "it's",' true.',' One',' always',' love',' more',' than',' the',' other.',' Love',' has',' me',' love',' sick',' baby']
loveSucks2 = 
['#followforfollow',' #grunge',' #music',' #indie',' #alternative',' #followme',' #grungegirls',' #bands',' #palegrunge',' #scene',' #sleepy',' #likeforlike',' #loser',' #lifesucks',' #bands',' #lovesucks',' #hopless',' #dark',' #oceans',' #grungetheme',' #grungegirl',' #pale',' #softgrunge',' #broken ' ]
loveSucks3 = 
['i',' look',' like',' #jesus',' duude',' i',' hate',' people',' who',' only',' use',' you',' and',' when',' you',' need',' them',' they',' "cant"',' I',' HATE',' YOU']
loveSucks4 = 
['#followforfollow',' #grunge',' #music',' #indie',' #alternative',' #followme',' #grungegirls',' #bands',' #palegrunge',' #scene',' #sleepy',' #likeforlike',' #loser',' #lifesucks',' #bands',' #lovesucks',' #hopless',' #dark',' #oceans',' #grungetheme',' #grungegirl',' #pale',' #softgrunge',' #broken ' ]
loveSucks5 = 
['This',' game',' is',' one',' I',' always',' lose...',' #lovesucks',' #love',' #why',' #lose',' #loser',' #broken',' #hearted',' #"happy"',' #lovelife',' #whocares',' #idfwu',' #IDFWU ' ]
loveSucks6 = 
['pm://',' iwant',' to',' live',' here',' and',' im',' watching',' the',' real',' house',' wives',' of',' beverly',' hills.',' they',' are',' stupid. ' ]
loveSucks7 = 
['#followforfollow',' #grunge',' #music',' #indie',' #alternative',' #followme',' #grungegirls',' #bands',' #palegrunge',' #scene',' #sleepy',' #likeforlike',' #loser',' #lifesucks',' #bands',' #lovesucks',' #hopless',' #dark',' #oceans',' #grungetheme',' #grungegirl',' #pale',' #softgrunge',' #broken ' ]
loveSucks8 = 
['love',' is',' war',' and',' im',' your',' soldier',' #soldier',' #war',' #love',' #quotes',' #feelings',' #ihatefeelings',' #lovesucks',' #single',' #onlysomuchicando',' #icant',' #notanymore',' #heartache',' #colornote',' #latenights',' #thoughts',' #itsstupid ' ]
loveSucks9 = 
["I'm",' bored ' ]
loveSucks10 = 
['#love',' #lovequotes',' #lovesucks',' #quotesaboutlove',' #quotesabouthim',' #cute',' #crushquotes',' #cutequotes',' #couples',' #cutecouples',' #boys',' #boysuck',' #tbhboysuck',' #tumblr',' #tumblrquotes',' #relationships',' #relationshipquotes',' #relationshipgoals ' ]
loveSucks11 = 
['Changing',' my',' theme',' again.',' Haha~ ' ]
loveSucks12 = 
['"Must',' dash ']
loveSucks13 = 
loveSucks14 = 
['Silk',' dahlias',' against',' aqua',' glitter',' chiffon',' inspired',' me',' to',' take',' the',' photo',' .',' .',' .',' what',' inspires',' your',' creativity?']
loveSucks15 = 
["What's",' your',' passion? ' ]
loveSucks16 = 
['#relatable.',' Who',' does',' this? ' ]
loveSucks17 = 
['This',' photo',' is',' not',' my',' favorite.',' Who',' forgets',' to',' turn',' of',' their',' light?',]
loveSucks18 = 
['Bae',' before',' anyone',' else ' ]
loveSucks19 =
['"Im',' in',' love','with',' my','bae' ]
loveSucks20 = 
['"Im',' in',' love',' with',' my',' before',' anything',' else" ' ]
loveSucks21 = 
['Ya',' feel? ' ]
loveSucks22 = 
["I'm",' a',' clinger.',' Tag',' someone', "who's",' clingy']
loveSucks23 = 
['This',' is',' probably',' one',' of',' my',' favorites', "I've",' made.', "What's",' your',' favorite',' quote? ' ]
loveSucks24 = 
loveSucks25 = 
['#beautiful',' #love',' #lovesucks',' #lovequotes',' #boyfriend',' #girlfriend',' #relationships',' #relationshipquotes',' #relationship',' #crushquotes',' #crush',' #fallinginlove',' #iloveyou',' #inlove',' #bf',' #gf',' #lfl',' #perfectsayings']
loveSucks26 = 
['Tryin',' out',' new',' apps.',' Tag',' your',' love!' ]
loveSucks27 = 
['#beautiful',' #love',' #lovesucks',' #lovequotes',' #boyfriend',' #girlfriend',' #relationships',' #relationshipquotes',' #relationship',' #crushquotes',' #crush',' #fallinginlove',' #iloveyou',' #inlove',' #bf',' #gf',' #lfl',' #perfectsayings']
loveSucks28 = 
['If',' you',' could',' pick',' any',' username',' what',' would',' it',' be?']

#join the list into words
separator = ","
loveSucks1Line = separator.join(loveSucks1[0:5])
loveSucks2Line = separator.join(loveSucks2[0:5])
loveSucks3Line = separator.join(loveSucks3[0:5])
loveSucks4Line = separator.join(loveSucks4[0:5])
loveSucks5Line = separator.join(loveSucks5[0:5])
loveSucks5Line = separator.join(loveSucks5[0:5])
loveSucks6Line = separator.join(loveSucks6[0:5])
loveSucks7Line = separator.join(loveSucks7[0:5])
loveSucks8Line = separator.join(loveSucks8[0:5])
loveSucks9Line = separator.join(loveSucks9[0:5])
loveSucks10Line = separator.join(loveSucks10[0:5])
loveSucks11Line = separator.join(loveSucks11[0:5])

#print lines
print loveSucks1Line
print loveSucks2Line 
print loveSucks3Line 
print loveSucks4Line 
print loveSucks5Line 
print loveSucks6Line 
print loveSucks7Line 
print loveSucks8Line 
print loveSucks9Line 
print loveSucks10Line 
print loveSucks11Line 

Reading & Writing Electronic Text - Appropriating Data From the Web

"Duke Postgame Report"

Durham, N.C - And that pretty much was the end of it. Northern Iowa is going to the NCAA tournament #fuckduke #fuckkansas #fuckkentucky #fuckprettymucheveryteaminthetournamentexceptnortherniowalel

After the game, UNC's Marcus Paige said that "[w]e rushed a couple shots, a couple passes got a little errant and they capitalized on every single one of those." Lol, Maryland graffiti done right #fuckduke #vandalismatitsfinest

Certainly not one with a point guard like Tyus Jones. Dexter Jackson knows how to roll!!!! Sportin UNC ....where i trained #dexterjackson#asf2015 #unc#goblue#fuckduke

When you stop and think about it, when has he had a bad game? We can't think of a single one. I was waaaaay too gone #lastnight #Hyatt #CHARLOTTE #lastnightshitwasmadreal #fuckduke #belvedere #wasted

Jones led Duke with 24. He also had six rebounds, seven assists and three steals. Quinn Cook added 20. Jahlil Okafor finished with 14 while Justise Winslow kicked in 13. Game is over and duke had won but there's only one thing I learned, Duke has to cheat to win their games I mean come on the guy kicked him! And there was no foul! Anyway duke played dirty through the whole game! #fuckduke #dukesuck  oh and guess what too bad y'all got beat by nc state

Kennedy Meeks, so effective in Durham, wasn't much of a factor here: although he had nine rebounds, he shot just 1-7.

Marcus Paige, throttled so thoroughly in Durham, played much better, hitting for 23.


"Duke Postgame" combines data appropriated from Instagram API, along with an article written for a Duke blog. The program below scrapes Instagram for media items tagged with  the hashtag #fuckduke, and takes the captions written by the users who posted the photo. 

With this piece, I wanted to combine two unabashedly biased sources, each biased towards a different team. I also thought it would be interesting to contrast the fancy and emotion used in Instagram captions with the blogpost, highlighting the almost absurd lengths the author of the blogpost takes to sound polite, when in fact he's just as biased as the Instagrammers. For me, it points to the freedom of language and expression that social media gives users.

Next, I separated the lines in the output into a list, and did the same with the article. Using the code below, I printed alternated lines of each:

Source Text:

Captions from Instagram API:

And that pretty much was the end of it.\Northern Iowa is going to the NCAA tournament #fuckduke #fuckkansas #fuckkentucky #fuckprettymucheveryteaminthetournamentexceptnortherniowalel\ After the game, UNC's Marcus Paige said that "[w]e rushed a couple shots, a couple passes got a little errant and they capitalized on every single one of those."\Lol, Maryland graffiti done right #fuckduke #vandalismatitsfinest\ Certainly not one with a point guard like Tyus Jones.\Dexter Jackson knows how to roll!!!! Sportin UNC ....where i trained #dexterjackson#asf2015 #unc#goblue#fuckduke\ When you stop and think about it, when has he had a bad game? We can't think of a single one.\I was waaaaay too gone #lastnight #Hyatt #CHARLOTTE #lastnightshitwasmadreal #fuckduke #belvedere #wasted\ Jones led Duke with 24. He also had six rebounds, seven assists and three steals. Quinn Cook added 20. Jahlil Okafor finished with 14 while Justise Winslow kicked in 13.\Game is over and duke had won but there's only one thing I learned, Duke has to cheat to win their games I mean come on the guy kicked him! And there was no foul! Anyway duke played dirty through the whole game! #fuckduke #dukesuck  oh and guess what too bad y'all got beat by nc state. Kennedy Meeks, so effective in Durham, wasn't much of a factor here: although he had nine rebounds, he shot just 1-7.\\f1 \uc0\u55357 \u56838Marcus Paige, throttled so thoroughly in Durham, played much better, hitting for 23.\\f0 \


We thought that this game would be pretty different from the game in Durham, and in many respects it was, but it had one thing very much in common with Round One: UNC's errors in winning time.


After the under-8:00 timeout, when Duke was up 62-59, look what happened:

  • 6:59 Marcus Paige Turnover
  • 6:49 Justin Jackson Turnover
  • 6:26 JP Tokoto Turnover
  • 5:22  JP Tokoto Turnover
  • 2:09 Marcus Paige Turnover
  • 0:35 Joel Berry Turnover

Compare that to Duke in the same stretch:

  • 6:35 Matt Jones Turnover
  • 1:35 Amile Jefferson Turnover

The under-8:00 came at 7:11 with Duke up 62-59, as we mentioned.

Duke scored eight points in 1:11, from 6:43 to 5:32.

And that pretty much was the end of it.

Carolina tried the standard fouling thing, but that only works if the other team misses, and Duke really wasn't missing: in the last 2:33, Duke was 10-1 from the line.

After the game, UNC's Marcus Paige said that "[w]e rushed a couple shots, a couple passes got a little errant and they capitalized on every single one of those."

Coach Roy Williams echoed his star: "We played pretty doggone well except for a 4- or 5-minute stretch there. I've got to do a better job of getting them to focus. You can't have those stretches there against a really good basketball team."

Certainly not one with a point guard like Tyus Jones.

Again and again - as a freshman! - Jones has come up huge in big games.

When you stop and think about it, when has he had a bad game? We can't think of a single one.

Jones had 17 in the second half and helped Duke shoot 59% after the break.

Jones led Duke with 24. He also had six rebounds, seven assists and three steals. Quinn Cook added 20. Jahlil Okafor finished with 14 while Justise Winslow kicked in 13.

Amile Jefferson had five offensive rebounds, or nearly half of UNC's total, and overall Duke did a nice job on the boards. UNC didn't dominate their as happened in Durham: overall the teams were even at 32 overall, but Duke had a slight advantage in offensive rebounds at 14-11.

Kennedy Meeks, so effective in Durham, wasn't much of a factor here: although he had nine rebounds, he shot just 1-7.

Brice Johnson again proved a tough matchup, shooting 8-12 and scoring 17.

Marcus Paige, throttled so thoroughly in Durham, played much better, hitting for 23.

Still, Duke has now won three of the last four and five of the last six.

Before the game there was a nice moment when UNC honored Coach K with an acknowledgement of his passing 1,000 wins and an appreciation of how Dean Smith was honored in Cameron.

That's fine for this season which was different in many respects.  We expect that on UNC's side, at least, the intensity will ratchet up considerably for a while.


Quantified Self About Town- Midterm Project

For the midterm project, Bartosz Jerzy Bonczak, Tong Jian, and I have decided to create a tool for NYC dwellers to better manage their anxiety, which we hope will lead to more pleasant interactions and an increase in the overall emotional health of the city. Using sensors and a geo-locator, users can see their anxiety levels displayed on a map, lending transparency to what time/location may be triggering their anxiety, as well as patterns they can better prepare for. The device will take pulse/heart rate, as well as noise, into account.

Affective computing is an interested field that I'm only just learning about. Here's some background: http://www.nlpr.ia.ac.cn/2005papers/gjhy/gh91.pdf. 

My work with sensors in physical computing will help with building the actual device, but this will be my first foray into the field. The QGIS demo we had was a big inspiration for the project, and will lend a hand in building the map users can access to see where there triggers may be. Our guest lecture about waste management in the city was also inspiring, and led our team to discuss how transparency could aid in creating a more efficient urban landscape.

On March 24, we aim to present the device, as well as a data we've collected.

Technical considerations include which sensor is the best to measure anxiety. Some options, below:

Possible challenges will be the wearability of the device, and how to accurately measure anxiety. It will be tough to discern whether a rise in heart rate is due to anxiety or, for example, exercise.

Quantified Self About Town - Citi Bikes' Jennifer Sta. Ines

Last week, Jennifer Sta. Ines came to speak to our class about her work with Citi Bikes and the collection and analysis of big data. Her presentation was something I would have been looking forward to had the identity of our secret guest lecturer been shared earlier, so needless to say I was excited when she began to speak.

No, she did not explain how her middle name acquired its period. She did, however, break down how she and her team collect data from the wildly successful young program, and how they assess the most effective locations in which  to add additional Citi bike stations in the future.

I found it interesting that they not only use data to find the location throughout the five boroughs to add new stations, but also conduct focus groups with local neighborhood populations to get their feedback. Small factors like essential parking spaces are not necessarily something they could glean from data, but can be crucial to the success of the program after implementation.

After her presentation, she walked us through a tutorial of QGIS, an open-source geographic information application that lets users effectively (and beautifully) display and parse geographic data.

(source: http://www2.qgis.org/en/site/about/screenshots.html)

The flexibility that QGIS gives users to display maps by datapoint left me feeling like I could use my midterm project for something more ambitious than the idea that is currently at the top of my list. I'd like to collect datapoints that I could creatively display using QGIS, now the only question is what data can I collect? I'd like all the points to tell a compelling visual story, which I could use to assess some part of my behavior. What do you think of this idea?

Using a sensor and a GPS shield, create an "anxiety map" of my day. It would graphically display where my anxiety levels are highest, and lowest, and give me a sense of how I can prepare for consistent spikes. Perhaps it could be developed as a smart-watch app in the future.

I'll add more idea as they come. Please comment below if you have any feedback!

Reading & Writing Electronic Text - Using Python to manipulate the Oscars

After this weekend's Oscars, I couldn't help but let my mind drift towards that stoic golden man, while I thought of a project for my RWET class. Using Python, I decided to explore Oscar acceptance speeches, and see what kind of comment I could make on them by manipulating the transcript of what my favorite winner had to say.

Source Text:

From Matt Damon and Ben Affleck's speech, after winning Best Original Screenplay for Good Will Hunting:

I just said to Matt, losing would suck and winning would be really scary. It's really, really scary. 
We're just really two young guys who were fortunate enough to be involved with a lot of great people whom it's incumbent upon us -- there's no way we're doing this in less than twenty seconds -- upon whom it's incumbent of us to thank. 
Harvey Weinstein, who believed in us and made this movie. 
Gus Van Sant, for brilliant direction. 
Robin Williams, who delivered such great lines.
Minnie Driver, whose performance was brilliant. 
Stellan Skarsgard, who was great. 
(Your brother.) My brother Casey, who's brilliant in the movie. 
(Cole Hauser.) Cole Hauser. 
My mother (Jon Gordon) and Matt's mother, (my mom) the most beautiful women here. 
(My dad right over there. Jack said hi to you. Alright!) 
Shhh... (Jon Gordon from Miramax.) Jon Gordon. 
Chris Moore (Chris Moore!), who produced the movie (Chris Moore!). 
Patrick Whitesell, the best agent in Hollywood! (Yeah! Patrick Whitesell!) And Cuba Gooding, for showing us how to give [an] alright acceptance speech! (All our friends and family! And everybody back in Boston watching us tonight!) 
And thank you so much to the city of Boston... And I know we're forgetting somebody. 
(Whoever we forgot we love you! We love you!) 
Thank you! 
Thank you so much!

Using the source code below, the program placed each line of the speech into a list, then randomized the lines. 

import sys
import random

oscarSpeech = open('oscarspeech.txt' , 'r')
speechContent = list()
for line in oscarSpeech:
    line = line.strip()


Next, the program randomized the words:

for line in speechContent:
    words = line.split(" ")
    speechRandomizedWords = " ".join(words)
    print speechRandomizedWords    


The result, looks like this:

(Cole Cole Hauser. Hauser.)

My mom) most and beautiful mother, mother (my Gordon) women the (Jon Matt's here.

We love forgot we you! we (Whoever love you!)

incumbent were be whom seconds us upon this twenty young really We're just lot to thank. doing us people who great than enough of with we're guys two it's -- -- to it's whom in fortunate involved no upon a of there's less incumbent way

great such who lines. delivered Williams, Robin

tonight!) our Hollywood! us everybody alright Patrick and And how (All speech! Whitesell!) in acceptance back friends Patrick Cuba showing Whitesell, And family! the Boston to in best [an] (Yeah! watching give Gooding, for agent us

Jon Shhh... Miramax.) Gordon. Gordon (Jon from

so Thank you much!

(My there. Alright!) said Jack hi over to you. dad right

movie (Chris Chris (Chris the Moore Moore!), produced who Moore!).

you! Thank

who great. Stellan was Skarsgard,

And forgetting I so know much Boston... the thank somebody. to we're city of you And

brilliant. performance whose was Minnie Driver,

who made believed this us movie. and in Weinstein, Harvey

(Your the Casey, brother.) who's movie. brother brilliant in My

scary. winning I and It's said really really would be losing scary. suck to would just Matt, really,

for Gus Sant, Van brilliant direction.

Quantified Self About Town - Project Ideas

"QS About Town" is a class focused on gathering data from public spaces, which can inform our use of the urban environment in order to effect change.

While thinking through possible project ideas to work on, I came up with a short list of categories I'm interested in exploring:

1) How can an individual collect data from their environment, in order to better represent a story. For instance, what are some experiences I look back on and wish I had some sort of data for in order to remember it better?

2) The public-private space. For instance, a shared space within an apartment. What sort of data would alleviate potential points of tension between roommates?

At this point, I'd like to focus on #2, with a bit of a silly project that I actually think could be quite effective if executed properly. The idea is called "Zeh Dish Vasher." It's a waterproof mat that can be placed inside a sink, that measures the weight placed on top of it. It then sends text messages to anybody who wishes to receive them, notifying them of the total weight currently in the sink. The goal is to gamify this process through roommates, making dishwashing into a contest, and relieving the tension it can often times cause.

My classmates (and potential collaborator!) Bartosz Jerzy Bonczak found the sensor below that we considering using to measure weight:


What do you think?

"As The Absence Fills The Whole." (Creating poetry using Python)

"As The Absence Fills The Whole."

Adapted from Joey Rosenfeld’s work (http://bit.ly/17hBx1y)

The absent                                        surface.

What                                            statements.

This                                                full.


As                                            created.

In                                                page.

Far                                                writer.

The absent                                            page.


In                                            erasure.

The absent                                            cut.


To                                            absence.


To                                                read.

Removal,                                        possibility.

As                                                away.

What                                                whole.

The absent                                        inscription.


This                                        untranslatable.

The absent                                        revealed.



Joey Rosenfeld’s short essay explores creativity through erasing. Like a poem engraved into a piece of stone, elimination of form can sometimes be an effective tool to reveal what was always there beneath its surface.

With this piece, I took the first and last words of each of his sentences, to draw the reader’s attention to the space between them. By erasing the content, leaving only the loosest structure of each sentence, I hoped to capture what isn’t there in order to reveal what is.

Next, I added the word “absent” after every instance of the word “The,” because it’s a favorite word of the author, and I wanted to instill a sense of the author within the manipulated text.


Source Text (can also be found at http://bit.ly/17hBx1y)

The scene of writing, the pen emptying its ink onto the blank surface.

What was once empty and void is now endowed with substance, markings on the page create meaningful statements.

This creative act moves from nothing towards something, from empty to full.


As the written word attaches itself to the page, a symbiotic relationship is created.

In order for writing to take place, the page must carry the ink, as the ink must rest on the page.

Far from morphing into a unitary whole, the ink and paper remain separate entities, joined together by the desire of the writer.

The movements of the writer, the thought expressed through the point of the pen, maintain and sustain the creative act of text on page.


In contrast to the creative act of writing, the destructive act of engraving forms its message through erasure.

The wholeness of the stone, the tablet, is destroyed through the piercing cut.

To erase the wholeness that was, is to form the space of absence.

To carve a place, the opening of possibility through which emptiness can be read.

Removal, withdrawal of a prior plenitude opens the void of infinite possibility.


As the engraving is carved into the surface, the demarcations of content and space fall away.

What was whole is now absent, as the absence fills the whole.

The inscription becomes the tablet, just as the tablet becomes the inscription.


This miraculous relation between empty and full, between carving and carved, is the vehicle capable of translating the untranslatable.

The prior classifications of creation and destruction, writing and erasing collapse as the impossible unification of opposites is revealed.


Source Code

# First program for Joey's essay

import sys

for line in sys.stdin:

   line = line.strip()

   print line.rsplit(' ')[0]

   print line.rsplit(' ')[-1]


#Second program for Joey's essay

import sys

for line in sys.stdin:

   line = line.strip()

   if "The" in line:

       print line +' absent'


       print line