Thoughts on Programming

Randomized Image Matching

I’ve been working on another project that I haven’t yet written about: Randomized Image Matching. At a high-level, this project uses a greedy algorithm with simulated annealing to reproduce an image using overlapping semi-transparent polygons.

Read on →

How to make your blog faster

A few months ago, stared noticing how consistently slow my blog was. More than 3 seconds per page load is just terrible. That’s slow enough that some people would think the site just isn’t working and would navigate elsewhere. Being an engineer, I decided to see what I could do to improve the load times without paying a ton for fancy hosting. This a list of things that I used to improve this blog’s performance.

Read on →

Quick tip: CreateFile() network writing performance

If you’ve found a file opened with CreateFile() for writing only to be slow over a network, try instead opening for reading and writing. I ran up against this today and found it about 100 times faste.

From MSDN:

When an application creates a file across a network, it is better to use GENERIC_READ | GENERIC_WRITE for dwDesiredAccess than to use GENERIC_WRITE alone. The resulting code is faster, because the redirector can use the cache manager and send fewer SMBs with more data. This combination also avoids an issue where writing to a file across a network can occasionally return ERROR_ACCESS_DENIED.

StudyPlannr updates

I’ve updated StudyPlannr with even more cool AJAX-style interactivity. Now everything on the edit schedule page can be edited without requiring a page refresh.

Read on →

StudyPlannr updated

I’ve updated StudyPlannr with some new slickness. Now, most schedule editing operations don’t require page reloads since they use cool AJAX stuff. Behind the scenes, I’ve updated to use new the python 2.7 GAE runtime and the high-replication datastore.

Google Dart

One of the big announcements this week is Google Dart, Google’s new language that’s aimed at replacing or at least supplementing JavaScript. I haven’t tried it out yet (I’m waiting until it is at least implemented in Chrome), but I’m so far pretty optimistic about it.

Read on →

Input Validation

Validation of user input is a pretty essential component of almost any application. Ideally, it is a quick and unobtrusive way to give the user feedback and help guide them through the application.

Read on →

Model-View-ViewModel overview

If you’ve spent much time working with WPF or Silverlight, you’ve probably run into the MVVM (Model-View-ViewModel) pattern before. It’s probably the most popular pattern for designing WPF/Silverlight applications. In this series of posts, I’m going to go over what I’ve found to be the best way to structure WPF applications. The first post is going to be a broad overview of my take on MVVM and what I’ve found works best. Further posts will dive deeper into each section and start to explain why I’ve made the decisions I have. Any feedback, questions, or comments are of course welcome.

Read on →

CrazyPaint 1.1 now available with iPad support

Version 1.1 of CrazyPaint is now available in the App Store.

  • Added iPad support.
  • Added the ability to save the drawings to the photo album to email, print, or just keep them around.
  • Improved performance.
  • Added a simple About screen.
  • Added support for older versions of iOS (iOS 3.0 or later).

Get it here.

CrazyPaint now available in the App Store

CrazyPaint is now available in the App Store! It’s a very simple painting application that’s a bit inspired by Kid Pix. I’m using it to teach myself iOS development.

Version 1.0 took a while to get approved (submitted it last Sunday) so I’m already on my way to version 1.1 which includes a iPad support. I think the iPad will be much easier to draw on, but I unfortunately don’t have one to test it out so I have to rely on the simulator.