Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon
28. June 2013


I mentioned a little while back that I ordered a 14” Razer and there were some shipping issues.  Anyways, it is here now and I’m loving it.  I’ve noticed in search logs I have people landing here because they searched for Razer Blade reviews.  I figured I would share my initial thoughts and impression for people interested in this unique laptop.


Apple was an obvious inspiration behind the Razer line of laptops.  In an interview with The Verge, Razer CEO Min-Liang Tan said:

I love Apple products," he says. "I think they do an incredible job in terms of industrial design. But, for us, it's also been an issue of creative professionals coming to us after Apple moved out of the 17-inch space."


I’ve owned several Apple products and I will admit this experience ( and price tag! Smile ) was by far the most Apple-like I’ve experienced on a non-Apple product, except perhaps my Sony Xperia phone.  It starts with the packaging experience on out.  My last Dell came in a brown box…  here is the Razer’s unboxing.


The box itself is actually a thing of beauty… not too many times I've even noticed the packaging of a product.


Box in the shipping packaging:



My new baby



The remaining contents…


Basically it’s the laptop, the power supply and a couple booklets and that’s it.  The box on the left is the power supply box, it’s pretty small.


That sexy box.



Frankly that is what the Xbox 2 should have looked like!  I know at the end of the day this stuff doesn’t really matter.  It shows a level of pride though and an attention to detail.  Plus it makes you feel like a little kid on Christmas again… 


Now to the actual machine.  As a big part of this machine is it’s size, I’ll follow up with a number of close-up comparison shots, but for now, here it is relative to a 2012 Macbook Air, it’s Muse.



Now to the actual machine…  first off, it ships with Windows 8 and absolutely ZERO bloat.  Nothing at all.  What a refreshing experience not having to immediately re-install the operating system.  Drivers are all current and OS seems to be pretty up to date, it was pretty much a matter of start and go with this machine.



The machine itself has pretty solid technical specs:

Intel® Core™ i7-4702HQ Quad Core 2.2GHz / 3.2GHz (Base/Turbo)

8GB of RAM

GeForce GTX765M w 2GB DDR5

Integrated HD4600 GPU

14” 1600x900 matte display

256 GB SSD ( 128/512 available )

3USB 3 ports


The only thing that makes me a bit worried is the 8GB of RAM, it’s a tad on the light side by modern standards, but truth is, I rarely use that much even while compiling or doing 3D work.  The lack of ethernet kind of sucks, but the wireless works exceptionally well.  I don’t know if I can attribute that to Windows 8 or the chipset chosen, but the wifi performs MUCH better than all the other devices in my house. 


Performance and Benchmarks

One of the very first things I did was update the Windows Experience Index:



I’m kind of surprised by these scores across the board.  The Haswell Intel CPU scores respectably at 7.8, but the GeForce 675 GPU is easily the weakest link here.  It’s only about 20% higher than my 560M, that seems low to me.  I almost wonder if Optimus is to blame for the lowish Gaming Graphics score. The solid state drive scores respectably enough.


The GPU is a GeForce 765.  Here is how the GPU benchmarks relative to it’s peers according to


In terms of game frame rates, Bioshock Infinite clocks in at 80fps on high settings, while Crysis 3 manages 37.  In terms of actual frame rates, it seems to be about twice as fast as my Asus G53SX with a GeForce 560M.  It’s certainly not the fastest GPU, but its no slouch.  Its a fair bit faster than the GT 650M found in the MacBook Pro, the only comparable machine IMHO.


About Heat…

One big part about gaming laptops is managing heat.  On the whole the Razer does a pretty solid job.

This is the laptop temperatures reported at idle:



Now after an hour of gaming:


In terms of actual use, the wrist area gets slightly warm, ditto for the keyboard.  Not hot by any definition of the word.  The heat is almost entirely at the base of the screen, hot but not scalding to the touch.  Heat does vent out straight down at the screen bezel making it uncomfortable to game with it on your lap.  The bottom of the laptop itself is quite comfortable, except again right below the monitor.  It cools down very quickly, within 10 minutes or so of ending my gaming session, its back to normal temperatures.  If you game, do it on a table, not your lap.

By comparison to other machines, it handles heat much more quietly than my GeForce 560 equipped G53 and the head is much more localized.  It does however direct more of the heat downward than the G53.  The heat profile is actually very similar to the Macbook Air.  The Razer however is quiter than the Macbook and the surface area where heat is vented ( below the screen ) is much cooler on the Razer.  Over all I consider it pretty successful on heat venting, exceptionally successful on volume levels, but a bit disappointing about not being able to play with it on your lap comfortably, although that’s often the case with performance laptops, so I’m not surprised.


