Dax Pandhi's nAESTHETIC Dax Pandhi's nAESTHETIC Dax Pandhi's nAESTHETIC Subscribe to this Blog's RSS feed Subscribe to my DeviantArt RSS feed

Popular art from my DeviantArt account:


  Sunday, February 26, 2006


Catching up

What can I say? It's been hell. Both good and bad.

Still not at the best of health, but will pull through. Nukeation is finally undergoing a major change that will split the company into three divisions. I will still reside over all three as undisputed God, but other people are also being brought in. My primary goal from today will be the retail products we've mentioned at Nukeation Labs. And above everything will be NukeBall. The three divisions btw, will be: Professional Services (graphics/web design, etc), Retail (NukeBall, PixelSpread, etc) and ... uhh, the third is a secret for the moment. :-) Let's just say it deals with culture at a high level.

Nukeation has also undertaken 2 top secret projects under special circumstances even though we are no longer accepting new projects at the mo. The first project will probably mean nothing to 99% of the readers here, but the other 1% (and about 2.7 million other people) will be very excited about it when we finally reveal it. This project is directly linked to the new secret division mentioned above. The other 99% will surely enjoy top secret project #2. Here's a hint ... uhh, the suits just came into my office ... will talk more about it later when I don't have a gun pointed at my special place ... my brain, you dolt! My brain. Sheeesh. Kids these days.

Copyright © 2005-2006 Nukeation Studios. All rights reserved.

Here's a look at the new work-in-progress box of NukeBall. We're rethinking the branding while some of the last features are being coded. We seriously need to get the site updated soon too! Now that we're soon be completing all pending projects and won't take new ones, I will finally have some time to do that! Love to hear any comments on the box tho. :-)

I also need to see if I can find some time to write those WPF articles/blog posts that I have been threatening about for so long.

Sigh. I wish a day had more hours! And that reminds me (don't ask how) that I need to post a link to www.andyeick.com - go check it out! It's still in Beta mode. Andy's a client-turned-friend and a terrific photographer. Go check out his site (which I *ahem* helped design, thankyouverymuch) and especially his photos! He has about a million and half ideas for his site, but -847139 hours to implement them in. But check it out nonetheless, the real juice IMO - his photo gallery - is already there. Do notice how he delicately and artistically treats even a seemingly "everyday" pic. Oh, and if you dare to venture into his site's Professional section, do so in a sitting fashion. His resume still knocks me to the ground. :-)

I also need to post some opinionated opinions about Isaac Asimov. I read Asimov for the first time. Shocking. I know. I have just under 60 pages left in "The Edge of Tomorrow". My main reason for buying it was because it has a painting by Boris Vallejo on the cover, and because Asimov wrote the introduction to a book about Boris Vallejo. I've learned a lot about paintings from Boris' works! But can't write about all this yet. Need to finish the book first. And get all the remaining work out of the way too!!

Oh, and btw, I'm downloading Windows Vista Build 5308 32-bit. ~13 hours left. You know the drill.









  Saturday, February 18, 2006


The Force is with me

The last couple of days I was sick. I was miserable. But this morning, I felt a lot better, and felt even better when the FedEx guy delivered two large packages. Excited out of my mind (and also tired of not being able to blog anything for many days) I finally lugged my new tripod, camera, and the kriffin' awesome Vader lightsaber (Force FX) to my roof at 2:30am (its 3:30am now) and took some shots and a couple of videos. Most of 'em turned out bad (I'm still sick I guess) so will take new ones over the weekend and post then. For now, these will have to do:

The Vader saber was surprisingly larger than I expected. It's true the Force FX is not a 100% exact replica - it was slightly enlarged to fit all the electronics. The hilt is also surprisingly solid metal (looks like chrome coated plastic from afar) and heavy (I'd say about 600g or so, not sure). You need to hold the lightsaber with both hands unless your hands are as big as David Prowse'. As soon as I put in 3 AA batteries and switched on the activator stud I was pleasently greeted by a menacing snap-hiss and then idle humming that suddenly brought back memories of watching old Ben Kenobi face Vader on the Death Star. As soon as I twisted my wrist, the (supposedly) gyroscopic motion sensors fired up and the bottom mounted speakers played very accurate lightsaber motion sounds (whrrooom, vrrrrrmmm), and when you hit the blade (tho not too hard) on something it plays a clash sound like hitting another lightsaber!!

The blade glows a bright red visible even in full sunlight! At night its a horrifying scene (to the person watching). An hour ago I scared the stuffings out of the watchman passing by my house. Looking how he hurried his pace, I almost wanted to go down and start chasing him - lightsaber blazing! I didn't. I plan to do it tomorrow when I have more strength. :-)

Lastly, notice the fine finish (ignore my fingerprints) on the hilt. The pattern in the bottom corner is the black nozzle on top from where the blade comes out. It's just how it looks in the movies! The construction is excellent and sturdy.

