Monday, May 21, 2012

Rooting

I have an family member and their spouse who are dealing with infertility. Mother's Day and Father's Day are particularly hard for them, not having kids while many of their friends and family members have kids. Lately they've been saving up for and using fertility medications.

Well, I'm rooting for them. I hope very much that they're able to have children, or even just one child if that's all they can manage.

And if it turns out they can't, I don't think any less of either of them. I don't think it's some punishment or cosmic joke, I don't think it's some deficiency or fault of either of them. Their fertility issues just are what they are. They're both good people. They've stuck together through thick and thin, and children or no children they're great for each other.

Sunday, April 29, 2012

7 Seconds

I recently bought a computer game, Terraria, and have played it quite a bit since I got it. I checked the number of hours recorded by Steam, and I have played 62 hours. Granted, a fair chunk of that has been while the game was paused and I was away from the keyboard. But even so, I still played about 50 hours of Terraria.

Today I removed Terraria from my laptop. Took about 7 seconds.

Tuesday, April 24, 2012

New Standard for the US Dollar

Each time I go to the grocery store, or fill up my gas tank, or pay my electric bill, it seems my dollars are spending faster and faster. I'm well aware of the reason - the value of the US Dollar is constantly dropping due to inflation. And I have no way to do anything about it.

Until now, that is! Thanks to the US Postal Service, everyone with as little as $9.00 can invest in a resource that will never drop in value. Invest in USPS First Class Forever stamps! Each book of 20 stamps costs $9.00, and will retain its value until the end of time.

This is just like gold, except that you don't have to have $1,700 laying around to invest in this timeless resource.