The Screen

The 1600x900 resolution seems about perfect for a 14” laptop.  I think 1080p would have been hard to read.  The viewing angle of the screen is exceptional, you can clearly read the screen from any angle from left to right.  Vertically its about +-30 degrees where visibility gets difficult.  The brightness is good, even using it outside in full daylight causes no issues.  The screen isn’t glossy at all, so I don’t have to look at my ugly mug’s reflection while typing.  The price though is a bit difficult…  When the screen is static it just looks…  muddy.  Like I can see small black spaces between pixels.  I am sure someone can describe it better, but when typing black text on a white background, it is very visible.  When gaming it isn’t.  It’s all a matter of opinion, but at the end of the day I like the performance of the screen ( brightness, viewing angle, etc… ) but I dont particularly like the look of it.


I’ve been asked to expand a bit on the matte effect on the screen.  I’ve tried to capture it as best as I can with a camera phone.  You may need to click the image to get the higher resolution version to clearly see.  The camera pic makes the effect look much much much much worse than it actually is.  The “grid” like effect is more like what you see in the top left or bottom right of the image below.  Again, the screen is nowhere near as bad as the screen actually is in use, but it gives you an idea of the grainy-ness that the matte screen adds.


The Battery

You may have heard the number 6 hours somewhere describing the Razer Blade’s battery life.  I honestly don’t think I could replicate this number… perhaps by turning the screen and CPU settings down to the lowest settings, turning off wifi and doing absolutely nothing for 6 hours it might work.  It’s only been a couple days so it’s hard to give exact figures, but my experience so far seem to indicate around 3.5-4.5 hours of casual use ( surfing, blogging, writing code ) on balanced power settings and screen at about medium brightness.  Gaming though is another story entirely.  I unplugged my laptop from 100% charged and played 15 minutes of MechWarrior Online.  This took 20% of my battery.  So basically you can expect about an hour of high CPU/GPU usage, kind of disappointing, but at the same time, pretty typical.  It’s better than my G53 which refuses to even run at full speed on battery and even still manages to get worse battery life than that!  Thankfully the power adapter for this thing is super light and small so you can carry it around with you.


The user wrecks over at this thread just posted this video of a battery test:


The details were:

Airplane Mode
40% Brightness
Vlc Player using integrated GPU playing 720p Video.


The laptop lasted 3:47 minutes then shut down with 7% battery remaining.

Build Quality


It’s top notch, exactly what you would expect from a 2000$ laptop.  All the edges are solid, there is no flexing or mismatched edges, etc.  The hinge seems strong and the action is smooth.  The keyboard is excellent.  Keys are well sized, good action and feedback.  It’s a mini layout of course, so no page up/down, end, home, etc.  The trackpad is very responsive and feels solid as well.  The dedicated buttons are a nice option, you could actually game on this trackpad… poorly, but that’s still better than most trackpads.  It’s superior to the Macbook Air’s trackpad, which is shocking as it is an excellent trackpad.  The buttons though, they worry me.  If there is a weakpoint on this trackpad, it’s the buttons for sure.


I did run into a problem with the trackpad, I dont know if its a Windows 8 issue or a Razer issue.  It ships default with scrolling reversed, which is irritating as hell.  You have an option to turn it off in the touchpad software, unfortunately it only effects one of the scrolling settings.  For example, I had two finger scrolling and hotspot scrolling both enabled ( this is how it ships ).  When you set the flip option, it only applies to the hotspot scrolling.  Disable the hotspot setting and then the two finger touch scrolling will work once flipped.  Not a big deal for me as I only wanted two finger scrolling available anyway.



So, do I feel it was worth my 2 grand?  Yes, very much so.  It’s a fast capable machine and very portable.  The audio output from this thing is surprisingly good while the noise levels from fans is impressively low.  It gets hot while gaming, but in the right spots.  You don’t want to use this thing on your lap and game, but you don’t want to do that with most gaming laptops.  On a desk the heat is perfectly manageable, in fact, you barely notice it. 

I love the fact the machine shipped with no bloat.  There is no recovery disk/USB stick, which is a bit disappointing.  Losing 15GB of a 256GB drive to a recovery partition is a bitter pill to swallow, would be even harder if I ordered the 128GB model.

In terms of the hardware, it’s very well made, very solid with no flexing.  The lack of a ethernet port is disappointing but the wireless is rock solid.  The screen is effective but certainly doesn’t wow me, if that makes sense.

