PostsCSS/JS 3D Cube
FeedMeComics Beta Launch
Shadowrun: The Anarchy Wars
J-B Weld a Bicycle Peddle to the Crank Arm
Cyber Monkey 3D
Famous Artists in Modern America: Raphael
Arts Shows and Photography
Controling the Google Map Iframe
The Dark Lord Rises
HTML Color Selector Class
Styling Snipt Code Embeds
I Stand with Rand
Glen Bradley for NCGOP Vice-Chair
CSS 3 @(at) Rules and Font Embeding
Happy New Year, New Site!
Making a Simple House with Blender 3D
Happy, Mic Check 121212
Making Mountains with Blender 3D
Bash ~ indexOf
Midwife Advocates Website
My Own City - Part 2
Virtual Box VS. VMware
My Own City (In Blender 3D)
The Return of DonvanH!
Geishas and Watercolor
More Vector Cartoon People
Basics of Graphic Optimization for Flash
Veterans for Ron Paul 2012
Dynamic Draggable Divs
AK Donovan Sole Brutha ~ Time Lapse
Disengaged Reality ~ Time Lapse
HTML5 Canvas Drawing
Charlotte, Photography, and Penguins
North Carolina CPM Rally
DJ The Sypher @ Heaven and Hell
Making a World... Map
TDI Site Complete
AS3 vs HTML5 Drawing
Poked in the Face ~ Time Lapse
WeAreChangeDC.org BETA up!
SamMenkmeller.com is GO
Prince of the Pavement
Speed cooking for 100
AS3 to Clipboard to JAVA communication
Lighten Up ~ Time Lapse
AmbieMac.com is Up
Howl's Moving Castle
End the Fed 2009
Timer Tools AS3
Flash to PHP communication
Dynamic Timer Event Handling
AS3 XML class [dXML]
Let Oklahoma Vote
MurderOne Shirt App
Universal Click Handler
R,G,B, to HEX and back
Kirupa Art Contest, 2nd!
AS3 Preloader Class
Paul is FREE!!!
My First C++ App
Free Paul Jacob
XML picture displayer
Flash Web Site Template
Easy Effects AS3
Attack of the Frownies
Gootropolis On-line World
Ohio Valley Recovery Inc.
Challenger Learning Center Site
CLC, E-Missions Site
Check out these examples.
Over the years I have done a lot of experiments using HTML canvas elements, so when a friend told me there aren't enough good web comic aggregates it gave me an idea. Not only would I make a site where you can find links to all kinds of great web comics but you can also make your own!
FeedMeComics.com features all of the tools you need to get started making comics and sharing them on-line. You can either upload your own images or use the on-line drawing tools built by yours truly to make your comic and share it with the world. Also, membership is free and unlike some other websites I don't make any claim to your work, even if you used my tools to create it.
So whether you are an artist or just like to read some comics from time to time, sign up on FeedMeComics.com and enjoy!
Here is a basic example of using the class.
I ended up finding a pretty nice CSS based checbox styling tutorial.
The other day I was playing around with my old canvas drawing class and thought to myself, I really could add more colors to this thing. Quickly using some loops to generate a number of color tabs I realized with only a little more effort I could make a full-on color selector class. So I did.
The algorithm isn't perfect but it does contain an extensive array of colors. You can pass two parameters to the class when instantiating. The fist (threshold) determines how many steps in color value the color selector will take between drawing color tiles. For example a threshold of 8, getting lighter, would build color tiles like so ((239,156,16), (247,164,24), (255,172,32)). The second parameter sets the square pixel size of the color tiles. If you don't set these they default to 8 and 2 respectively.
Here is an example of using this class...
... and this is how it's built on this very page.
In the second code snippet you see I'm doing a couple of things with the class before I call the init method. There are a number of public methods and event listeners you can use to interface with the CMDColorSelector.
PUBLIC METHODS * init : build the color selector to the document/parent * select_color : returns the last color clicked on by user * active_color : returns the value of the color the mouse last hovered over * threshold : returns the threshold step value. threshold must be set on instantiation * tab_size : retuns the sqare pixel size of the color tabs. tab_size must be set on instantiation * inititalized : boolean, true if init() has been called * parent : allows you to set the parent element the CMDColorSelector will be built on. also can be used to get the current parent if no parameter is passed in. you cannot set the parent if initialized is true * RGBtoHEX : converst an rgb(0,0,0) based string to a hexidecimal based string * setEvent : allows for stored functions to be called during certain class events. The first param is the event type and the second is the function to be called (see EVENTS) EVENTS * onInit : executes at the end of the init() method * onUpdateSC : executes whenever the selected_color value changes * onUpdateAC : executes whenever the active_color value changes
Along the way I leaned two interesting things. First, IE (save for v8) has no support for the standard getter and setter methods that other browsers use, and the amount of code it takes to fix that issue just does not seem worth the effort and processing power. Second, in most versions of IE and Safari, mouse event bubbling (or registering) might not happen properly for child elements when their parent has a CSS display value of "block". To get around the second issue I set the parent elements CSS pointer-events value to none, while setting all of the clickable child elements pointer-events value to all.
In the (hopefully near) future I will be adding this color selector to the canvas drawing class. Who knows, with a couple more features I could have an on-line version of MS-Paint!
So, I have been using Snipt to host my code for a while. However when I wanted to change the height of one of the embedded code samples I realized there is no direct way to do this. So I devised a way to access the embedded code with CSS. While I was at it I figured I may as well explore modifying all parts of the embedded code and then share it with the world.
I recently had the pleasure of teaming up with For Liberty Communication to make a web site for Glen Bradley who is running for NCGOP Vice-Chair.
Many of us who have done CSS for a while are aware that an @ symbol can be used to @import one CSS file into another. This was never widely used as it has no significant advantage and it's not fully supported by Internet Explorer. Some of you might be familiar with the @media rule. Mostly used to control print jobs, the @media rule can also be used to target projectors, TV, handheld devices, and more. I wanted to mention those, however what I am most excited about is the ability to finally embed a custom font via CSS3!
Many times through my career I have been faced with the challenge of using custom fonts on the web. As most designers would do, I often created PNGs and treated my font like an image. A friend of mine, Steve Perrie, would at times use flash modules with the font embedded and the text value would match an embed param, which is a nice method with it's own set of pros and cons.
Now with CSS 3 we can finally just use a font that is on the local server! With the at-rule
we can embed fonts and no longer be at the mercy of the users font directory. Here is a an example of using a custom font on a page,
If your browser supports font-face this will display in the Future Wolf font.
This one is called Guwey Scratchy.
Just remember, not all browsers support @font-face. For that, I have found these two charts, one is a list of supporting browsers, the other, the font types the browsers expect.
Font-face Browser Support
Browser Font Type Support
Happy New Year! I have a new site layout! I was going for an increased display area, as well as using the whole page. It was back in 2008 when I design DonovanH 2.0 and have plans to make it still usable, after I finish up all of the details with the new DH 3.0. I still have a working copy up of my Flash based student site. There is a nice little tool I had on there for showing off type face on line though. It's been a while since I have messed with font making but have often hand drawn letter sets.
Last year was quite an adventure, with a lot of learning experiences and travel. This year I turn 30! So I have to plan for one of the most epic adventures around my birth date. I'm looking forward to making some more art and hopefully make more time to get my other experiments done. Anyways, stay tuned for more posts about the interesting things I do and experience.
Another in my latest works of small end websites. Ana Rodriguez is a very crafty lady who has made a small business with her skill and hard work. I had meet her through a mutual friend. When she was talking to me about her website she said she would rather refer people to her on-line PDF rather than to her website. I told her I would be able to offer he an affordable redesign and have it fixed up in no time. Well, no time is now!
We have already been discussing e-commerce options, a content management system, and SEO, in order to make the most out of her web space. None the less a good appearance is the first step to a good web site.
Click here to view Ana's website.
Last week I did a re-design for the group Constitutional War. Originally the group purchased the name and used it as an event page. Now that they are on to other things they wanted to have a website that better represented them.
Click here to view the site.
Midwife Advocates is a small group that is trying to legalize midwifery, mostly in the state of North Carolina as they are still a small organization. When first moving to NC I found it quite odd that the practice of midwifery was outlawed. My guess would be lobbyists in NC's large medical industry might have something to do with that.
Anyways, I documented one of their events last spring and was recently contacted for web development services. The budget was small, but I'm a sucker for do-gooders. The design and structuring took me about 2 day and another 2 days to finish off their content management system (CMS). They are still putting in a lot of the content, however with their custom CMS, that should be no problems for them.
Click here to visit MidwifeAdvocates.org
One thing that I have found in my years of editing and fixing FLAs is that most people seem to take little regard to graphic optimization. Graphic optimization is important in order to make your application as efficient as possible. The Adobe Flash Player (AFP) handles both native vectors and bitmaps. Both of these have specific reasons to use one over the other. I will not get into the visual differences of vector graphics vs. bitmaps, I will explain when and why to use one or the other and how to do so at an optimum level.
To understand graphic optimization for flash you need first examine the AFP and how it handles the two major graphic types. Vector images are built and calculated continuously on stage with their properties applied to them by the AFP. Now the important thing to consider is vectors are little more than an array of points and some extra properties such as stroke, color, and so on. This most always will make for a drastically smaller outputted SWF file. However if your application requires a lot of stage movement, rotating, and tweening than you must also keep in mind that the AFP has to re-calculate all of these points, which can be quite CPU intensive. So vectors might not be the best approach to graphics for flash gaming, unless used for simple static graphics such as menus or buttons.
Bitmaps are the tried and true format for Internet images. They are handled in the AFP with about the same efficiency as any standard web browser. On average using bitmaps will bloat the size of your SWF file, making for longer loading time. The advantage however is that bitmaps are much easier for the AFP to move around on stage. Instead of recalculating numerous points the AFP simply needs to know what the new (x,y) registration point is. The bitmaps are cached so duplication and tweening are much less CPU intensive.
Now it is true that you can cache your vector images as bitmaps. However it is important to keep in mind that this command happens when the object is introduced to the stage. Clearly this makes the use of cached vectors (or vectors in general) a poor choice for things like gun firing in a game or scrolling background objects. To curb the stress on runtime processing you can store your vector in a movie clip and assign that movie clip to export on the first frame, however the caching command will still process when it is called in your script.
Since we know the key difference between the two major graphic types and when they are appropriate, lets look at some ways of optimizing both vectors and bitmaps. While testing for optimal graphic performance it is advised to keep open a system monitor to track CPU usage for spikes. Another important thing to do is enable flash to generate a size report on export. To generate a size report select File -> Publish Settings -> Flash -> Advanced, then click the box for generate size report. After doing this you will get a break down of all of the images that are loading into your application, as well as the frame by frame byte usage.
To make vectors more efficient you remove unnecessary points from the graphic. This will not only reduce your SWF file size but also reduce CPU usage from movement. The key is finding the balance between efficiency and beauty. If you are dealing with complex vectors, such as the ones made when you preform a trace bitmap command, you may want to use the Modify -> Shape -> Optimize tool. This allows you to reduce many of the unneeded points very quickly. Also when using shapes, keep them as simple as possible and convert them to either a graphic or movie clip that you will then use instances of time and time again. By doing this you can re-size, re-color, and re-style several different copies of the same instance.
There are a number of benefits to having your vector stored as a movie clip or graphic. Both allow you to change the color and styles of the graphic, however movie clip adds many nice features for only a small increase in byte size. Movie clips can have several handy filters applied to them. Take advantage of these filters, if you are skilled enough you can really drop your file size and avoid use of several bitmaps. If converted to a class object you can export them to load on the first frame, for preloading, and as mentioned before they can be cached as a bitmap to move more efficiently on stage. Keep in mind several filtered symbols moving on a stage will severely impact CPU usage. Since we are on symbol types, I should say a word about usage of the button type. Don't.
In ways of optimizing bitmaps there is not as many options, but let's go over them. In your library you can right click and open the Properties panel for any bitmap. Here you have a number of options, but the ones we care about are the smoothing and quality settings. Smoothing will slightly blur the bitmap hiding pixelation caused by lowering the quality to shave off precious KBs of space. I find with smoothing on you can use around 50% quality and have good results.
Naturally graphic optimization takes time, especially on large complex projects, however the end result is happier users. Not much, aside from unnecessary sound, annoys users more than long load times and lagging. By taking the time to properly optimize your flash projects you can often eliminate these annoyances. Also it much easier on your server and bandwidth to deliver smaller files.
After some slight delay the Truck Drivers Institute web site is finally completed. I think I need to take a little break now and get back to my painting. Such is the burden of working so much, my art hangs over my should jelously taunting me to spend more time on it. Well art, now is your time again! Hopefully I can finish my next piece before I decided to take up more side work. We shall see.
TDI has changed their layout, view the archived version HERE.
So Cassie Lightfitz asked me about the new canvas object in HTML5 and at the time I replied that I don't know anything about it. I was aware of some of the new goodies in the future of the web but I am ecstatic with this new canvas object. The canvas object allows for scripted drawing on the fly, just like you can do in Actionscript. Now I naturally the question I had was ,"which one draws faster"?
Ok, what's one big difference? While AS3 draws in vectors the canvas object draws in bitmaps. My theory is that the canvas object actually caches a copy of the drawn star for reproduction while AS3 has to draw it every time. Try producing some stars for yourself. Warning, more than 100,000 might crash the HTML5 version while over 20,000 can crash the Flash version. If you would like copies of the source code to play around with, download the package HERE.
So recently I have launched the BETA version of WeAreChangeDC.org after starting on the project waaaaaaay back in January. Why the delay? Well, I have been doing a lot of work with Artist Web Builders and have not had to much time to devote to the site. Also the first half of 2010 has been filled with many ups and downs. Im glad I have at least been able to devote more of my time to doing art this year.
Also coinciding with the launch of WeAreChangeDC.org, I have been working with the group to hold a protest of the Federal Reserve on July 3rd, in Washington DC, us locals call the place to District of Criminals. For those who are not in the know about the Fed I would encourage you watch the movie below. With that I thank you for reading and wish you a merry day.
View the archived page HERE.
Over the weekend I managed put the finishing touches on SamMenkmeller.com. Once again aligning with the folks at Artist Web Builders, we have joined forces to make a web site that is both pretty and user friendly.
Now it is full focus on something that I have wanted to do for some time. Finish off WeAreChangeDC.org and restore the web site for We Are Change Virginia. Unfortunately for WACVA the web name WeAreChangeVirginia.org is lost, however yours truly owns the names WeAreChangeVA.com, WeAreChangeVA.org, and even WeAreChangeVirginia.com. I'm building both web sites off of the same engine I used for this site, so hopefully that can save me some time as I have the basic designs for both sites completed already. Wish me luck and GODSPEED!
The site is no longer live, but you can view the archived version HERE.
YAR! I just put the finishing touches on the functionality for AmbieMac.com and I am quite pleased with how the site turned out. This was actually one of the more stress free freelance projects I have worked on and yet one of the more feature packed. I would like to thank the folks at Artist Web Builders for acting as an intermediary and also for handling the general page content while I built all the other goodies for the site. So go check out Ambie's page and all the cool functionality, oh yeah, and AWB did rather well on the design.
A while back the Citizens In Charge Foundation contacted me and asked me if I could set up a web site for them. No problem there, but the catch here was that they need the site up in less than a week. Mind you I have been very busy, but because I like CIC and knew that they wouldn't be able to have this done in time else wise, I agreed to try and get them a site up by the end of the week.
Did I mention the site had to be using WordPress? Did I mention I hate editing WordPress, CSS? Did I mention they didn't even have anywhere to host the site? Yeah, so I hustled up a storm and ended up spitting out a workable -ok- looking site. Due to time constraint and the complications with WordPress CSS I couldn't really make the site shine, but non-the-less it does it's job.
Gootropolis and Steolor Productions are no longer in operation.
I have started a charity job for Ohio Valley Recovery Inc. today. OVRI helps people in the Ohio Valley with recovery and staying off of drugs, by providing support and a place for groups to meet up. You can check out the beginnings of the site
I have finally completed my charity project for
OVRI is no longer up an organization, which is bad news as the problems of addiction certainly have not left the Ohio Valley. Anyways, here is an archived link to the old site...
I was the sole programmer for the site, and made the pass-code system for the login, that enables students to continue sessions, based off of the last level they have completed. This has been my first major web project I have ever tried to tackle
The game is no longer hosted and sponsored by the symphony. Play the archived version HERE.
...The site is no longer on line, but I'm still hosting it from my site for all you beautiful people to take a look at. CLC site
...The site is no longer on line, but I have a copy on my server so every one can still view it, YAH!! E-Missions Site.