Monday, May 30, 2011

Animation, Legacy Code, and Javascript Challenges


Intro
Getting turned down for a job stinks because rejection stinks. Then again, fertilizer also stinks but it helps things grow. In that sense, rejection is a character builder. Besides, if better web developers than me weren't getting hired to work at some of these companies, there would be no CSS or Javascript examples to "view source" on. Patience may be a virtue but it sure is nice having projects to make that virtue attainable. So let's talk projects.

Animangler
The Mesh Mangler script roughs up 3D meshes by moving the vertices in random directions to one extreme or another. Animangler is basically the same script but with an animaion focus. By creating shape keys and mangling those, it makes it easy to animate weird floating blobs that morph in interesting ways. It's a pretty simple script thanks to the hard work that Blender developers do to make these APIs available for people like me to play with.

Legacy Blend
Getting boring chores out of the way is liberating once done. That's the best way to describe the process of updating tutorial files and making blend files for the old Blender 2.49 tutorials. Occasionally, people do still make inquiries in the Blender Artist forums about that API which makes it worth keeping those old tutorials around awhile longer.

A Cleaner Uncle Squirrely Front End
The Uncle Squirrely project would be better if it's front end code was free of server side PHP logic. It's a very doable task given the right mix of Ajax, JQuery, and JSON. However, it's also a challenging project that pushes my own limits. This limit pushing is a good thing for me as a developer.

The Coming Week
The coming week's challenges will be a continuation of Javascript research, getting hands on with practical Internet marketing and more Python work. Since I'm still in the running for a Django position at a startup, it works out to be one of those good investments that I'd have ended up doing anyways. Will talk later. Cheers all!

Wednesday, May 25, 2011

C#, MySQL, and Inteview Fun


This was a crazy week. Two job interviews and tech projects kept me going quite a bit. Here's the story.

Reacquainting with .NET.
Since one of the jobs was for C# and ASP.NET, a refresh was in order. The first C# program took half an hour and covered features taught in an Intro to programming course. The ease of refresh was thanks to the fact that Python and Java has many of the same features C# has.

ASP.NET required setting up an XSP development server and writing some quick “code behind”. It was like writing VB form code but with C#. That much was easy. Figuring out how to deploy was harder. Getting C# talking to MySQL was hardest of all.  Finishing that one can wait.

End of the MySQL Stored Procedure Experiment
Speaking of MySQL, the stored procedure experiment came to a successful conclusion. I buried both SQL code and logic that was in PHP in the database. While burying a single query in a stored procedure offers no performance gains, there are other benefits for the Uncle Squirrelly project. The PHP code is cleaner and the overall application is more secure. Despite these gains, However, I still have no intentions of merging that git branch. If it ever went back in production, MySQL permissions for stored procedures could become an issue.

Better CSS Menus
Studying the source of other web sites brought to my attention a better way of handling menus in Blender Python Tutorials. Combining unordered lists and CSS makes for a nicer menu setup with consistent control of margins and padding. Another site had a CSS text rollover effect that also got implemented.


So that was my week. It was job interviews and tech work and I had fun. I look forward to more interesting things in the coming week.

Saturday, April 30, 2011

Site Design, Video Tutorials, and Mesh Mangling


I got a lot done this week.

On Site Redesign
First off, I redesigned the site. I replaced the table layout with div tags and CSS positioning. I also put in graphics, rounded borders, and a few other changes to the overall site look. It looks a lot better.

On My First Video Tutorial Screencast
I posted a Hello World video tutorial to youtube and the web site. It wasn't easy. Being on Ubuntu meant figuring out XvidCap, Sound Recorder, Audacity, and Avidemux to get the job done. The final result isn't perfect because of the stick mic I used. Thankfully, Youtube made getting it online and on the site the easiest part.

On Mesh Mangling and Creativity
I made a simple mesh mangler tool. It moves around parts of a 3D object randomly and has a slider to control how badly you want it to be messed up. It's a good way to make things look beat up and broken. It can be used for crinkling paper or rumpling up cloth for example.

My motivation for the mesh mangler is I wanted to move beyond tutorials and just make stuff. So I figured I'd do a small project just for fun. Example scripts is where I want to take Blender Python Tutorials down the road. Tutorials are generally a good way to start off but I think experimentation, curiosity, and learning from others is a better way to learn in the long run.

Saturday, April 16, 2011

Making Decorators and Taking Advice

Decorators for Web Service Data Collection
There are a lot of funny things that can happen when pulling web service data for the Uncle Squirrely project.  Connections failures, page mismatches, or general web service errors can hit without warning.  These can cause my database update scripts to crash and burn. 


Because of the apparent randomness of the errors, the best response is to make reattempts.  This requires a "re-attempt" loop.  The problem is that wrapping these loops around existing logic and exception handling can be messy.

This is one area where Python decorators shine.  With a decorator, I can wrap the entire web service method into a separate object that takes care of the reattempt business for me.  That way, I can give random connection failure a second or third chance to recover without having to clutter up the code.  The RecoverWSExceptions class I wrote was extremely useful in keeping this all clean for me.

Blender Python Tutorials Advice

I asked the Blender Artists community what I could do to make Blender Python Tutorials better.  Their advice was to add blend files and screencasts.  Adding blend files was easy.  It was just a matter of creating the files, adding code, and modifying things to ensure they would work with the new Blender 2.57 release.  Piece of cake.