The second package has the .45 (45%) scaled down model of Darth Tyranus (Count Dooku) replica lightsaber. This is EXACTLY scaled. 100% of what was in the movie (just half the size). It's usually about $35, but I got it free with my FX saber. I intend to order ALL the .45 ones ... not yet. Food first. Sabers second. Food first. Sabers second. Sigh.

As I look at the curved lightsaber, I have half a mind to order two full-scale replicas and see if I can modify my motorbike's handlebars with this. Hmmm. The blade gaurd at the tip of the saber is just so cool.

The detailing is fantastic. Simple excellent craftsmanship. The certificate that came with this said this is a hand crafted model. And this 4"-5" model is also surprisingly heavy. 100g at least. It has a great feel when you hold it - even if its .45 sized.

The rubber grips around the hilt are also very nice. This lightsaber is a lot more comfortable than the Vader saber. The Vader saber has large vertical hard rubber strips that serve as a cleaving grip. Seriously - it bites into your flesh if you hold it too tight! After 3 hours of playing around with the saber, I finally found a comfortable grip. Also, the Dooku saber has a metal "spine" in the under curve that can be uncomfortable if held improperly. You must remember, these were Dark Lords of the Sith. They CHOSE pain. Frustration can fuel their rage.

Oh hey ... I hear the neighborhood watchman making his rounds again. BRB :-)









  Tuesday, February 14, 2006


XAML/WPF Experiment: Zoom Functionality 2

In my previous post I showed some XAML code. I would like to point out that some of the code there looked a bit overcomplicated, but that was on purpose - since the code was taken from my app which require it to be that way for several reasons. Here's some alternate code:

<ScaleTransform CenterX="0" CenterY="0" ScaleX="{Binding Value, Mode=Default, ElementName=Slider}" ScaleY="{Binding Value, Mode=Default, ElementName=Slider}" />

Which replaces:

    <ScaleTransform CenterX="0" CenterY="0">
        <ScaleTransform.ScaleX>
            <Binding Mode="Default" Path="Value" ElementName="Slider"/>
        </ScaleTransform.ScaleX>
        <ScaleTransform.ScaleY>
            <Binding Mode="Default" Path="Value" ElementName="Slider"/>
        </ScaleTransform.ScaleY>
    </ScaleTransform>

This is nice. Creating UI in a markup language makes it SO much flexible for modifying existing stuff. It would give you hives in WinForms!









  Monday, February 13, 2006


XAML/WPF Experiment: Zoom Functionality

I mentioned in my post about PixelSpread that a LOT of code was replaced by using the simple features of WPF. Here's how it was done. This example illustrates the concept, but with different controls.

On our blank XAML Scene file we have a Grid object and a Slider. The grid is called grdMain and the slider is ingeniusly named Slider. To make this realistically work, we need the Grid to be in some sort of container to mask the view, but that's beyond the scope of this example. The slider's VALUE will provide the zoom factor. 0 being nothing and 10 (1000%) being the highest. Here's code:

<Grid Width="Auto" Height="Auto" Background="#FF000000" x:Name="grdMain" MinWidth="0" RenderTransformOrigin="0.5,0.5" Margin="13,16,10,46" MinHeight="0">
  <Grid.RenderTransform>
    <ScaleTransform CenterX="0" CenterY="0">
        <ScaleTransform.ScaleX>
            <Binding Mode="Default" Path="Value" ElementName="Slider"/>
        </ScaleTransform.ScaleX>
        <ScaleTransform.ScaleY>
            <Binding Mode="Default" Path="Value" ElementName="Slider"/>
        </ScaleTransform.ScaleY>
    </ScaleTransform>
  </Grid.RenderTransform>

 </Grid>

 <Slider Width="132" Height="21" x:Name="Slider" RenderTransformOrigin="0.5,0.5" Margin="0,0,42,14" HorizontalAlignment="Right" VerticalAlignment="Bottom" Value="1"/>

The code is pretty straight forward. We have databound the Grid.RenderTranform.ScaleTransform.ScaleX (and Y) properties to the Slider's VALUE property. You can also use RotateTransform or other transforms as well.

To find out more about the ScaleTransform object, see this link in the WinFX Documentation. For other transforms and the Transform object itself, see this link.

The documentation notes that the RenderTransform object does only TEMPORARY transforms. That is, it does not regenerate layout size, etc. But you can simply use such binding to other "tangible" objects for storage.






OMG Factor for WPF Post 1 of Infinite

Making a prototype UI for PixelSpread, I started implementing the Zoom feature (it zooms the entire page/spread). I wrote two lines of code manipulating the Transform of the container and binding it to a slider, and replaced over 120 lines of Windows Forms related code! No more handling resize events or anything! This just WORKS.

I wish I could post the code. But this is a commercial application. Still, WPF ROCKS! I might post a similar sample just to show off this feature. Seriously, WPF solves SOOOOOOOOO many UI customization problems!






PixelSpread moves to WPF

