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.

Thursday, December 30, 2010

2010 in Hindsight - Teaching vs. Doing


This blog entry is an end-of-year postmortem about my web development efforts in 2010. 

My two web site projects from this past year had different learning approaches behind them. “Blender Python Tutorials” was done using a learn-and-then-teach approach. “Uncle Squirrely” was a learn-by-doing project. While neither approach was bad, I got more out of building something than I did by writing “teaching” scripts.

Lessons from Uncle Squirrely
“Uncle Squirrely” was an online video game store. I built it with a mix of Python, PHP, MySQL, CSS, JQuery, and web services. Work involved migrating platforms, copying databases, setting up light boxes, running database update scripts, and setting up streaming video.

I learned a lot and gained experience working on that project. Despite that, it failed. It made no money and got few visitors.

Lessons from Blender Python Tutorials
“Blender Python Tutorials” shares free tutorials for building 3D animation tools. I learned enough to write teachable examples in Python. After that, I wrote drafts and pieced together bits of HTML, code snippets, and images. Then I would publish and I would be off to figuring out stuff for the next tutorial.

Technically, I learned very little. But I did gain an audience. At over a thousand visitors per month, Blender Python Tutorials nearly tripled in visitors compared to last year. As for financial success, it made 23 dollars.

Lesson About Teaching and Success
I've worked under the assumption that I could teach my way into building things and being successful. This is backwards thinking. My Blender work should have focused on building stuff and spending more time building relationships within the Blender community.  I didn't do enough of that. Yes, I used Google Analytics to tune in on user wants and needs.  However, traffic statistics are no substitute to getting out there and connecting with other Blenderheads.

Interestingly enough, I learned this lesson by looking outside the Blender community by considering the examples of Salman Khan and Zed Shaw. As personalities go, they couldn't be more different. However, they both put out free learning materials online. They also both did this AFTER they had established themselves in their respective careers. Khan was already making a good living in the financial sector when he started Khan Academy. Shaw had a reputation as blogger and software developer long before he wrote “Learn Python the Hard Way”. The hard reality of it is that an unknown and unemployed person simply isn't going to have the same impact.

Conclusion
Sharing knowledge generally does not lead to success. However, success can put one in a better position to share knowledge. But in order to have the best shot at success, I need to make something people want.This is my commitment for 2011.

Tuesday, December 21, 2010

Gui Tutorial, Market Analysis, and Experimentation

 
Okay, here's what's been happening over the past week or so.

Tutorial Updates
The week went well. Blender Python Tutorials got a new tutorial on panels and operators and how they can be used to "destory" a city.  A new property sampler script is complete which means I can start a tutorial on that.  Open GL research has also progresses nicely but, chances are, there won't be any new site material on that this week.

“Blender 2.49 Scripting" arrived in the mail recently.  This book is handy for a couple of reasons.  First, it's Blender 2.49 scripts inspire Blender 2.5 tutorials.  Second, it's a good resource for translating 2.49 scripts to run on 2.5.

Market Analysis
Market research for my work comes down to two resources, Google Analytics and the Blender Artists forums.  Spending time with these helps to know and connect with users.  Knowing user needs helps in serving them.  That's a good thing.  Making money matters too of course.  However, putting profit ahead of user needs is putting the cart before the horse.

Google Analytic bounce rates and search engine statistics show where the site falls short and what kind of tutorials to prioritize.  Right now, the stats say Blender 2.5 tutorials and Open GL need attention.  So that's where the work goes.  Besides that, stats are fun in a weird way.  There's something game-like about watching numbers go up and down as a result of what I do or not do.

Direct community involvement is a big deal and the Blender Artists forum is good for that.  It has a scripting forum containing useful stuff from smart people.  Lurking, asking questions, and answering questions creates value for all parties involved.

Experiment Plans
Content management systems deserves serious consideration.  Experiments with Joomla show great promise.  Joomla comes with tools that make it easier to potentially update and add new tutorials.  Once, the learning curve is climbed, it'll probably make design changes easier too.  That learning curve is the big factor here and climbing it must be balanced with other site priorities.

Uncle Squirrely is now a low priority experimental project due to it's lack of traffic.  This isn't a bad thing since it's still a handy target for technology research.  At the very least, it deserves a better light box.

All in all, it's been a good week and the next coming one should prove just as interesting.