Screencasting, on the other hand, is hard.  The Ubuntu tools I found were pretty quirky.  The good news is I was able to work through a lot of the technical hurdles for using tools like Audacity and XVidCap.  I guess it's one of those things that are inevitable when you start getting more serious about 3D.  At some point, you're going to have to wear that a/v engineer hat.

And then there's the part I play the performing artist and step up to the microphone.  Doing a good verbal performance is hard.  I've cranked out 3 attempts at the "Hello World" tutorial and I'm not satisfied with any of them so far.  It made me respect performers great and small who put themselves out there doing that for a living.

 So that's about it for now.  It definitely was an interesting week and hope to get new stuff out this week.  Cheers.

Monday, January 31, 2011

Open Quarters - An Interesting Flow Trick


Here is a time management technique I've been using lately. Grab a timer and set it for 25 minutes. Write down something to do for that period of time. Activate the timer and focus on the task and nothing else. When the timer goes off, stop if you want to.

This is a lot like the Pomodoro Technique. However, the difference between Open Quarters and Pomodoros are that you have the option of continuing your line of thought instead of taking a break. This leads to less procrastination, less self-consciousness, and loss of a sense of time. In other words, it promotes flow.

Let's look at procrastination. If you don't obligate yourself to working for more than 25 minutes, then starting is easier. It's hard to start on something that takes hours to do. Committing to a shorter period is easier and less intimidating.

It also helps beat back self-consciousness. With permission to quit after 25 minutes, there's less reason to judge yourself. You only go beyond that interval because you want to, not because you have to. And if it doesn't become interesting, that's fine too. Don't force yourself.

Last to consider is time sense. The problem with the Pomodoro Technique is time is never far from your brain because a timer going off every 25 to 30 minutes reminding you of it. In an open quarter, the timer goes off once and then stays out of your way if you choose to go on. However, if you do choose to continue, you'll be surprised how much time flies as a result of a project becoming fun and interesting.

I hope the Open Quarter technique helps you focus on your own endeavors as it did in helping me write this blog entry. And without further ado, it's time for you to close the blogs, set the timer and agenda, and get back to work.

Tuesday, January 18, 2011

Math, Amazon, and Android


Last week was a good one for math and dabbling. Here's a quick review of what happened.

Khan Academy Magellan Badge Victory
Acquiring the 80th star completed the Magellan badge mission. Calling it satisfying would be an understatement. With that, it is time to stop collecting stars and just maintain the ones I have. Regular visits to the site to refresh here and there is sufficient for that.

Deeper into Amazon AWS Territory
The Amazon AWS cloud has interested me since working with it for the Uncle Squirrely project. A recent conversation with a friend drew me into S3 storage and Elastic Cloud virtual servers. It was time to go a step beyond web apis.

S3 is a handy way to backup and share files. It gives you permission controls that let you render certain files publicly available or not. Drop Box uses S3 to provide regular end-users with a simple interface. It's great for online storage which can be pretty handy.

With the Elastic Cloud Computing platform, Amazon offers up an easy way to roll your own virtual Linux or Windows 2008 server. There were a few small snags during my setup and connect attempts to Linux instances. After a short learning curve, it really was simple to start, stop, and kill servers as well as ssh into them.

The pay-as-you-go setup is perfect for me. An afternoon of playing around with a server and then killing it at the end costs 50 cents. However, for 24 x 7 production servers in the cloud, it gets pricey. In such case, a service like Rackspace would likely make more sense.

Android Adventures
Getting started with mobile development with Google Android proved to be pretty painless. Good documentation and tutorials made it easy to setup Eclipse, the SDK, and an emulator. It's been predicted by a couple of tech pundits that mobile was going to be big in 2011. The downside for me is finidng the tie-in to my main project. The upside is there's probably no better platform to go to if I were to go back into Java game programming.

All said it was a good week for intensive math goal pushing as well as with cloud and mobile dabbling. The next week shifts attention back more towards taking care of Blender Python Tutorials. The site is doing fairly well but it would be way better. So off to that then.

Tuesday, January 11, 2011

Skill Testing, Blender, and Google


Let's just get straight into what's been happening over the past week or so.

Blender Pyramid Script Upgrade
The step pyramid from my github is now upgraded to work with Blender 2.56. The big challenge was adjusting to changes to a new and better way of organizing vertices passed in via Python data. Hopefully, these API improvements will stabilize to make script development easier for me down the road.

Staffing Agency Interview
Last week's job interview with a staffing firm proved interesting. For one, the interviewer is an active Twitter user. For another, it was followed by computer-based testing on J2EE. 

The test results were odd. Despite my Java database background, my JDBC score was 0%.  On the other hand, lack of Struts experience didn't prevent me from scoring 100% in that area.

The big takeaway is my J2EE skills are rusty. Dropping PHP in favor of JSP might impact hosting and CMS options. As for my projects, little would really need to change.

Google App Engine
A tutorial on the Google App Engine introduced me to new tricks for web application development. It's pretty sweet. Java code can be compiled to Javascript. There are hosting options on Google. The near automated log on mechanism is nice. It also turns out that Khan Academy likes to use it.

Khan Academy Badge Chasing
Speaking of which, the Khan Academy star count is 74 at the time of this blog entry. 80 stars gets me the Magellan sun badge. More brush up on trig, calculus, and word problems should take me over the top.

Why do this? First off, in computer graphics programming, math skills matter. But the big bet is that earning that badge will land a job like no vendor certification can. It seems just crazy enough to work.

Plans for the Week
The rest of this week will be a final push for the Magellan badge. Plenty of job hunting to do as well. There will also be some neat experiments in Python and Java too. Never a dull moment.