Now that Windows Presentation Foundation is much more stable, and all it's tools are appearing in usable condition, I've started moving some of our projects to WPF.

The first of which is PixelSpread.

PixelSpread is a more-or-less ANTI-ORGANIZER. Don't let the name fool you though, it has superb auto-organization facilities. PixelSpread is made especially for designers (web and graphic). Photographers have recently gotten tools that let them organize their photos on a digital light table and work like they do in the physical world. Now that's all nice and good, but a much more simple (yet complex) solution is required for graphics designers who have literally thousands of small images (icons, graphical widgets, etc.). The thing is, designers often work with pieces of a single image. For example, take a button for example - it is (in web design especially) comprised of three different images: left side, right side, and the middle that can be stretched as wide as need be. You have to be painfully specific to organize these images so that you can see them in order in your image viewer or Windows Explorer. And organizing multiple such things is a pain. Trust me. I manage over 651k+ such images.

So, in comes PixelSpread. NOTE: This screenshot is from the WinForms .NET 2.0 prototype. This has 60% less features.

So, PixelSpread lets designers randomly drop images to keep here in a "spread". You can have more than one spread and share a single image across multiple spreads - like the new Virtual Folders in Vista. You can store a more than one format for each image. You can instantly copy from PixelSpread to your favorite web design or graphic design software.

PixelSpread maintains 32-bit transparency and supports Vector objects as well. You can zoom in/out an entire spread. Featuring state-of-the-art image compression (storage only), the PixelSpread data storage layer compressed a 291MB Corel PhotoPaint (CPT) file to 10.3MB, and a 325MB PhotoShop (PSD) file to 19MB.

With the move to WPF, the UI is more more flexible and customizable. The memory footprint is smaller, and the application is now seriously much more fun to use! :-) Even with the move to WPF, PixelSpread still uses the Nukeation XCOPY™ Engine written entirely in Visual Basic 8.0 and sporting a custom back-end.

For more information about PixelSpread, subscribe to the RSS feed at http://labs.nukeation.net or see the PixelSpread page there.

PixelSpread is intended for a Q3 2006 release. There will be a free "Express" version of it as well. Expect a beta in the coming months.









  Sunday, February 12, 2006


What does one do while awaiting the delivery of his lightsaber?

So I'm gonna need to wait a week or so more for my sabers to get here. Here's the stuff I'm doing in the meantime:

  • Playing Jedi Academy once in a while to get the feel of the lightsaber and some pretty hot moves.
  • Buying replacements for the stuff I broke in my house while practicing the aforementioned moves.
  • Using a thick whiteboard marker as a lightsaber hilt and practicing thrusts and parries.
  • Apologizing to my colleague whom I drew red marker stripes on while practicing. Note to self: buy him a new shirt.
  • Using a broom as a double-bladed lightsaber and practicing the moves.
  • Thanking the Force for helping me not break anything this time.
  • Building a special display case in my home office for the lightsaber.
  • Thinking of starting a collection of different replices (including replica Katana blades and other types of swords).
  • Might even take up fencing lessons if I can make the time.
  • Practicing chopping of Dooku's head (using cabbage).
  • Practicing kneeling in front of (imagined) Emperor Palpatine.
  • Practicing killing people with a Force grip. (tho I'm still not able to call the TV remote from afar - now that's a Force power we all could use. That and using Force Sense to find the car keys)
  • Wearing more black clothes (I already used to do that, so no biggie - being a graphic designer rocks)
  • Trying to explain to men in white coats that I am mentally stable (note to self: get a certificate from the psychiatrist)
  • Practicing being redeemed by my son near the end (note to self: get a son) (note to self: find a woman insanse enough)
  • Playing more Jedi Academy.

Don't worry. I won't post photos of myself dressed in black, brandishing a red lightsaber. Well, not more than one or two, at least. :-)









  Friday, February 10, 2006


Wooohoo! It shipped!

I love the people at MasteReplicas.com. They gave me FREE international shipping (usually costs like $40 to $80 for things like these!) and now instead of the usual month or two I need to wait for a package from the States to get to India, they are estimating a delivery in the next 11 days!!

I can't wait wrap my hand around that cool polished hilt of Vader's lightsaber. Red blade blazing. Jedi fearing from it. Muuhaahahaha. I'm drooling already. Oh damn, need to clean the keyboard now.






Digital Exile Blog - Revamped - FINALLY

Hey, you! Yes, you - the guy reading this in an aggregator or something. Get your butt to www.nukeation.net right now before you read one more word! Yes, that means you! Now MOVE IT!

There, you on the site now? Cool! Thanks. :-) Keep reading.

Being a graphic designer who loves to keep his stuff with the newest, coolest look, you can imagine my anguish at having to keep a 6 month old skin on my blog while I flesh out a new one. While discussing the finer points of this design, I would also like to share some thoughts I've had.

