Cookies and Code

Noms
Anonymous
Hi! So HackRU is coming up, what set of skills would someone need to make a webapp? Or advice for someone who's never really finished making or demo'd something in a hackathon due to lack of skills? Thanks :D

I’m going to try to keep this as short and sweet as possible, mostly because I plan to retire this blog and move to Jekyll at some point.

  1. The number one skills one needs to make a web app is determination. We can talk about programming languages all day, but if you’re not motivated to finish something at a hackathon, you’re not going to.
  2. If you know a teensy bit of HTML, CSS, and JavaScript, you should be fine. Choose whatever server-side language you like best, but it really doesn’t matter, and don’t let anyone ever tell you otherwise. Ruby, Python, PHP, JavaScript, and everything else is equal for the most part, especially during a hackathon. Choose the language that you know best.
  3. As for someone who’s never finished/demoed a hack, here’s my advice: promise your best friend that you’re going to demo something. If you’re like me and are unable to break promises, then you’re good to go. No matter how far you are from finishing, you have to demo something. This is especially true for your first hackathon. I’m guilty of going to a hackathon and not demoing, but I’ve demoed at the vast majority of hackathons I’ve been to. The first one is the hardest, but it gets easier every time, and I’ve even been told that I’m really good at presenting now. Just build your confidence and realize that almost everyone who goes up there is nervous, and most of them will forget about you anyway.

I hope that helps. I’m not sure who left this question for me, but I’ll be at HackRU, so feel free to reach out to me for more advice or help with your hack. I’m always looking to help people.

October 6th, 2013 0 notes
Anonymous
Hey, I have just seen your review on cs 215 udacity, algorithms. I need to learn algorithms and I am an absolute beginner.. should i go with cs 215 or can you suggest any better place to learn. Thank You

I think it depends on how much experience you have with basic algorithms and data structures. I personally liked Coursera’s algorithms courses much more (offered by Stanford and Princeton), but if you aren’t confident enough to take those, perhaps you could try out Udacity’s CS215. Again, I was not the biggest fan of it, and it mostly covers graph theory, so it’s not the best introduction to algorithms if you ask me. An algorithms course should be well-rounded and get you thinking about many different types of algorithms, not just those related to graphs.

May 19th, 2013 0 notes

East Coast, BEAST Coast

  • Me: Hah! You guys are buying cars? New York subway ALL DAY!
  • Friend: Uh, I think you mean BART all day.
  • Me: Nah, I'm pretty sure the BART stops running, so not all day.
April 25th, 2013 1 note #New York City #San Francisco #Subway #BART #West Coast #East Coast
Anonymous
Does writing a 5 volume manuscript on the art of computer programming replace the need for a github profile?

Five volumes? Certainly. Four, however, and I’m not so sure.

March 25th, 2013 0 notes

Free Online Open Courses Link post

Anyone who takes online courses like I do should totally check out this resource. It lets you easily search for courses on websites like Udacity, Coursera, edX, OpenCourseWare, Kaplan, and many more.

January 25th, 2013 10 notes #OEDB #Udacity #Coursera #edX #OpenCourseWare #Kaplan #Online education #Learning

My Postgraduate Career

I will be working at Etsy as a software engineer after I graduate this May!

This is awesome.

January 20th, 2013 2 notes #Etsy #career #graduation

Review: Coursera Algorithms, Part 1 (Princeton)

Alright, one more review, and then I’m done for the night.

Princeton University, the second best university in New Jersey*, is blessed with the legendary Robert Sedgewick. I took the first half of Professor Sedgewick’s algorithms course, and I’m signed up for the second half, which is supposed to start in March.

I absolutely loved this course. It was pretty fast-paced, and much more interesting than the Data Structures course (CS112) at Rutgers, while far more practical than the theoretical algorithms course (CS344) at Rutgers.

I’m not much of a theory guy, but I love algorithms. This course is perfect for people like me. Instead of getting into mathematical proofs and pretending like code is easy to write, Sedgewick simply gets right down to the running time of proven algorithms, the code that implements them, and some practical use cases for them. This is really fun, because it gives students a reason to believe that the theory they learn in school actually matters. Far too many people believe that what they learn in their computer science classes is useless in the real world, but this course really teaches you otherwise.

One of the things I really enjoyed about this course is that instead of making you program data structures and algorithms, you are expected to use these algorithms for practical purposes. For example, the first assignment was to use the union-find data structure to simulate percolation, which is a real-world computational problem. That’s far more interesting and fun to me than creating a union-find data structure that passes some unit tests.

I also really enjoyed being exposed to real-world computing problems that I never knew existed. It made me feel really proud to be a developer, because it showed me that there are a lot of hard problems out there that have been solved by software engineers and computer scientists that had previously been unsolved.