The machine is very one of a kind right now.  The size and performance combo currently cannot be matched, but you are paying a premium for that combination.  If you don’t need the performance, you can get comparably built machines much cheaper ( such as the MacBook Air, or some premium Ultrabook models ) but you wont get the performance to play modern games or running demanding applications.  You can certainly get higher performance ( but currently not much higher with laptops ) at a lower price… but these machines certainly push the definition of “portable”.  This is to say nothing about build quality… I’ve owned a number of laptops and this is easily has one of the highest build qualities I’ve seen.



Dimensions and comparisons

Given that the machines dimensions are a big part of it, here are a series of comparison shots relative to other laptops I currently own.  It gives you a pretty good idea of it’s size.


Here is the 13” 2013 Macbook Air stacked on top of the Razer, on top of a Dell Studio 17, on top of a 15” Asus G53SX:



Here are the Asus, Razer and Macbook Air from above:



Now here are the Razer and Macbook from the side.







I’m not sure I buy the claim it’s thinner at the thickest part than the MacBook Air.

Totally Off Topic

19. June 2012


A couple months back took a long look at Appcelerator and initially I loved what I saw.  For those of you unaware, Appcelerator allows you to develop “native” applications for Android and iOS in JavaScript that execute in a special version of the V8 JavaScript Engine. I started developing a prototype app of a simple Android game for my daughter and got surprisingly good results quickly.  It was a very encouraging start, but then the wheels fell off.  I notice a number of people end up on this site from search engines looking for an Appcelerator review ( for some reason? ) so I thought I would share my experiences.


For whatever reason, I got distracted and put it down for a while, I came back to it recently and intended to finish off that prototype.  Here is the kicker, the exact same code from a couple months ago, unchanged, no longer works on my Transformer tablet.


I will say, this is frustrating to say the least.  Now, since the code didn’t change it was obviously an update to Android that broke things, I can’t exactly blame that on Appcelerator Titanium ( oh the joys of Android device compatibility… ) but I can blame them for what came next…


You can’t debug on device.  At all.  With the exception of printing comments to logcat, you are basically blind.  This obviously leads to a problem, as here is what happens when I run the app.  ( Which by the way, still runs perfectly fine on my Galaxy Note running Android 2.3.x, its just on my Asus Transformer that it breaks ):




Since I can’t debug on device, this is the results I get from connecting with the Delvik Debug Monitor:


06-19 09:56:51.090: I/TiApplication(1823): (main) [0,0] checkpoint, app created.
06-19 09:56:51.130: I/TiApplication(1823): (main) [46,46] Titanium 2.0.2 (2012/05/30 10:21 2ff31a3)
06-19 09:56:51.170: D/dalvikvm(1823): GC_CONCURRENT freed 268K, 5% free 6703K/7047K, paused 2ms+2ms
06-19 09:56:51.380: D/dalvikvm(1823): GC_CONCURRENT freed 314K, 6% free 6898K/7303K, paused 2ms+2ms
06-19 09:56:51.450: E/TiApplication(1823): (KrollRuntimeThread) [318,364] APP PROXY: [email protected]



And, that is it.  Since I can’t debug on the device, I am pretty much DOA here.  The forums answer nothing ( although I did find other people having similar problems ).  I of course could debug in the emulator with two exceptions.  a) the error only occurs on the actual device b) the debugging experience on Android is still awful.


This is another area with Appcelerator Titanium I always found infuriating… the emulator.  Getting it to actually run with your running emulator was a nightmare, you had to match up the Android build version and run configuration exactly with the version of the running emulator, then it was still a 50/50 chance that it would actually use your emulator, or start a new one.  If you’ve worked with Android before, you know how fun waiting for the emulator is!  There is light and the end of the tunnel with the recently release Intel emulator running a heck of a lot quicker, but unfortunately the JavaScript V8 virtual machine Appcelerator relies on doesn’t work with it.


It’s a shame to be tripped up on such a thing, but actually being able to debug on your device is an absolute requirement, as is demonstrated by this situation.  There are other annoyances with using Appcelerator certainly…  the binaries it generates are “large” to be extremely kind, performance can be a bit spotty at times and you virtually have to write two applications if you want to support iOS and Android, but none of these was enough to make me give up. 


Not being able to debug on device, coupled with some remarkably meh support.. that is.  Combined with the fact my application was broken by an Android update… if I can’t get my code working with my three devices reliably, what happens when I release to the masses with their millions of different devices?