I get anywhere between ~5000 to ~18000 hits a month (excluding bots). At last count, I had a dozen subscribers to my feeds. Now that means only a handful of people read this blog in an aggregator. The rest (which is a seriously big number) read only occassionaly or stumble via Google or something. As a person whose blog is important to his business, and as I've been telling people that a blog is money-maker and a fantastic marketing tool if you make it work for you, I decided to make the blog a bit "more" than a blog. Notice the cool links on top. Those are the money makers.

The ratio of new readers to old ones is clearly lopsided. So there is a "quick info" panel near the top. People who just discover the blog get to know what's it all about, a bunch of links to posts they can check out and measure me out and see if this is worth reading or not, and so on.

One big struggle I had was with the issue of the balance of graphics versus practicality. If I went too graphical, it would ruin speed and other things. If I went de-graphical, to me, there is no point in having a blog front - let it be pure RSS feeds instead! One big, big, big, big, big pain in my ass was the sidebar. The blogroll, archives, search, and what not. They take up 100 to 200 pixels of precious real estate. This new skin solves that! The black glass buttons on top show drop-downs with the sidebar contents! I can FINALLY post 950px images in my posts and not worry about graphics being screwed up!!!!!!!

Okay, I've rambled enough for now. Btw, I'd love to hear your comments about how you like this new look. Thanks!

Uhh... you can go back to your aggregator now. ;)









  Thursday, February 09, 2006


Nukeation Labs goes online

http://labs.nukeation.net is now active. Do note, this is a pretty bare bones version. I will beef it up over the next couple of weeks. I have about a dozen downloads to add - as soon as I get time to debug them :-)

Many new projects we are making for our retail division (for developers and graphics designers) are now shown on Nukeation Labs.






Code: GetNow()

Not really the world's most slickest piece of code, but is very helpful in certain situations. I hate to use GUIDs in autogenerated filenames. If you ever need a piece of string for a filename or other unique identifier, the following function's return string would make a nice suffix or prefix. Essentially its a special-character-stripped string representation of "Now".

    Public Function GetNow() As String
        Return Now.ToString.Replace("/", "").Replace("-", "").Replace(":", "").
Replace(" ", "").Replace("PM", "").Replace("AM", "").Trim()
    End Function

This is applicable to user-induced file/string creation only. If using for automated functions, you might want to append a random number at the end. This is a very good GUID for many situations. Very simple, and logical for many situations.






MUST SEE: Mario vs Sonic

If you're from my generation, you are surely gonna love to see this. The ultimate battle! Mario vs Sonic: Special Edition.

Btw, I'm rooting for Mario. :-)






Falling to the Dark Side, Crossing the Line

Yup. I did it. I just ordered me a Force FX vader lightsaber and a scaled replica of the Dooku's saber.

The Vader Lightsaber (on top, for the ignorant types - seriously, how could you not know the Dark Lord's blade?) has a red blade. Now all I need is one of those Vader masks to transmogrify my voice, and then a black cape. I will haunt the streets at night, waving a red lightsaber and scaring the stuffings out of the public!

Okay, so I'll just eagerly show it to friends and display it proudly in my office (along with the 80s authentic Snow Speeder model, the Delta-38 helmet I'm gonna make soon, and my almost half dozen Golden Web Awards :-D).

So, the statistics are:

~185 novels

~219 comics

~15 games

~2 lightsabers

~0 costumes (can't join the 501st yet, but that's a topic for another blog post)

Does this make me a freak? Hmmm. Be careful of your answer. Say the wrong thing and you just might have a red lightsaber'd phantom menace on your ass!! I may not control the Force, but I can sure kick your behind with an aluminum lightsaber!

The expensive replicas are next, but a bit farther into the future. My psychiatrist has suggested I start spending my money on food and clothes. Oh well.









  Wednesday, February 08, 2006


The war continues ... C# vs VB

Do note, my comments are only to inflame my C# opponent. I really don't hate C# nor do I seriously mean the stuff I say. Our friend "MC C#" keeps saying anti-VB/pro-C# stuff every hour on the hour. Suddenly, while I'm working, I get a message:

MC C# says: if there was a soccer match between vb team & C# team who will win?

Dax says: C#

<MC C# is presumably shocked by my reply>

Dax says: coz VB programmers are serious programers, they dont know how to play sports









  Tuesday, February 07, 2006


Matt Stawicki's site is being updated

Matt Stawicki of DragonLance art fame, (www.mattstawicki.com) is having his site done as I mentioned earlier. I noticed this image (which I hadn't seen before) on Margaret Weis' site and I had to blog it. It's by Matt (of whom I'm a HUGE fan).

"Ashes and Amber" by Matt Stawicki

Notice the hand of God moving the Khas piece!

I've finished Matt's site and have sent it to him for review. When its done, you will be able to see many new paintings of his. I for one can't wait. I'm drooling already. Matt rates #1 in my book, along with Masamune Shirow. :-)






BASIC makes me feel old

Talking to a C# fan(atic) on MSN, I just realized something... I have been using BASIC in one form or the other since 1987 - NINETEEN YEARS! I'm kriffin' OLD! OMG!