Overall, the course was very challenging, especially when compared to other online courses I’ve taken, and I learned a ton. I would honestly recommend this course for every programmer who didn’t go to Princeton, because it will seriously make you a better developer.

* Just some playful competition; don’t get your panties in a bunch :)

January 1st, 2013 2 notes #Coursera #Princeton #Algorithms #Review #Robert Sedgewick

Review: Udacity CS258

Two reviews in one night! Let’s do it.

I took Udacity’s CS258 Software Testing alongside CS215 Algorithms. I’m going to say right off the bat that I thought this course was awesome.

I do a lot of web development. In the web development world, there’s lots of talk about testing, namely test-driven development (TDD) and behavior-driven development (BDD). I went into this course thinking I’d learn about that stuff, but I was completely wrong, and I’m glad that I was.

The main reason that I’m glad I was wrong is that it opened up a new world for me. I live in this bubble where it’s alright to have bugs in your programs. You write tests, and if they fail, then you fix the code so that the tests pass. If you’re not writing tests, that’s alright; a user will report any bugs they find, and then you can try to reproduce them and fix them as needed. However, a lot of developers don’t live in this bubble, and this class made me realize that.

How do you use TDD and BDD when writing compilers or software that flies airplanes? Hah, imagine sending a pilot out to “test-drive” your software. The first time you write your unit tests, you should write your functions so that they fail the test, right? Good-bye, airplane! The answer is that you simply can’t use these types of testing in lots of areas of software development.

This course focused on other topics, such as white-box testing, black-box testing, random/fuzzy testing (so cool), code coverage, and a bunch of other awesome stuff that far too few developers seem to care about. Most of the material is presented extremely clearly, and Professor Regehr’s code is not bad at all.

This course will teach you a lot about testing that you don’t know. It will also make you think a lot about this stuff, which was my favorite part about it. Professor Regehr talked about his professional experience and research quite often, and I thought it was fascinating. At one point, he talked about how he worked with a team of people to write software that generated random [valid] C programs in order to test compilers. How awesome is that!

Overall, I thought the course was awesome. I did have an issue with one of the earlier assignments (I personally believed one of the questions was a bit unrealistic), and the final exam could have been a bit more challenging, but really, CS258 went above and beyond my expectations. I highly recommend this course for every developer.

January 1st, 2013 0 notes #John Regehr #Udacity #CS258 #Review #Computer Science #Software Testing

Review: Udacity CS215

First review in a while, w00t!

I’m back, everyone, and I’m ready to review Udacity’s CS215 Algorithms course.

I took this course when it premiered back in June/July 2012. I was extremely excited to take this course for two reasons:

  1. I love algorithms courses.
  2. The professor, Michael Littman, is a former professor at Rutgers!

CS215 teaches algorithms in the context of social networks. What exactly does this mean? It means that the algorithms taught in the course can be applied to analyzing social networks. I’m sure that this was an attempt to get people more interested in the course, since social networks are a hot topic that many people are familiar with. However, the consequence of this approach is that most algorithms in the course are related to graphs. That may or may not be good thing depending on your tastes.

Personally, I thought the focus of social networks took away from the course. Most algorithms courses focus on more general topics and common approaches to algorithms, such as divide-and-conquer, greedy, dynamic programming, etc. This course, however, just focused on graph algorithms. P vs NP was covered, although I must admit that I didn’t understand it at all until my real-life algorithms course at Rutgers. That may or may not have been my fault, but that brings me to my next point.

I believe the course material could have been better presented. There were times when I just didn’t understand what was being taught, and I’d have to constantly re-watch/reread material. Additionally, Professor Littman shares a common problem with Peter Norvig: writing unreadable code. It look me far too long to understand some of Littman’s code. It was filled with single-letter variable names, variable names that didn’t make much sense (e.g. using the name “dist” to describe a dictionary of distances between all nodes in a graph, which threw me off for a long time), and too few comments. There were a few times that I changed almost all the variable names in his functions in order to better understand what they were doing. On top of that, there were even times when students would point out flaws in the code. One that I remember in particular was Dijkstra’s shortest path algorithm. There was a long discussion at one point where another student posted their version of the algorithm that was 100% correct, about 1/3 the length, and easier to understand. It really bothers me that there are extremely intelligent professors out there who simply have difficulty writing decent code.

Overall, I believe that the course was decent. I would have preferred the material to be better presented, and for the course to have covered more than just graph theory, but I can’t really complain too much. I did learn new things, and that’s really all I could ask for in a free course!

January 1st, 2013 0 notes #Review #Computer Science #Algorithms #Udacity #CS215 #Michael Littman

Slacking

I’ve been ridiculously busy these past few weeks, which is why I haven’t really posted anything. However, now that I’m on my winter break, I’m going to make sure to catch up on everything that I haven’t—but should’ve—been writing about. Stay tuned!

December 23rd, 2012 1 note