Which is disappointing, as I really liked working with Appcelerator.  I even liked Appcelerator Titanium as an IDE, which is shocking as I hate Eclipse, which it is based on. 


There is potentially light at the end of the tunnel, as there is an open ticket for debugging on device.  Unfortunately, its been assigned medium priority and has already been open for almost a year.


Appcelerator Titanium is an interesting and encouraging product, but for the above reasons, I just can’t commit to using it.  Add native debugging support, and I will certainly reconsider.


9. May 2012


As you may know, if you want to publish on MacOS or on any iOS devices, you need to use animage Apple computer.  This can represent a rather large expense to many Indie developers ( no, I am not going to get into the ancient Mac price war argument! ).  What if you want to test with a Mac, but can’t justify the cost ( or space like in my office ) of another computer?  Wouldn’t it be great if you could rent a Mac as you needed it?


Well, that is exactly what MacInCloud offers!  Basically they rent out Mac machines over the internet on a time share basis.  Even better, these Macs are obviously targeted towards (game) developers, as it comes pre-loaded with a ton of game development software. This sounds wonderful to me, as even though I own a Mac ( an iMac ), I am more often on the road than not and I have no desire to lug around two laptops with me.  I’ve tried remote desktop’ing into my home Mac on occasion, but the experience was never all that nice.  Let’s take a look at how well MacInCloud pull it off!



If you are the type that flips ahead to ruin the ending, click here to jump to the verdict.

What does it cost?


Well that depends.  There are 4 ways to pay, and each one has a serious impact on the cost.  First and most expensive, you can pay as you go, which as of the time this was written is 1$ per hour.  Next, you can rent for the entire day for 8$.  You can also rent by the week and month, these prices all depend on the amount of time you need per day.


Here is a breakdown of prices for renting per week and month.


  Weekly rental Monthly rental
3 hours a day usage 12$ 20$
5 hours a day usage 15$ 25$
8 hours a day usage 19$ 30$
Unlimited usage 22$ 49$


Weekly and monthly rentals both include the first day for free ( well, 1 cent ), you can think of this as a trial period.

Note, and this is very important. You will be rebilled automatically until you cancel your subscription using PayPal! Not a big deal, but something you should be aware of upfront.  This applies to daily, weekly and monthly plans, but not to pay as you go plans. I will cover canceling your subscription later on, the process is pretty simple but a tad confusing.


So picking the right pricing scheme is a very tricky process.  If you just need a couple hours, pay as you go is obviously the ideal plan, but gets pricey quick.  For example on the 8 hours monthly plan, assuming you maxed your usage out, your hourly rate would be just 13 cents an hour!  On the other hand, paying for hours you aren’t going to use is just stupid.  It’s a tricky balancing act deciding which plan is right for you.  Initially I am going to go with the monthly 5 hours a day plan.


Sign up process


Sign up is almost as simple as it gets.  First you need to create a site account here.  That is just a website account, your email and password only, not a subscription.  In my case I am going with a monthly subscription, and its simply a matter of going to the Pricing menu, selecting the plan you want  then click Subscribe.  This will bring you to PayPal ( which is the only payment option ).


Here is the line item as it appears in PayPal:



You initially are billed only a penny for your first day.  A bit of a warning, this kind of stuff can be problematic with Visa/Mastercard.  I’ve received calls from fraud protection when really small transactions are charged against my card.  Don’t sweat it, it’s not a bad thing if you receive this call, it’s just the banks computers being cautious, just warning you it might happen.  If you cancel in the first day, you will not be billed for the service.



You will now be redirected back to and presented with your Mac server name as well as your username and password.  This information will also have been mailed to whatever email account is linked with your PayPal account.  You are now signed up.


Logging In


There are two ways to log in to MacInCloud.  The easiest is to use their browser based client, which recommends you use Google Chrome.  I will start with this method.  Save your credentials from the the welcome email/page and head on over to




This part of the process isn’t as obvious as it should be, as you currently have two sets of user names and passwords, the one you got when you signed up for the site and the one you got issued after paying.  They did a really poor job of telling you which username/password to use.  Coincidentally, it’s the site ( your email ) password you use here, not the one they assigned you.  Note to MacInCloud, you should really add some text to explain this!


Anyways, once you have logged in, you will be brought to this screen:



This is where you use the credentials they assigned you.

Somewhat annoyingly, these are the resolutions you are limited to:



My native resolutions are 1920x1080 and 1366x864, so these selections aren’t ideal for me.  This was one of the problems I had when remoting my personal iMac and I did find it irritating.  Also, given the fact you are using credentials that were assigned to you, it would be really nice if this screen had a “remember my username and password” option like the prior screen where you need it less.