I started with a British machine called Sinclair ZXSpectrum with 48kb of RAM, then ZXSpectrum+ 128(kb)RAM. I remember coding silly little programs in 128BASIC where you make a small 8x8 pixel "spider" and it drops from the top of the screen to the "floor" and creeps away to the right. Oh man! That brings back memories. I used VB 1 through 3, but not that seriously. I started into the Visual world seriously with VB4, professionally with VB5 and onwards.

So I guess this makes me a (V)B Veteran. Okay, the next person to say "dude, use C#" is gonna get slugged.






NukeBoy plans a vacation

You know stress is getting the better of you when you start talking to your toilet like Palpy. So I am going (finally) on a vacation sometime in late-february. Nukeation will not be taking new projects, so less worries there. My designers will be able to handle the few remaining projects without me. And I will get 7 whole days of carefree... carefree... uh, I don't know ... I will figure out what to do. Or not do anything at all. Just lounge around (note to self: buy lounge music CD) or play video games. As much as I love code, I don't want to see a single angle bracket. I might even get time to finish my series of paintings I started, and eventually get around to updating Digital Exile as well! I just might end up working my ass of instead of all this, but hey, I can dream can't I? :-)






Burning the midnight oil

It's 3:23am. I have to stay up about 6 more hours. I have to finish a project that has a severe deadline. I have a Skype conference scheduled with another client in 2 hours. I'm wasting valuable time I should be spending on debugging and testing on blogging!

Usually I can't sleep (I'm a very light sleeper, being an avid depressed pessimist and all, y'know) and today when I need to keep awake, I keep eyeing my bed (I work from a home office most of the time). There's a good movie on (Bicentennial Man) which I can't see because I'm working (heh, blogging more like). I have 11 Ghost in the Shell manga I picked up that I haven't read. I have The Elder Scrolls III: Tribunal installed, but haven't played. I have 6 articles I need to write that I haven't written. I have this cut on my left ring finger which stings like hell sometimes. I have a wireless keyboard that needs new batteries which I'm too lazy to go out and pick up (besides, everything is closed at 3:30 in the morning). And if you haven't noticed, I have lost the point I was trying to make or maybe I did make it and then kept on rambling. The crux of the matter is, usually I can't sleep (I'm a very light sleeper, being an avid depressed pessimist and all, y'know) and today when I need to keep awake, I keep eying my bed (I work from a home office most of the time). What did you say? Short term memory loss? Nope. I don't have it. Uhh... not that I can remember. Hmm.









  Sunday, February 05, 2006


It's happening - AGAIN

It has happened before and before that too, and it is happening again. There's something about the toilet and Star Wars (uh oh, I just gave SW-haters an opening)... anyway, I am... uhh... y'know, doing the thing and suddenly the flush won't work. So, what do I do? I pull up my hood (I was wearing a hoody, coincidentaly... a black one that hid my face) and point to the flush handle and say:

"I know you want to. Flush it down and fulfill your destiny."

Nothing happened.

"Your feelings betray you. You hate the smell too. Do it!"

Nothing still. But I can sense a change. The impatience.

"Only I have the power to save Padmé."

Padmé? Padmé! What the fierfek...? As realization set in that I was mumbling Palpy's dialogs, I could feel the flush handle look at me quizically. I called the full power of the Dark Side, felt it swarm my very being, and I yelled UHHHNNN-LIHMITED POWWWWERRRR!! and slapped the handle again hard - and it flushed. :-)






Now THIS is flattering...

About 4 hours ago someone came to the blog with the following search on Google:

"images of cool dax" ... and apparently I have high listings in Google!









  Saturday, February 04, 2006


That's it - someone needs to write about serious WPF

In an effort to better educate myself, I went blog-hopping to find some serious info about using WPF. Well, I couldn't find any in the 32 blogs I sifted. Everybody's still into animating the color of an ellipse or rotating a spline! I thought of picking up one of those book on WPF based on the old code, but thought better of it. Microsoft changed a lot of stuff in the past few revisions. The best way to learn, imho, is to get all the info you can and then make something yourself.

So, this weekend, I'm gonna spend my 6-hours of peace like I did last week. This time, I'm not experimenting. I've done 20 people's share of experimenting. I'm now a self-proclaimed expert on WPF (who had over 90 errors in his latest WPF app). While I will let the people who read this decide how smart I am (about WPF, off-topic smartness ratings - especially negative ones - will be ignored), I do intend to write a small application - with a companion walkthrough narrative - that shows how to REALLY use the animation capabilities of WPF to animate and reanimated controls to adjust according to the data, when switching between Views, and so on.

Hopefully, and work permitting, I will be able to complete it over the weekend itself.






WPF Topics on my to-do list

