Handy shell alias for taking notes

I keep my personal nodes in a bunch of Markdown files inside a Dropbox folder. I’ve used just about every note-taking app there is and ended up settling on this system. It’s served me really well so far.

I have one note at the top level called scratch.md that I use for quickly writing things down when I’m in a hurry. I decided to speed this up even more with this little shell alias:

Read more →

Creating Sublime Documentation with Markdown and Pandoc

Documentation is one of those things that’s easy to down-prioritize to the very bottom of your todo list, even though it could be one of the most important tasks that you undertake in your day to day job.

The amount of times I’ve gone back to old code, or some old system and cursed Past Will for not creating any sort of documentation is beyond measure.

Read more →

Reverting a git commit after pushing to remote

Imagine a scenario where you have a git repo with 2 branches; master, the production-ready branch and dev, the branch where all the development occurs.

Now imagine that you accidentally made a commit on master, when really it should have been on dev. If you have not yet pushed to a remote repository (like Github), you can undo that commit using git reset like so:

Read more →

Creating a public API with Apache Thrift

I recently came across a new client-server technology that really fascinated me. Through my meddlings with CirrusNote, I know that 49% of the effort of writing a good API is coming up with standards (XML formats, rules, schemas etc.), 49% is writing boilerplate code (XML parsing, schema validation etc. etc.) and the other 2% is spent actually writing interesting code like database interaction and cool client-side stuff.

What is Apache Thrift?

Thrift is a software framework for scalable cross-language services development. It combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml. - From the Apache Thrift website.

That sounds great. Reading the documentation (if you can find it) and browsing through the tutorials made me even more excited about Thrift. Some of the testimonials were also pretty inspiring (Evernote, Last.fm, Facebook (who actually invented Thrift) to name a few).

Read more →

Asynchronous Programming in .NET - The quick and easy way

When working on a program that has a GUI, it’s very important to make sure that the UI is fast and responsive. If your program is performing a lot of long-running actions (writing to a database, making network calls etc.) you should always make sure that the code that is performing those actions is not being executed by the same thread that the GUI is on.

Read more →

An ASCII needle in an Extended ASCII haystack

I was tasked with writing some code to pull all the research project data that we’d collected over the past 10-15 years into our new J2EE-based product, Kuali Coeus. The legacy system ran off SQL Server which is a lot more forgiving of character encodings and string data in general than the new system (which runs off MySQL).

It had taken me a while to figure out a way to map all the old data onto the new data structures, but I felt like I had done a pretty awesome job. The few batches I had tested it with all passed its tests with no problems. However when I unleashed it on a full dataset (some 6000 rows), about 60% (roughly 2 hours) of the way through, it crashed, and rolled the ENTIRE thing back.

Read more →