You are greeted by this screen initially.






Well, then it doesn’t work.  It worked exactly once, I resized the window and I got a Java EOF error.  Since then I have been unable to log back in using the webclient.  I tried in Firefox and same problem, then I tried in IE9 and it simply isn’t supported.


So, if you are here for the web client… go elsewhere, it simply isn’t ready for prime time.  Plus in the very brief period of time I was connected, it was exceedingly slow.



Connecting using Remote Desktop

This is the main way to connect.  You download the zipped connection file in the welcome email, extract it and you are presented with the following options. 




Double click the selection that is most appropriate to you and your connection.




Use the provided username and password to log in.


And you are now at your desktop.  Can you tell by the fact the iPhone simulator is loaded already exactly what kind of developers they are targeting?





So what is installed already?


This is one area where MacInCloud really shines.  The following software was pre-installed:

  • Adobe DreamWeaver CS 5.5
  • Adobe Fireworks CS 5.1
  • Adobe Flash CS 5.5
  • Adobe Illustrator CS 5.1
  • Adobe InDesign CS 5.5
  • Adobe Media Encoder CS 5.5
  • Adobe Photoshop CS 5.1
  • Cocos2d 1.0.1
  • Corona SDK stable and development versions
  • Dropbox
  • Eclipse
  • Firefox
  • Chrome
  • GameSalad
  • Office 2011
  • MonoDevelop
  • OmniGraffle Professional
  • RhoStudio
  • Stonetrip
  • TestFlightSDK
  • TextWrangler
  • Titanium Studio
  • Xcode


Curiously absent?  Unity or any 3D applications.  Otherwise it’s pretty much a whose who of game development applications.


What the heck is going on here?


This may be one of those weird karma issues, but in my brief period trying to test this, my connection dropped… a lot.  Within an hour I had 10 disconnects from my ISP ( Rogers in Canada ).  For the record I haven’t had my internet connection drop in months, and I’ve experienced 10 in the last two hours?


Again, as I said, it might be horrifically bad timing…


Or MacInCloud and my ISP don’t play well together.  I know not to blame RDP, as I literally use it every day to remote control my servers.  However, when I used my Phone’s LTE connection, I didn’t have a single issue.



What’s the performance like?


Well, this is the biggie, isn’t it?  How well does it actually perform.


I tested with two devices, my home cable connection and my phone LTE connection.  The speed of your connection is obviously going to be a big factor, but both connections should be considered above average.


I can’t really describe how it performs, so instead I will screen capture both in action and let you judge for yourself.  I start each with a speedguide test so you can gauge my connection against your own.  To contrast, I remote desktop to one of my servers ( ironically enough, hosted by the same company MacInCloud use ) to compare against remote controlling a Windows server.  HD movie here.


Evaluating MacInCloud performance

One word, disappointing.


How do I quit?


Log in to your PayPal account.


On the main screen, locate your “My Recent Activity” part, click the details link:



Now in the subscription details, at the very top you should see:



Click the Cancel link



Click the Cancel Profile button.





Your PayPal subscription is now canceled.    If you go back to your recent activity, it should now look like:




And now you will no longer be billed.



So then, what’s the verdict?


Not great I am afraid to say.  While making the screenshots on how to cancel, I went ahead and cancelled.  When I signed up I fully intended to go for the full month but the performance was just so appallingly bad.  Frankly when I remote controlled my iMac from home the performance was actually quite a bit better than with


It is possible I just caught them on a bad bandwidth day, so you have little to lose for trying it yourself.  Perhaps in your case it will work better.  Both of my connections are quite quick and neither was even close to functional.


Now, if you just want to log into a Mac to compile your code and publish it to the AppStore, this service might prove useful.  However, to actually do any development, I just couldn’t see anyone having the patience. Actually debugging a running game I think would be simply impossible.


I hope massively increase the speed or that I caught them on a bad day, as their idea is brilliant.  The execution however leaves a lot to be desired.


You can of course try it for yourself, it won’t cost you a cent!  Well… it will cost you exactly one cent.


23. March 2012



Have you ever read a technical book and thought to yourself “Man, the author of this book must be a gigantic jerk!”?  I can honestly say, I never have until now!



