First steps with an FPGA!

21 09 2009

For my research group at Purdue, we’ve decided we want to do some work with FPGA (or Field Programmable Gate Arrays). These are essentially chips that you can use to program very complex, very fast circuits. They are superior to other sorts of chips, such as DIP integrated circuits, because they are smaller, relatively cheap for all the power they have (~$10-$20), fully customizable, and FAST.

This is Xilinix Spartan FPGA, the kind I'm using.

This is Xilinix Spartan FPGA, the kind I'm using.

This was my first foray into FPGAs and it drove me crazy getting my tools all set up properly. I thought I’d post some thoughts.

Read the rest of this entry »





Ciphers, Beaufort, and Bears… Oh my!

3 09 2009

In my cryptography class, we’re starting to learn about various ciphers, and for a homework assignment, we were tasked with doing some ciphering by hand.

These rhinos are hot on the trail of some cryptography!

These rhinos are hot on the trail of some cryptography!

I find the task very interesting, but I quickly got tired of coding even a 10-letter “sentence”. Then I thought to myself, wait, I can program! This specifically seems like something that could quickly be done with a Python script. So I decided to spend a little time typing, and 5 minutes later, no more ciphering by hand! Below are the results for your own amusement!

Read the rest of this entry »





Time to Organize the Book Collection!

15 08 2009

I consider my book collection to be pretty large. I make genuine efforts to read through all my books, but by the time I finish one book, I’ve bought two more.

While I like curling up with just one book and reading straight through it, I’ll often find myself working on reading three, four, or more books at the same time (not the exact same time, but switching between them). That’s about the time when I notice my lack of bookmarks (or maybe just my inability to use them reliably). I’ve lost my place, so I put the book down saying I’ll come back later. Well, Crime and Punishment is still sitting on my dresser two-thirds done, and I’m not about to re-read 500 pages just to refresh myself with the story.imgres

Fed up with losing my place and abandoning books, I’ve decided to use this as a time to learn some web programming and make a dynamic website that will keep track of what books I own and how far along in each one I am. Not only this, but it will have bar graphs! Yay!

Read the rest of this entry »





I’m So Sick of Testing and Sorting Through Logs by Hand

11 08 2009
Not those kind logs silly!

Not that kind of logs, silly!

Software testing is a very important part of releasing any product. After all, no one wants a big buggy product. (Especially when it can ruin your whole mission.) On the other hand though, testing software is boring. I’d much rather be writing software than testing it. (Besides, my code never has bugs! *sarcasm*)

When I’m working on a project for school or work, I usually spend a lot more time testing and tracking down bugs rather than coding (80% of effort on 20% of work kind, of thing). I usually try to give my code pretty good test coverage, but its tedious to run through a large set of tests, especially just remembering them all.

To help with this, I wrote a Python tool to run my tests and then display the results visually using HTML, rather than a log file or something similar.

Read the rest of this entry »





Make Tutorial: Part 2

9 08 2009

Colleges will be back in session in a month or two. When I first started school, I was forced to use Unix for all CS classes, but given very little instruction in it. Very “sink-or-swim”. I actually still have a page of notes where I wrote down basic commands, such as ‘ls’ and ‘pwd’, from a lecture given on the first day. After that first day, you were on your own. make

This same philosophy applied to our projects. Projects typically consisted of 5 or more files and it quickly became tedious to compile and link all those files by hand. We were given no hints to use Make to assist us. After discovering this tool, it greatly increased my productivity. Because of the gains I saw, I thought I’d write a few tutorials on using Make. Hopefully, it will help a beginning user to get accustomed with the tool and point them in the right direction to learn more.

This is Part 2 of my make tutorial.

Read the rest of this entry »





Who would have thought Sublime Text was so, well, sublime!

7 08 2009

A few days ago, I wrote about my Quest for the Perfect Editor. Well, the quest is over, with Sublime Text being a clear winner.

I’ve used it as my main editor these past few days to give it a fair chance to impress me and it hasn’t let me down yet. Sublime bills itself as, “The text editor you’ll fall in love with,” and I can easily see that happening.

She obviously just tried Sublime Text for the first time.

She obviously just tried Sublime Text for the first time.

Sublime has features that you’ll love no matter what you’re writing, whether it be code, prose, or poetry.