This is a tentative list of WPF related examples I will be making soon. If anyone wants to see anything else, please drop me a line and I'll do my best to write about it.

  1. Browser apps with WPF
  2. Walkthrough: Themeing your application
  3. Real-world applications with WPF 3D
  4. Working with Brushes
  5. Bitmap Effects
  6. Serious and practical uses of the animation model (aka Abusing the Timeline)
  7. Using audio and video in WPF applications
  8. EID 101

 






Blog of the Shadow Warriors

Over a quick dinner, I was going through the blog's logs (hey, that rhymes!) and here are the top 3 topics (not exact search strings) people google and stumble on my blog:

3: Star Wars / Philosophy about the Force

2: Avalon / WPF / WPF-E / WPF e-applications / WinFX

1: Republic Commando / Delta-38 & 07 & 40 & 62 / Vode An / Shadow Warriors / Fierfek (fyi, that's the Star Wars equivalent to the F word) / and the like

This apparently this would lead one to believe I'm more interested in the Deltas, Mando'a, and Katarn Armor than WPF. Don't let it fool you! WPF and the Deltas have an equal place in my heart. Unless Microsoft adds a knuckle-sheathed vibroblade - then WPF takes the #1 spot!! :D









  Friday, February 03, 2006


Transition Complete

Everything is now moved properly. I hope.

New blog format, "hub" design for the blog, new WinFX stuff, Labs, and more coming up next week. For now, I have to get back to work. I'm pushing 4 deadlines and they're killing me!!









  Thursday, February 02, 2006


Nukeation.net is moving

This blog and any corresponding files will be unavailable within the next few hours as I switch servers. This is now being fused with Nukeation Labs. It will be back online within the next 24 hours at most.









  Wednesday, February 01, 2006


Announcing Nukeation Labs for .NET, graphics, and of course WinFX

I've had plans for a long time to create a special bridge website where me and the boys (and girl) at Nukeation Studios get to show off code, tools, and other cool stuff to our peers (and give it away for free). I started doing that on a miniscule level on this blog, but I'm not your traditional blogger. I can't keep my normal slapstick out of this blog, nor do I have time to manage two blogs (and frankly, I don't think anyone would read my slapstick-only blog anymore).

Eventually, the idea of Nukeation Labs (did you know Nukeation Studios was known as Nukeation Labs before it was legally made into a business entity?) became a bit more. Nukeation will be soon be making a new full fledged dive into Professional Tools development. We will be focusing on two audiences: graphics designers and software developers. With our new tools being planned for WinFX, both these will overlap at some point.

So, my goals (yes, I'll be managing the site singlehandedly at the moment) with Nukeation Labs are:

  • Provide technical insight into tools and other projects we are doing
  • Provide free source code samples for .NET, Web developement, and Windows Presentation Foundation (and WPF/E whenever that gets here)
  • Provide free (and commercial) tools for software and graphics professionals
  • Publicly discuss alpha projects that often never see the light of day, but might make for fun discussions.
  • And more ... once I find someone to start managing the site. :)

Nukeation Labs will be available in a couple of weeks as soon as I move this blog to a new server. Nukeation Labs will be available at http://labs.nukeation.net/ - that is, once I move this on to a new server.









  Sunday, January 29, 2006


Expression Interactive Designer Review - Sidenote

Microsoft, as far as I can tell, does not support Additive and Subtractive blend modes in Avalon. One performance hungry way to do this (Additive only) is to make your object 3D and then apply a EMMISSIVE shader to it. Works better if its a bitmap.

Nathan Dunlap told me he was able to simulate bled modes with the help of DirectX Filters. I think if it can be made into a simple reusable model, it would be perfect. Will experiment on it after February 10th.






Expression Interactive Designer Review - Part 3

Carrying on with the control editing theme for the moment, there are two essential ways a control can be customized. Like with ASP.net 2.0, you get an option "Edit Template" for many webcontrols. Likewise, EID gives you that option too. You can either a) edit the template - the actual vectors used to build the control, b) create a copy of the template to edit, or c) create a new template from scratch. With the buttons in FXBesh and FXCresh, I went with C. With the Expander and ProgressBar, I went with B.

Comparing to Flash or 3D Studio MAX on any other animation package out there, there is a big difference in hierarchy:

In Flash its Scene > Timeline > Layers/Objects with keyframes, with SCENE being the root of it all, and _ROOT being the root of the scenes.

In EID/WPF its different - and more dynamic - Scene > Objects. Notice that I did not put Timeline in this hierarchy - well, that's because timelines exist as resources which are attached to events. A timeline has one or more triggers which are attached to one or more objects' events. So you end up reusing a timeline for multiple events. And you can also specify in the trigger whether you want the timeline to start, stop, pause, etc. in a particular event.

And you can "animate" just about anything - ie, properties, values, shapes, etc. So each thing has its own part in the timeline.

Unlike Flash, you don't have to manage groups, layers, etc manually. They come in their own hierarchy.

Here is another app FXDorn - a 3D performance test. There are various triggers bound to different things. The 3D world contains a 3D object with the Play icon as it's shader material. The shader type is emissive therefore uses ADDITIVE blend mode. There are modifications to the default lighting.