This review of sorts covers two different Javascript books I’ve read recently; two very different books with two very different goals.  As I have been working with Node and more recently Appcelerator, I decided I needed to polish up my Javascript skills, as things are much different these days than the DOM manipulation I traditionally used Javascript for.  I started out by searching for “Javascript closure” on Safari Books Online and it brought me to Javascript: The Good Parts, it was short and I was suffering insomnia so I read it that evening.  The book left me with so many questions that I ended up reading/contrasting it against Javascript: The definitive guide.  Aside from both books being about Javascript and both having colons in their titles, these two books couldn’t be further apart!




Let’s start with the Javascript: The Good Parts review.



First off, it’s worth mentioning the author, Douglas Crockford.  If you’ve never heard of him, he is the guy originally responsible for drafting the JSON standard and Yahoo’s head JavascriptJavascriptTheGoodParts guy, responsible for projects like the yUI library.  Simply put, this man knows his stuff when it comes to the topic.  Sadly, he knows it too and doesn’t let you forget it.  Many times in the book he pushes his opinion as fact, and often on very odd things ( like never use ++ operators ).  He often makes sweeping statements that really don’t work in a black and white world.  That said, if you can get over the personality ( or you aren’t sensitive to such things ), this is a wonderful little book.



I do mean little too, as this book weighs in at a mere 176 pages.  Amazingly enough there is a ton packed in to those 176 pages and even more amazingly, a great deal of it could be pruned and would make this a superior book ( such as the regular expressions chapter ).  A good example of what could be pruned out completely are the absolutely bizarre charts this book is littered with.  Here is one for example:






That chart was meant to explain Javascripts whitespace rules… did it help you, even slightly?  You could have more concisely and effectively conveyed all of that information in a sentence or two.  I found that over and over, the author being overly clever or complicated leaves the reader baffled on what should be a pretty simple concept.  He does the exact same thing with code examples too, consider this code sample regarding inheritance:


var Cat = function (name) { = name; this.saying = 'meow'; }; // Replace Cat.prototype with a new instance of Mammal Cat.prototype = new Mammal( ); // Augment the new prototype with // purr and get_name methods. Cat.prototype.purr = function (n) { var i, s = ''; for (i = 0; i < n; i += 1) { if (s) { s += '-'; } s += 'r'; } return s; }; Cat.prototype.get_name = function ( ) { return this.says( ) + ' ' + + ' ' + this.says( ); }; var myCat = new Cat('Henrietta'); var says = myCat.says( ); // 'meow' var purr = myCat.purr(5); // 'r-r-r-r-r' var name = myCat.get_name( ); // 'meow Henrietta meow'



Notice how half of it is taken up by a purr() method which is overly convoluted and has nothing to do with the lesson at hand.  It simply causes the reader to have to dedicate a few more cycles to deciphering an example ( which is completely irrelevant to the topic at hand ), while allowing the author to feel just a little bit more clever. 


These kinds of things happen over and over and it makes reading the book more difficult than it should be, for no good reason.  The other major problem with trying to decipher the code samples in this book are the errors, my god the errors!  See every technical book is going to have a certain number of errors, but for a 176 page book, this one has far more then it’s share.  Just take a look at the errata.  Nothing makes learning a new concept more difficult than following code that doesn’t work!  When you are new to a subject, you assume the code you are working from is correct and it’s your newbishness that is the source of the problem.  That often simply isn’t true with this book, when you read it, if you encounter problems be sure to check the errata before you bash your head off the wall with frustration.



Next up is determining who this book’s audience is, which is a problem the author obviously struggled with.  Consider the following two paragraphs taken from the preface:


This is a book about the JavaScript programming language. It is intended for            programmers who, by happenstance or curiosity, are venturing into JavaScript for the   first time. It is also intended for programmers who have been working with JavaScript at a novice level and are now ready for a more sophisticated relationship with the language. JavaScript is a surprisingly powerful language. Its unconventionality presents some challenges, but being a small language, it is easily mastered.


Followed a paragraph later by:


This is not a book for beginners. Someday I hope to write a JavaScript: The First Parts book, but this is not that book. This is not a book about Ajax or web programming. The focus is exclusively on JavaScript, which is just one of the languages the web developer must master.


Let me put this in the simplest terms possible This is not a book for beginners!  If you are “venturing into Javascript for the first time”, well frankly you are absolutely screwed if this is the book you chose!



So I’ve dumped on this book pretty good, it’s short, the author comes across arrogant and I seem to hate at least half of it, so why the hell am I bothering to mention it to you?  That’s because the remaining half of this book is downright excellent.  It basically is the Javascript equivalent of Effective C++, which is one of the best technical books ever written.