I thought I’d write a little bit about why I like it so much, as well as encourage you to at least try it for yourself. If you’re in the market for a new editor, this will be where your search ends.

Read the rest of this entry »





Is Erlang actually fast? Why not just stick with C?

1 08 2009

What’s the point of learning Erlang when I already know {your language here}? It will take a long time to learn the language and even longer to become good with it… I don’t want to learn a whole new library… Functional programming is hard… My text editor is super awesome at {your language here} and I don’t want to use new tools…

Would you like some cheese with that whine?stop-whining

I’m going to show you a few ways Erlang excels, with a special focus on concurrent applications. I’ll even include some benchmarks to prove it. So sit down, be quiet, and give Erlang a chance!

Read the rest of this entry »





Massive parallelism? I’ll have a plate. Functional programming? Give me a grande.

28 07 2009

Imagine that you just bought a brand new Super McAwesome 500-core computer. Dommage-pour-toi, all your applications can only use one core at a time. Doh. Well, what if there was a language that increased its performance linearly with the number of cores/threads? Luckily for you, there is! And it’s name is Erlang. Read the rest of this entry »





Make Tutorial: Part 1

26 07 2009

Colleges will be back in session in a month or two. When I first started school, I was forced to use Unix for all CS classes, but given very little instruction in it. Very “sink-or-swim”. I actually still have a page of notes where I wrote down basic commands, such as ‘ls’ and ‘pwd’, from a lecture given on the first day. After that first day, you were on your own. make

This same philosophy applied to our projects. Projects typically consisted of 5 or more files and it quickly became tedious to compile and link all those files by hand. We were given no hints to use Make to assist us. After discovering this tool, it greatly increased my productivity. Because of the gains I saw, I thought I’d write a few tutorials on using Make. Hopefully, it will help a beginning user to get accustomed with the tool and point them in the right direction to learn more.

Read the rest of this entry »





Then I found $5… And got Smart Bear Code Reviewer!

18 07 2009
Free Peer Code Review Book

This week, Smart Bear software ran a special sale of their Code Reviewer tool: 5 licenses for $5. Since licenses are usually $289 a person, I figured this was a pretty good deal.

Code Reviewer is a lighter version of the companies main product, Code Collaborator. Code Reviewer is a web application you put on your project server and then it will interact with your version control, bug tracking, etc automatically. I was pretty excited by the idea of this. As usual though, the idea of something is different from its actuality.

I’d previously gotten the free book on peer code review that the company publishes. The book is all about how much time and money peer code review can save you, since bugs are caught before they get to QA or to the customer, at which point they are expensive to fix. After reading the book, I really wanted to try using peer review, both with a team as well as just by myself.

It’s important for a peer code tool to interface with your version control to make things go smoother. For version control, I like to use Mercurial. It’s a good tool that does what I want, and hey look, Code Reviewer supports it! If you read the rest of  Code Reviewer’s documentation though, it just provides diff support for Mercurial. I can do diffs myself, thank you. But that’s OK, I’m fine with doing manual version control; I prefer it actually.

Installation was very straight forward: Start the shell script on Linux or go click ‘Next’ a few times in the Windows installer. (Sadly, there’s no Mac version of the Server, just a client.) After about 5-10 minutes of going through installation and configuration, I successfully had a Code Reviewer instance running. Kudos for the ease of installation!

When first using Code Reviewer, I was very impressed with all that it could do. It had menus and options for everything you could imagine related to peer review! However, as I started to play around with the product, I realized that, to be effective, it really HAS to have a bunch of people using it. I quickly got tired of flipping through menus on a project where I was the only developer. Being a student, nearly every project I do is by myself, so such a feature rich interface isn’t best for me.

I’m happy I got the software, because I do want to do some code work with a few friends at school or other class projects and I’m sure in this situation,  code reviews will be very beneficial. In that scenario, the Code Reviewer provides tons of features that will help a team be more productive.

In the near future though, I don’t see myself using this software too much; the software just isn’t lightweight enough to be used by a single developer. Though I guess it is meant to be used for PEER code review, not self code review, so I can’t be upset about this. In fact, I look forward to coming across a situation where I can use this tool.








Follow

Get every new post delivered to your Inbox.