Viewing posts by mhughes
I've got two new projects coming up in the near future that I'm going to use to learn a couple new things. The first is (maybe?) a space combat/strategy iPad game that I'm hoping to learn Unity 3D / C#.
The other is a new web based training game/website that I'm going to give Angular & Dart a try.
Both Dart & C# are a lot more structured languages than the python & coffeescript I've been doing lately and I'm really looking forward to that. I'm a sucker for statically typed languages, and C# looks like it fits that bill well. Dart's optional type system will probably satisfy me too.
Here are a few of the tools I find indispensable on a day to day basis.
Two features here make it my #1 choice. The first is the ability to have multiple text insertion points. It's hard to explain, but just go watch the little video on their website. It saves a lot of tedius typing.
The second is the best file-find&open mechanism I've seen. When your developing a django site, you end up with a lot of similarly named files (views.py, urls.py, etc.) Sublime is the only editor I've found that lets me easily find the right one. A simple cmd-P to open the text box. Then a few letters of the app, a few letters of the filename, and it's usually got it. Example:
cmd-p pro vie ENTER
That would open up apps/projects/views.py in the current project I'm working on.
The best SQL tool I've found.
Bonus points: It can connect to a remote server over SSH and tunnel the mysql connection over that, so you don't have to expose your DB to the internet for any reason.
How can you code without some music? Spotify has replaced the iTunes & Pandora that I used to use.
The ability to quickly take, annotate, and share screenshots makes my life a lot easier.
1Password lets me have a unique, strong password for every site that I sign up for.
The developer tools in Chrome are the best I've seen. Superior to FireBug, and very similar to Safari's tools. (If you're debugging in IE, you're doing it wrong.)
It felt weird not to include these since I spend so much time in them.
A little over a year ago, I quit my 9-5 regular job to get into the contracting & producing my own software business. As of a week ago, I stopped doing contracting for the next 6-9 months so I could focus exclusively on the software that I've created. It's a bit scary since I don't have those regular billable hours to go on anymore.
Over the past week, I've worked exclusively on ScrumDo and have made more changes during that week than at any other time in it's history. Here's a pretty picture showing commits over time:
I really feel good with how this next release is coming out. There are a ton of new features, and a lot of little things people have been asking for ages.
I've been using a lot of Coffeescript + Backbone for this work, and it's a workflow that's really starting to suit me. I'm going to try and start blogging about my experiences there regularly.
It's a little surreal, that after so many years of first developing that, people are still finding it as useful as ever. Perhaps I should try my hand at an HTML/JS version sometime.
This morning, I worked on a new way of deploying media on scrumdo.com. When I originally set it up years back, we uploaded all of our media to Amazon S3, pointed a Cloudfront (their CDN) distribution at it, and was done with it.
There are some hack-ish ways of making S3/Cloudfront gzip content, but they seemed more trouble than their worth.
A while back, Amazon introduced custom origin's for cloudfront. What that means, is you could point cloudfront at your own web server instead of an S3 bucket. Any headers & content your server sent out would be cached in cloudfront for you. So today, I decided to start taking advantage of that.
First, I set up my Django app to collect it's static files into apache's web directory.
STATIC_ROOT = "/var/www/html/static"
Then, I set up Apache to actually serve those files.
The AddOutputFilterByType directives tell apache to compress those MIME types.
The AliasMatch line makes any request to /static/v/ be served directly by apache instead of the Django app. I added a wildcard in there so I can set long expiration dates and version the media via url. This means any of these url's point to the same file:
The Django app is smart enough to change it's STATIC_URL param based on some deployment options to take advantage of this. Overall, this reduces the amount of If-Changed-Since requests with 304 responses. It has the down-side of effectively invalidating ALL cached files when we put up a new release. (I know there are more elegant solutions here, but this is good enough for us for now)
Next, I set up a new cloudfront distribution to point to my ELB (Amazon Elastic Load Balancer)
If you click that link, here's what happened:
In our next major release, we're combining and minifying a bunch of CSS and JS files into a single file (for each type) using grunt.js, which should help speed up the page loads even more.