Javascript as a language is an absolute minefield waiting to explode killing ( or at least mentally scaring ) the developer.  It lacks the data hiding facilities that basically every other language in existence has.  More so, it has extremely dangerous but seemingly benign constructs like new and == that are just waiting there to attack you.  Finally, the scoping rules are almost as byzantine as you’d expect from C++! It is far too easy to make a variable global, or mute out an existing variable leading to undesired behavior ( bugs ).  This book helps you to navigate that minefield, probably better than any other book in existence.



More to the point, most people simply use Javascript wrong ( now there I go sounding arrogant! Winking smile ).  But simple fact is, years of browser based DOM manipulation code written to mimic traditional OO code has lead to many people forming extremely bad habits, myself included.  This book does a very good job of showing you the intricacies of the language, as well as effective work arounds for perceived faults.  Some of these “faults” I disagree with, but I certainly did learn from the exercises anyways.



So in the end, do I recommend this book?  That’s a tricky one.  I really don’t like the way it is written, I am not keen on the way he teaches ( the choice of illustrations and code examples ), the excessive errors certainly don’t help.  That said, I learned a ton reading this book, in a very short period of time.  Besides, it’s less than 20 bucks!  So in the end, yes I do recommend you read it, much like Effective C++, it will make you a better Javascript programmer.  But for learning the language or as a first book, certainly not.  Fortunately in the regard, we have another book!




Javascript: The Definitive Guide review.



If Javascript has a bible ( like K&R C for the C Programming Language ), it’s this book.  The Definitive Guide is a much more traditional book, much longer at 1032 pages and with a much more traditional price tag.  This part of the review is going to be much shorter, as essentiallyJavascriptTheDefinitiveGuide there is a lot less to say.  The authors writing style in much more approachable than Javascript:The Good Parts and the code examples are far easier to digest.



One up or downside to this book, depending on your needs, is the amount of browser/DOM related content.  While Good parts effectively had no content pertaining to using Javascript in the browser ( an area extremely well documented in books and online ), the same is not true for this book.  Fully half of this book is on “client side” Javascript programming.  Then again, even at 50%, this is still a 1000+ page book, so you still got another 500 pages of non-client side Javascript.  Just remember, if you are using Javascript outside of the browser, if it starts with document. it probably isn’t supported.



The book is basically broken down into 4 sections.  The first is Core Javascript, which covers the language itself, regardless to how it is used.  This section is where you cover concepts like reserved words, objects, arrays etc.  The second is Client Side Javascript, which basically covers using Javascript in the browser, covering topics such as the DOM, jQuery, HTML5, etc.  The final two sections are reference sections for both the core and client side libraries.  These sections are strictly for reference.  Truth is though, with the sad state of the internet on this subject, a handy book reference is quite a useful thing.



For learning the language and your goto reference book, it’s really hard to beat Javascript: The Definitive Guide.  Taken in tandem, these two books are all you would need to succeed at Javascript development.  The Definitive Guide to get you started, and as a reference as you go along.  Then read Best Parts, to make you a better developer… if you are willing to put up with some annoying attitude that is!


6. February 2012



As I recently mentioned Daz3D have made Hexagon, Bryce and Daz Studio all available for free for a limited time.  As a Blender user, until they finally ship BMesh, I am always in the market for a good modeler with effective COLLADA support.  So at a price of 0$ I figured I would try out Hexagon 2.5.  This is not a complete review, not even close, think of this more as a “These are the things I ran into that made me decide to not waste any more time on Hexagon” review.  Obviously, it doesn’t have a happy ending, which is a shame.



First off, it is a remarkably capable modeler, almost every feature you could want is in there… somewhere.  Feature-wise, it actually spanks Blender handily, with support for n-gons, good boolean supports, surfacing, etc.


First a look at the interface:




At first glance it’s pretty clean.  Properties and scene graph on the right, a tool shelf ALA Maya across the top and a mish mash of visibility buttons across the bottom across the bottom.  Then this is where things start to show the sloppiness as well.  Consider this expanded icon:



As you can see from the tool tip, this control “Activates actual lighting” and when you click it, that toolbar folds out.



Any guesses what any of these icons means?  Cause, I’ll tell you, I don’t have a bloody clue either!  None of them have mouse over tool tips, so you are stuck trying to figure it out from the icons…  good luck with that.


Don’t worry, there is always the help files to sort things out…   or wait, is there?



Here comes big and I mean BIG strike number two.  The help, yeah, there is none!

Of course, there is a Help menu, and as you can see, the options look pretty encouraging imageover all but they do nothing!