Stamps will hold their value forever, since advertisers are NEVER going to stop sending out those mailers that go from your mailbox strait into the trash bin (or recycling, if you're a hippie like me).

Now all of us lower- and middle-class citizen and illegal immigrants can invest in a reliable, long-term commodity, and keep the Federal Reserve from stealing the value out of our dollars! Buy your stamps today!

Monday, April 23, 2012

Don't Pull Staples Out With Your Teeth

So random story time. Some years ago, back when I was an annoying teenager, I was trying to pull a staple out of...something. Probably a stack of papers. For some reason I was using my teeth. My top incisor decided it was fed up with being mashed against a rough piece of metal. There was a slight cracking sensation, and a bit of my tooth found it was free.

I have a slight divot in the cutting edge of that incisor now to remind me that my teeth are not a replacement for one of these little monsters:

Friday, April 20, 2012

Universities as Dysfunctional Businesses

Photo courtesy of  Håkan Dahlström
At its core, a university is a business, just like any other. The students are the customers.

Like any business, universities have a target market, which they try to recruit from, or in other words, try to sell to. Some departments have a bigger advertising budget and better salespeople. Sports is probably the most outstanding example; recruiters for the university's sports teams do a lot more to attract athletes than the visual arts department can do to attract talented artists.

Universities offer a service. Their employees teach their customers. There are of course lots of secondary services, and even some products, but the main value in a university is in the classes.

A hallmark of good businesses is good customer service. Any salesman selling a $10,000 product is going to bend over backwards to make sure the sale goes through. He'll fill out paperwork, follow up with everyone involved in the process, and do his best to make sure the customer absolutely loves their product.

Universities, however, tend to have abysmal customer service. Their customers have to jump through hoops at every turn to get what they want.

I'm not saying an ivy league school should let just any Joe Schmoe with enough money for tuition in. Or that students shouldn't have to take and pass exams. Nothing of the sort.

I'm saying that each student should have someone they can go to who will go to bat for them at every turn. Someone who will help them with the paperwork and follow up with the various offices to make sure the paperwork gets filed in a timely manner. Someone who can explain how financial aid works, and what different options are, and help each student decide which option is best for them. Someone who will call them if there's a problem on their transcript or their financial aid is delayed. And most of all, someone who will stick with the student for the four+ years they're in school.

Each student is worth tens of thousands of dollars. It's about time universities start treating them like the valuable customers that they are.

Tuesday, April 3, 2012

Brownian Tree

I've worked on my program to generate Lichtenberg figures and taken it a different direction. Instead of making a bunch of particles that all are attracted to each other, they are launched one at a time and attach to whatever particles have been attached before.

You start with a "seed" particle, then launch a "walker" particle, which moves randomly. The walker checks for a collision with all the attached particles (the seed being the first), and will attach itself if it gets within 1 pixel of an already-attached particle.

This naturally creates a branching pattern, simply because a walker is statistically more likely to run into one of the protruding particles, and less likely to walk all the way to near the seed.

I recently added a function that colors the particles based on when they attached themselves.

The great thing is that with a few modifications I could get this to resemble a real Lichtenberg figure more closely by counting how many particles attached in a parent-child chain through each given particle. Thus the outer-most particles would create very thin lines, and the particles linking back to the seed would create thicker lines.

I also plan to add a way to select a range of colors, so that more than just the current red-yellow-white range is available.

Monday, April 2, 2012

I say "Years", but it was only a few months.

I worked for a photography studio once. Ever since then when I look at a photo, it bothers me when the color isn't white-balanced or the lighting is poor or someone has a really obvious blemish that would take literally 15 seconds in Photoshop to correct. You can time me; 15 seconds, a minute, tops.

A couple months ago I kind of went crazy after seeing my company's old batch of employee photos. The photos were taken outside, which isn't all bad, but the background was this scraggly bush just outside our building. Not a good backdrop. And some of the poses were, shall we say, unflattering.

So I convinced my bosses to have a photo shoot, first of the owner, then of all the employees without photos. I set up a backdrop. I brought in lamps and sheets from home to set up lighting. And I made sure everyone had a decent pose and a smile. I used my own camera from home, which is a few steps better than a camera typical of non-photographers.

My time at that studio was short, but I learned a lot of skills that I use in my current job.

But when I see a bad photo, it still makes my eye twitch.

Friday, March 9, 2012

Generative Art

Lately my programming has focused on creating generative art. It sparked from a post on ComputerArts.co.uk (link here).

My current project is trying to simulate Lichtenberg Figures, which are basically electrical discharge patterns. My program creates a bunch of particles that all attract one another, and will merge when they get close enough to each other. It works really well at first, but once the number of particles is down near 1000 or so, they don't run into each other enough, and they just trace a mess of lines over the top of what was looking really cool just two seconds earlier.

So, you can see, I'm still working out the kinks.

The code library is on github.

Thursday, March 8, 2012

AS3 - Big Canvas class

ActionScript 3's bitmap object is limited by size. For display, this is almost always sufficient. But any time you need a larger bitmap, such as to make a large, print-quality generative artwork, it falls short.

Keith of Bit-101 has a solution. He wrote his own "Big Ass Canvas" class that can do many of the same things a regular bitmap can without the size limitation. It works by stitching several bitmap objects together.

Edit: This class does not seem to have a method for encoding the giant bitmap as JPEG or PNG image files.

Wednesday, March 7, 2012

Computerless

I recently took my laptop in for repairs under the coverage plan I bought along with the laptop. After two long weeks I got my laptop back. Although the damaged hinge was repaired, there was a new problem: the power button was only working intermittently. That is, sometimes if I pressed it, it would turn the computer on/off, and sometimes I could press it several times without any effect.

Then, to top it all off, the day after I got it back, I dropped the laptop on its power cord jack, breaking the jack inside the computer. So I had my computer back for a few hours, then I had to take it back in for repairs a second time.

Currently my laptop is still in the shop, though I should be getting it back any day now.

Friday, January 13, 2012

Just one thing.

Java != Javascript.

That is all.

Sunday, November 20, 2011

Programming Challenges: Everything in Order

I was trying to add a little icon for one of the objects in my project, and when I added the code I expected to make it show up, my game started crashing upon loading.

After some frustrating debugging, I found out that although I was setting the ID of the object when I constructed it, the ID was leaving the constructor function as -1. It turns out, FlxBasic, which the object is a subclass of, sets the ID to -1 when it is constructed, and I had put super() in AFTER setting the object ID. As soon as I moved super() to the front of the constructor, everything worked again.

Sometimes the most aggravating errors are the smallest, simplest ones.

Sunday, November 6, 2011

Programming Challenges: Garbage Collection

Flash (and many other programming languages) have a wonderful feature that makes program development easier to get into. Flash has a Garbage Collector that runs automatically when the program's memory reaches its limit. Basically, the Garbage Collector (GC) checks all the objects to see if they're connected to anything. Anything with 0 connections gets deleted and the memory it took becomes available for use again. Next, the GC checks every connection from the root of the program and marks everything that's still connected to root. Anything not connected back along some line can't be accessed ever again by the program, and is also deleted, even if it has links to other objects.

In order for the garbage collector to be effective, any objects your program isn't going to need ever again need to be disconnected from everything. Objects with 0 links are much faster for the GC to find and remove than groups of interconnected objects that are inaccessible to the program.

A good way to imagine this is a cork-board with a bunch of pins, and strings linking one pin to another. Each pin is an object. Each string connecting one pin to another is a link. The Garbage Collector comes along when your board is too full of pins to put any new ones in.

As you do things on your cork-board, you want to cut all the strings connected to a pin you're done with, because that's the easiest and fastest way for the GC to know it needs to be pulled out.

Another way to manage memory (and it's more memory-efficient than good garbage collection practices) is to recycle objects when you're done with them. That is, change the values of an object you're done with to match the new object of the same type you want to create.

You could have an array of objects you re-use often, and whenever you would want to make a new one, it first sees if there's anything in your recycle array. If there is, it assigns the new values to the existing object and assigns that object to the needed reference. If there is nothing in the recycle array, then it creates a new object. Whenever you're done with an object, you add it to the recycle array and then cut all other references to it.

If you do this, you'll want a function in each recycled object's class that resets its variables, with the same inputs as the constructor. In fact, it will usually mirror your constructor.

Tuesday, November 1, 2011

Programming Challenges: API Documentation

I'm working on a flash-based game using the Flixel library, and a regular part of my process is running into things that aren't working or I don't fully understand. I am going to try to post a problem I ran into and the solution I found for it as I work on this game. I'm working in a Windows program called FlashDevelop (version 3.3).

Today's challenge: Updating Flixel's API Documentation

Somehow FlashDevelop had the wrong documentation for the version of the Flixel library I am using.

Basically, I had an older version of the Flixel library that I had been using until recently. When I started this project, I downloaded the latest version of Flixel. As I worked on my program, I kept getting suggestions for variables and functions that didn't exist any more, or had been renamed. Every time this happened I had to dig through the library files for half an hour just to find the right variable or function for the job.

Today I tried to use the FlxSprite.createGraphic() function, which had been renamed in the latest version. When my game wouldn't compile, I went through several files in the Flixel library trying to find which class had the renamed function in it. After I found it, when I tried typing in createGraphic(), it didn't show up in the suggestion list. Instead, makeGraphic() - the new, correct name for the function - was now showing up in the suggestion list.

What?

Turns out FlashDevelop caches a library's contents when you first use it, but doesn't update that cache unless you open the file(s) that have changed.

Solution: Open the library files.

Saturday, April 10, 2010

Thoughts on co-teaching

I've noticed that, with public schools at least, the idea is to get one teacher and a group of students. Once we Art Ed students get past these team-taught student lessons we will probably never co-teach again. On the one hand it's probably a good thing, since there's never any disagreements between the teachers about what to teach. Also this keeps down the number of students per class. On the other hand, it's a shame because so many great ideas come from your peers, and two teachers teaching together can feed off and fire up one another. Indeed, having a co-teacher would also allow both teachers to get feedback on how to improve their teaching and what they're doing well.

(As an explicatory aside, a co-teacher is not the same as a TA; co-teachers are both equal, whereas a TA is an assistant to the teacher)

Saturday, April 3, 2010

Drop Forged (1)

I recently started a project in artistic papermaking. I'm making a series of 100 sheets of 8x10 paper, each with a unique color pattern forged from a selection of various types of paper and drops of colored ink and paint. As the pulp settles into a sheet, the colors converge and create a single paper like no other. Though they all share the same mold, each uses slightly different materials, and the results are never the same.

The series takes its name from a method of metal forging wherein a red-hot ingot is pounded into a series of molds to form it into its final shape. The result is much stronger than a simple metal casting, which is why you'll often see it on tools like wrenches.

I've added a gallery page for it (but haven't added it to the site officially yet) which you can reach here. I'll add more as I produce them - and I can make 5 in a single batch - so keep checking back.

Wednesday, March 17, 2010

Provo Temple and Ring of Fire oil paintings

I painted both of these quite a while ago, but never really got around to posting them online. I painted this one of the LDS Provo Temple primarily so that I'd have a picture of the temple for my own home. I'm now offering prints of it if anyone is interested. One of my favorite details is where it says "Holiness to the Lord - The House of the Lord", because that embodies what a temple is.
The second painting added today is an abstract painting I did around the middle of 2009, playing with color and trying out thickly applied oil paints. I recall commenting to one of my family shortly after finishing it that abstract art like this can be way too easy. Looking back now I can see better how abstract art usually has some meaning or value behind it beyond just a splattering of colors.

Tuesday, March 2, 2010

Sketchbook - 2 March 2010

I recently acquired a set of gouache paints and have started trying them out. Here are a couple birds of paradise and some test strips using gouache in my sketchbook. I have some observations:
  1. Gouache can be re-worked after it dries by adding water
  2. Gouache acts a lot like watercolor
  3. It's a really good idea to use quality paper. My sketchbook pages are thin, so they crinkle heavily when they get wet.

I'm currently working on a painting using them on a vinyl record, inspired by some of Lawrence Yang's paintings on vinyl records. I'll post pictures when I finish.

Wednesday, February 24, 2010

Hand-made Journal and Sketchbook

I finished these books quite a while ago, but I've been away from my blog for an extended period and haven't taken time to post anything new until today. I've been busy with school, and have wasted a load of time on computer games when I wasn't busy with homework and work. Here's a little bit about these two books:

This first one is a sketchbook bound in denim and embellished with a keyhole plate and rivets. My Figure Drawing class had a requirement to fill up a sketchbook during the course of the class. About two weeks in I lost my sketchbook. I wasn't keen of having to start over, but even more I didn't want to have to buy another sketchbook. So I bound together a bunch of pages, had them trimmed, and made a cover with the denim from a ruined pair of jeans. I also ran across a 90% off sale at the local bookstore, and they had a few scrapbooking-type items, including this cool keyhole door-plate, which I thought would go great as a book cover detail. So I included it in the design.


This other one is a journal bound in real leather. I made a similar journal for a friend in 2009, and printed off far too many pages for the job. I had enough left over to make a second, slightly smaller journal.

I put the pages together but neglected to have the edges trimmed for several months. Finally I got around to taking the book block to a print shop and having them cut a clean edge. Once that was done, I cut the leather, assembled the case, and finished constructing the book within a day.

I would like to note that when making book covers you should always try to find a thin, pliable leather. The thicker and stiffer your leather, the harder it is to work with.

Sunday, November 29, 2009

First Sale

I have just sold my first piece of artwork! My abstract 11" x 14" painting, "Anger Destroyeth" just sold on etsy.com Saturday afternoon while I was at work.