FXDorn.zip (25.54 KB)




Expression Interactive Designer Review - Part 2

FXCresh is my next app made with EID. This time, we have Ball buttons based on the BallButton template, a customized gradient progressbar, and a custom-themed Expander control.

FXCresh.zip (51.79 KB) - Full source code is included. The built EXE is also there if you just want to see the app. Again, you will need the JanCTP of the WinFX Runtime. Also, if you run this in VPC, you will get only 20% of the performance.




Expression Interactive Designer Review - Part 1

I finally have my weekly 6 hours of peace. I will get back to work soon nuff, but I need to sink my teeth properly in EI/Sparkle. I thought it might be cool if I kept my blog open and kept scribbling as I went through the app. So this is gonna be a real log-style thing. <PicardVoice>Captain's log, stardate 24871.4.</PicardVoice>

I decided earlier (after dissecting the samples that come with EI) that the only way to get going with this deceptively small-sized package was to get my hands dirty. So I have a few applications planned:

FXAurek - customized styles on common controls. This is ByFar (or ByRef) gonna be the most used thing in Avalon, methinks. Skinning WinForms can often be like skinning a dragon (or do you scale a dragon? I don't know. I gave up dragonmeat after watching DragonHeart). Here, with a few simple lines of code, you can quickly create an app-wide skin - much like what Yahoo! has done with their Messenger. So that's the first project. Let's see how it goes.

Pro: The Worspace Zoom is fantastic! The flexibility is greatly helpful when you're working on 1600x1200 or higher.

[Going to code now]

Con: The tools (especially the "create" tools) don't switch back to the Pointer tool - quite annoying.

Pro: As I make the template (no code writen yet - all GUI!!) for the skin, I am finding the instant binding (see image below)...

... to be quite helpful. You just select the property, you get a menu, select TemplateBinding > [property-to-bind] and the object (a rectangle shape object in this case) gets its property value (height) from the control's property. Zero code still. :-) Well, handwritten anyways. As far as I have seen, this kind of binding is available on all properties which can accept binding of any sort.

I have now created the metallic button with th Silver XP style colors (suggestion for Microsoft: Allow selection of SystemColors in the gradients et al.) and all that's left is create the animations for OnHover OnLeave and a ContentPresenter where the text will be shown.

[Back to coding...uhh, designing]

Okay, now I have two timelines that animate the gradient of the rectangle, and I've added the event-analogs of timelines - "triggers" - to each timeline (ie, MouseEnter and MouseLeave). Eventually we will need MouseDown and MouseUp too.

fxbesh_1.zip (6.54 KB) - I botched up in he gradient animation. I moved the GradientStops. I should've changed their colors!! You can see the stuff I've made so far by running this EXE in the zip. You will need the JanCTP of WinFX Runtime installed. It's about 16MB and can be found here.

Another suggestion for MS: Middle-click/mouse-scroll zoom/pan functionality is BADLY needed.

Con: <DataVoice>Captain, sensors show an anomaly.</DataVoice> A warning to all you Visual Studio devs trying your hand at EID: The "Library" (toolbox-analog) DOES NOT SUPPORT DRAGGING, nor does it create a control if you select it and click on the design surface. You have to draw manually.

Pro: Wanna see how scary a design workspace can be? Check out my personalized workspace in EID here. This is where the flexibility of EID's UI shines! Auto-collapse, auto-sizing. Wonderful. Just plain wonderful!!

I'm having a bit of trouble adding a ContentPresenter. It keeps wiping out the Rectangle I made. I've added the code manually. In hindsight, I think this was because there was no container control. Recommendation: Add a Grid or Canvas or something to the base of the ControlTemplate and put graphics and sub-controls on that. That should solve this problem.

Now I'm gonna bind the content presenter ... which in code looks like this:

<ContentPresenter Content="{TemplateBinding Content}"  />

Even in code, this is a quick and easy job!

Con: EID does not have IntelliSense and code coloring/formatting - YET. It does have basic coloring when you enter Code mode for VB or C#.

Beta-thing: Even when you make a VB project, the project icon has a green # on it. Guess MS still hasn't gotten all the icons decided yet. :P

Btw, in EID, when you highlight text anywhere, even the highlight is a gradient, rounded-corner rectangle! Is this sweet or what?!

Okay, going back to position the ContentPresenter.

[15 minutes later] ContentPresenter is now done. All properties are bound. Works like a charm. I changed the gradient to a more better looking one. The animation looks MUCH better now. It's still a bit chunky, but good enough for this exercise.

While making the skin for our second button, a ControlTemplate by the supercool name of "ButtonControlTemplate1" was created. It is part of the "Form"'s resources. So now, if you add a new button and select ButtonControlTemplate1 as it's template, voila - it will inherit that template. In the zip below you will find one more button in the app and it uses that template as well. The full XAML code and EID project is included. Click here to download it. Btw, I remembered I already had a project called FXAurek, so this one is now FXBesh.

Next: Messing with a List control - custom styles, custom formatting, and other cool stuff.

<WorfVoice>Q'pla!</WorfVoice>

WARNING: The code and downloads presented in this blog post are released under IDGAD License (I-Don't-Give-A-Damn). Feel free to use it anywhere you want. :-)









  Saturday, January 28, 2006


The next super cool Star Wars action/FPS game - "VADER"

This is my vision for the next Star Wars game. I doubt anyone at LucasArts is listening, but what the hell. :-)

Based on either the new Unreal engine or the Doom 3 engine, or perhaps the The Elder Scrolls IV technology, a dark Imperial game called VADER. Looking at the world through rose-colored glasses has a whole new meaning. You see nothing but red. You feel nothing but emptiness and rage.

The game should be more focused on storyline than action, but still have a good balance of both - like Republic Commando! You are often joined by a special squad of stormtroopers from the 501st in a Republic Commando style gameplay - only this time, you do less of the same things they do. You face a handful of missions:

  1. THE PURGE: Follow rumors of a Jedi in hiding, find him, and eliminate him. Employ bounty hunters, bargain with crime-bosses in the exceptionally hazardeous (to the opponent) Vader-Style. And finally - face a group of Jedi Knights and Padawans and kill them. But one Jedi-Padawan team escapes, much to your disappointment.
  2. MISSION FROM THE EMPEROR: Take control of a planet that has refused to let the Empire rule their planet. Vader is sent to a mid-rim system with Grand Moff Tarkin. Employing supreme manipulation skills, you bend the situation to your will. Then finally you show you hand (and yourself) and capture the local resistance leader - and of course, execute him in public.
  3. DARK INTERLUDE: After a few missions, you return to Imperial Center (formerly "Coruscant") and undergo dark training under the Emperor's guidance.
  4. WRATH OF THE DARK LORD: On the way to another routine mission of intimidation in the Outer Rim, Vader's shuttle is crippled by pirates who think Vader to be just a stormtrooper in black armor. Taken aboard a salvaged Acclamator class Old Republic Assault Ship (like the one that carried the clones in Episode II) you battle the pirates, take control of the ship while suddenly learning dark powers in your rage that the Emperor never taught you - Force lightning. While not able to fully employ it like the Emperor, it still is a useful Force power.
  5. LOOSE ENDS: Your network of spies report sightings of the Jedi and his Padawan that escaped your grasp. Vader takes four stormtroopers to Kli-44 - an almost uninhabited planet near Hutt Space. You battle a small group of resistance fighters who were thinking of starting a galactic rebellion and were harboring Jedi. When you are ready kill all of them, the Jedi and his Padawan appear. The Jedi comes forward to duel the Dark Lord in hopes to kill him, or at least give the others time to evacuate. The horrified Padawan watches the Sith cleave his master in two. As the only Jedi here, and being responsible for the rebels, he escapes with them.
  6. INTERLUDE - JEDI HUNTER: An injured Vader returns to Imperial Center to find a Force-user who calls himself a Jensaarai (from "I, Jedi" by Michael A. Stackpole), wanting employ in the Dark Lord's service. As a Jedi Hunter. Vader calls him foolish. He offers to prove himself. Without warning Vader activates his lightsaber. The young Jensaarai uses his own lightsaber to defend himself. Then gives in to his anger and starts fighting Vader in earnest. A small but four-part duel level taking place in Vader's chambers, on the balconies, in the hallways, and on the observation platform of the Imperial Palace. You obviously kill him.
  7. DO NOT HESITATE, SHOW NO MERCY: Plagued by a very un-Jedi like thirst for revenge, the young Padawan trains himself for two years and with the help of the rebels he saved, gets himself to the dark lower levels of Nar Shadaa - the smuggler's moon. Vader gets a smell of this and goes to Nar Shadaa. Finding their "enemy" - the percieved only strength of the Emperor - Black Sun Vigos and Hutt crime bosses gives out silent bounties on Vader. Overconfident bounty hunters plague Vader's path. Ultimately you kill them all and find the young Padawan. Vader faces the 14 year old Jedi who has becomed an exceptional duelist, breaks his Jedi training (to stay true to the Light), breaks his will, and then with one swift stroke of his saber - breaks his body.
  8. EPILOGUE: On your return, the Emperor tells you of the final steps being taken to complete the Weapon. He orders you join Tarkin aboard the Death Star.

The story, of course, needs to be fleshed out a bit. But you get the idea. You get special appearances by EU characters like Xizor, Gurdulla the Hutt, Zuckuss, Bossk, and more. You get to see Tarkin's new slave/aid - a fish-like being named Ackbar. On the second mission, you travel aboard a Star Destroyer under the command of a Captain named Dodonna and give him orders that will place the seeds of rebellion in him.

This would be a best-selling game! A story without hope, without the good guys winning - heck they get slaughtered! Become the scourge of the Jedi, the dark beacon that spreads darkness. Be the Dark Lord!