You click Help->Documentation or Help->Tutorial and you are brought to Daz3D’s website.  At first it appears that it is going to bring you to a documentation page, but then you are redirected back to the Front page.  Yay.

Alright, so the help hyperlink is broken, no big deal right, just surf to the help manually in your browser?

Ah good idea, let’s try that!

So you go to Support->Wiki from the front page manual.  Then select Hexagon on the left hand side and click the Hexagon documentation link.





Ooooh, this looks encouraging!  Hexagon 2.1 Manual in English, it’s an earlier version but better than nothing, lets click that!





Oh my!  Amateur hour continues.  So, no help, I guess you are on your own figuring things out and, well…  good luck with that.  The interface is downright confusing.


Take view navigation for example.  Other than Blender, the 3D world has become pretty standardized on how to navigate in 3D, so lets see how it works in Hexagon.  To pan your view, hold down your middle mouse button.  Ok so far.  To zoom in your view, use the scroll wheel.  Ok, pretty standard.  To Dolly/Rotate your view you….




You…  well apparently you use the arrow keys.  Yep, by default there is no mouse mode to actually orbit the camera!   Of course, there might be, put to hell if I can find it with a complete lack of documentation!   Of course, a little googling later and I discovered the answer… It’s a preference and it’s by default OFF! Huh?  Why?  Seriously, why?


For those following along at home, its pretty easy to resolve. Go to the Edit Menu->Preference Editor.  Under the User Interface tab, click Misc then select Dolly around selection center, like so:





Can you seriously tell me a reason why this wouldn’t be enabled by default?  It’s a small thing, but it is infuriating until fixed.  It’s a problem that exists for no reason, and those are always the worst kinds of problems.



There are a few thousand examples like this, all around, it’s like death from a thousand paper cuts.  Like features are added or removed with no thought to being a cohesive tool.  Lets take a look at the tools panel for an example:




Second Life???  HUH?  Why exactly is Second Life getting such important placement, or even placement at all?  Now *this* is the type of thing you make optional in the Preference Editor!  Now take another look back at the shelf and answer me this… where you do think you would go to say… split an edge?  If you said anything except Vertex modeling, you are wrong.  Now lets take a look at that process…  How do you split an edge?  Using a tool named Tessellate, that expands down with various options, lets take a look at that next!



Lovely eh?


So, not only do you not have documentation, you also do not have tooltips so its basically anyone’s guess which icon you actually want to press.


But wait, there is a description of each icon below the shelf!  Oh wait… the expanded toolbar obscures the description text!





Again, a small niggling thing, but 5 minutes in QA should have caught this.  Again, it’s like people keep adding features with no thought to how they fit or should work.  Even worse, you have items that simply don’t exist in the panel, but only via menu.  For example, there is a utilities panel, and a tools->Utilities menu, but WELD can only be accessed via the menu! Or how about the “Lines” menu that has 5! items called arc!  I’m not kidding… look:





Then there is the lack of polish that if you switch to a different part of the tools panel with a menu expanded, it doesn’t close.  You have to switch back to Vertex modeling, click Free Tessellate again to get rid of the menu, otherwise it’s stuck there forever. There are tons of little things like that with the UI, that make the UI toolkit they used just feel… sloppy and frankly, slow.



Speaking of slow, I am running Hexagon on a 12GB i7 machine purchased 3 weeks ago and it can be downright sluggish.  This is especially true when it comes to sub-division surfaces.  The finally




It’s all such a shame, as reality is, there is a great program underneath the surface here.  I didn’t give this program a lot of time; I didn’t have to.  The glaring problems are exactly that, glaring.  I encountered a good dozen “WTFs?” in less than half an hour and within three or four hours with this program I realized it had nothing to offer me that Blender/Wings didn’t already do better.



If there was documentation available ( a big huge mistake, especially when they new they were going to have a giant influx of new users with the promotion ), it might be worth fighting through the stupidity, but there isn’t and it’s not really worth it in the end.



Product Link: Hexagon 2.5


It’s free for the remainder of February, so there is no need to take my word for it, check it out yourself.  Be aware though, once you sign up, Daz is a little spam happy.  Since signing up this weekend, I believe I have received 5 emails, in addition to the receipt and serial number emails you get initially.  A word of advice to Daz, first off, it’s really cool you have made your applications available freely and I hope you see an uptick in your market sales as a result; but dial it back on the volume of emails or you are going to be blocked as SPAM and ignored by the users you are trying to attract!


AppGameKit Studio

See More Tutorials on!

Month List