Do You Code At Home? Do You Have A Blog? Come Work At Massive!

We are hiring. Producers + IA, Coders, Graphic Designers.

Massive Interactive is one of the original pre-boom web design companies still standing. We are in Sydney Australia. We develop software solutions and visual designs and architecture for websites, front end, back end. Software, interactive television, mobile technology, video production, hardware development, coolhunting and concept development. There is nothing we can’t do and we are pretty good at it. We have so many awards we have a serious issue storing them all.

When I interview someone, I can pretty much tell within 10 seconds if you have the right personality and temperament.

As for coders, I like to hire Alpha geeks.

The most critical question for me used to be

“Do you code at home?”

Now it’s been added by

“Do you have a blog where you talk about what you code?”

I can tell more from reading your blog about your competency, ability to communicate and personality than any turgid interview process.

Then there is the issue of cultural fit.

Massive has and continues to have a strangely high proportion of Artists, DJs, VJs, Musicians, Writers and Poets.

Imagine a software, web design company founded by people into alternative music.

In the 90’s two Goths and a Hippie walk into a garage start-up….

Massive is located smack in the middle of Oxford St, Sydney the gay capital of the southern hemisphere, 20 minutes walk from the center of Sydney. If you’re not comfortable seeing displays of affection between members of the same sex while walking to work, then perhaps this is not the place for you. Our location means you may have an issue choosing between the hundred or so places there are to eat within walking distance.

Massive has a strong bike riding culture. Many people at Massive have small children.

At Massive we have a sense of humor.

massive_is_hiring.png

So I think you get the idea.

If we take your fancy, follow this link and mail your resume to work@massive.com.au.

 

 

Posted in Coolhunting, Massive | 2 Comments

I Like Circles

I’m finally on the recovering end of a bout of the flu which has forced me to not code anything fun for about three weeks.

On June 5th I bought a new Nintendo DS Lite.

After the announcement of the Wii (The console formerly known as the Nintendo Revolution) at E3’06 and demonstrations of its unique controller and the engaging game-play, the 18 month old Nintendo DS is back in the spotlight because it has a touchscreen and voice and gesture recognition capabilities that are used to great effect in many of its games.

People are giving it a second look.

I’ve spent the last three weeks going to warm warm bed early and continuing a campaign in “Final Fantasy Tactics Advance” that has been going now on and off for almost three years. I also have the DS Japanese cult hit, Nintendogs, my son loves calling to his virtual puppy every night and feeding it.

I have handed over some cash to a Russian guy for a black market DS hardware mod so I can run Linux. That’s is about as Gibsonesque as I’m planning to get this year.

I despair that you can’t hack Gameboys like you used to. For my last Gameboy hack I actually built my own EPROM burner and my own Cartridge. Nowadays the hardware and DRM makes this a bit more complicated. I’m time-poor so I’m willing leave that level of devotion up to the professional DRM assassins.

The real reason for the DS? It runs linux and has 802.11b which makes it a cheap portable wireless experimentation platform.

I’ve also been spending a lot of time thinking about circles and the Monte-Carlo Method (which is not an extravagant method of contraception, unless you spend too much time sitting at a computer playing with arcane mathematics).

Probably only one other person on the planet knows why I have been thinking so hard about circles.

And the fact that to solve some problems you really need real random numbers. πŸ™‚

Posted in Coolhunting, Downtime | 4 Comments

Twenty Minute Screen Recording Of JavaScript Macro Recorder

Nothing could stop me from putting this off a moment longer.

Here is a screen recording of my JavaScript Macro Recorder in action.

Here is a test URL for a page that has the JavaScript code embedded. Works under IE and Firefox. Safari “Real Soon Now” πŸ™‚

Add these two lines of code into your pages <HEAD> element and your page will be recordable.

<script src="http://js.metawrap.com/mw_lib.js"></script>
<script src="http://js.metawrap.com/mw_pkg_macrorecorder.js"></script>

Post a comment and tell me how long it takes to load please πŸ™‚

Latest thing to hold me back from recording this was of all things a broken finger and on top of that two days ago I got the flu.

5 days after my sons birthday party which was jam chocked with rug-rats, I come down with something. Why am I amazed?

Next year every adult gets a complimentary hazmat suit.

Every time I bump into Rachel I seem to have the flu. So far this has been a good year. I’ve gone so well and been lucky enough to only have a few days off work. I would like to be at home in bed at the moment but work is too busy.

I’ve not really had a chance to do any fun coding in the last month in the volume I would like, but I have this Monday off to relax and noodle away. I have some fun wireless gear to play with πŸ™‚

Posted in JavaScript | 1 Comment

June 6th Is JavaScript 'Array' and 'Object.prototype' Awareness Day

I want my children to grow up in a world when coding in JavaScript does not result in a fistfight.

Brendan Eich may have intended Arrays to be only numeric, but the reality is they do more, and people have explored and used them to the fullest extent.

It is arguable that people pushing the JavaScript envelope in this way have made Web 2.0 viable.

I won’t blame people for being creative.

But now we have libraries that can’t co-exist, libraries that come embedded with insoluble philosophies. 134 Ajax libraries and counting. Oh the huge manatee!

We have to lay down some ground rules or JavaScript is going bring some serious issues to the next generation of ‘Internet Applications’.

Its a little like driving and everyone agreeing on the rules of the road. If we all do this, things will get easier. Its a form of best practice. Its not arbitrary. Its a realpolitik compromise that allows everyone to get most of what they want. Some people want to extend objects for reasons of syntax and performance, others want to keep them pristine to allow libraries to inter-operate.

I propose the following rules to allow us to move forward.

#1 – Don’t use Object.prototype to extend the base ‘Object’.

Feel free to play with any other builtin type. ‘Array’, ‘Number’, ‘Boolean’, ‘Date’, ‘Regex’,….  but leave ‘Object’ alone.

Dean Edwards sums it up best.

“Extending native objects is a good way to provide backward compatibility for older browsers (e.g. providing push/pop for IE5.0). If we canΒ’t do this then we are stuck with only the basic features of the language.

Extending Object.prototype is another matter as then we are left with no object that we can use as a hash.”

#2 – Don’t use ‘Array’ for an Associative Array

Use ‘Object’ or people will come and take your Arrays away from you.

Anything that extends Array via Array.prototype will break for(in) loops. Because we are leaving ‘Object’ alone, we can use it as an Associative Object.

var x = new Object(); // var x = {}; will work too
x["a"] = "A";
x["b"] = "B";
x["c"] = "C";

It works. Try it. Now.

Now, I have seen lots of code in the wild that does use for(in) to iterate an ‘Array’. It does seem to be a natural and forgivable thing for a programmer to do seeing the term is normally taught is “Associative Array”, not “Associative Object”.

Good reference sites give examples that use ‘Array’.

We are choosing to stop this practice.

#3 – There are two types of Library ‘Primary’ or ‘Secondary’

We are still going to have issues if two libraries choose to extend Array and add the same named method (eg. Array.prototype.sortbyname). The more likely pattern is that you are going to use a ‘primary library’ (prototype, dojo, yahoo etc…) with a group of other smaller scripts. (secondary libraries) that just do one thing well.

If you are developing a secondary library, avoid extending the base types. The primary library will enforce its philosophy via its extensions to the base types. A ‘secondary library’ should just do one thing well without having to change the fundamentals.

With the above guidelines we should be able to mix as main secondary libraries together as we want with at most one primary library.

Mixing primary libraries together is going to be hit and miss.

#4 – Port code that uses ‘Array’ for Associative Arrays

Port it to use ‘Object’, Send it back to the author with a link to this blog post.

Try using the new iterators that are built into JS1.5 and above.

The sooner that we fix these libraries, the better.

#5 – Write JavaScript Tools That Warn Of Rule Violations

Anyone writing JavaScript debuggers or JavaScript/HTML editors should add functionality to warn users if they see Arrays being used as Associative Arrays, or Object.prototype being used to extend Object.


Can anyone think of anything else or improve on the above please?

Posted in JavaScript, Rants, Web2.0 | 3 Comments

Mashup That Uses Blogger and del.icio.us APIs For Backend Storage

Thanks to Dom for pointing this out to me.

Check out this screen-recording of a demo Flash Flex application called NoteTag.

The application uses Blogger and del.icio.us as a back-end for storage. Blogger is used to store objects and del.icio.us is used to store associations between them.

This is on the same meme as using your Gmail account as a virtual hard drive where the API is being used for something other than what it was intended for.

Good to see that people are starting to do this. This is relevant to me because the MetaWrap project is all about wrapping these kinds of API’s into an accessible registry and Meta-API. More about this later πŸ™‚

Posted in MetaWrap Server, Web2.0, XML | Leave a comment

Bikely – A Bike Route Sharing Google-Maps Remix

Thanks to Damian for pointing out this site.

Now that Google maps works properly in Australia, someone has built http://www.bikely.com/ a very nice Google Maps mashup that allows you to share your favorite bike route. 

The behind the scenes story is that it was the result of a 4 day marathon coding effort that started right after Google switched on street maps for Australia.

I love it. Simple, sweet, Does one thing very well.

Posted in JavaScript, Web2.0 | 1 Comment

The Internet Background Radiation – A Billion Little Virus Tipped Arrows Snuffling For Unarmoured Flesh

Ever since the mid 90’s when I first started getting unwanted packets arriving on my networks, I’ve been keeping an eye on what has been named the “Internet Background Radiation” (IBR).

Analogous to the real world background radiation that constantly zaps through our bodies, IBR is the constant hiss of seemingly random packets that arrive at your computer every second.

At first, the origin of these was mistyped commands or misconfigured programs. You could make new friends by emailing root@someaddresscom when a weird packet arrived from someaddress.com.

However after the internet worm we all knew what the future would bring.

About ten years ago the majority of the traffic was from automated scripts and scanners that would scan for open doors and systems with known vulnerabilities. Applications such as war-scanners that a script kiddy could run that would scan entire countries for vulnerable or interesting machines. A modern war-scanner is not constrained like war-dialers were in the speed at which a modem dials and connects (~45 seconds). On a good connection, tens of thousands of machines can be probed every minute.

All I see nowdays is a storm of packets from popular self replicating trojans and worms slamming against my firewalls.

A billion little virus tipped arrows snuffling for unarmoured flesh.

I own two class C domains. This means that I look 500 times larger than the average user. (No fat jokes please.)

Each IP address I own attracts ~200 kilobytes of IBR per hour.

That’s 4.8M per day.

1.7G per year.

With over 500 IP addresses that makes almost 1T per year of unwanted traffic.

Now If don’t count all the machines on the internet hidden behind NAT firewalls, my 2 Class Cs make up just ~0.000012 % of the entire real internet address range.

But keeping conservative on this – if every real IP gets the same amount of attention as my networks, this would mean close to eight thousand terabytes of internet background radiation every year across the entire internet.

Be afraid.

Posted in Downtime, Nostalgia for Misspent Youth, Rants | Leave a comment

Neat Browser Size and Position Manipulation Trick

Simple and effective comic sketch (video) in which your browser plays a role.

http://www.circoripopolo.be/comicduo/

Posted in Coolhunting, JavaScript | Leave a comment

I Got Slashdotted Again

Our network admin is giving me “that” look.

Normal service will be resumed as soon as possible.

Posted in Downtime | 4 Comments

How Not To Say 'Um'

Its obvious from listening to my first screen recording that there are three things I need to improve when it comes to doing a recorded demonstration of software.

#1 – Stop saying ‘Um’.

I lost count at 10.

Obviously I don’t mean to say this word at all, its unconscious padding added to provide time to formulate a thought and to signal to a listener that ‘we are still talking, please don’t interrupt’.

I say ‘um’ because it signals my intention to keep talking having stopped to think about what I want to say next.

‘Um’ is the conch.

Sounds like I need to pretend that I am talking to a machine that can’t butt-in .. oh – hang on…. πŸ™‚

I went looking for words of wisdom on the net on how to stop saying um.

It all seems to boil down to practice, and being so prepared they you don’t need to think.

I also found someone In defense of ‘um’

Jean Fox Tree: I believe these attitudes towards the hallmarks of spontaneous speech are unjustly negative. Instead, I think that spontaneous speech is the way it is because it helps us communicate better, not worse. Given that we don’t have our ideas planned out carefully in advance, and given that even if we did we’d have to make sudden adjustments based on what the other person we’re talking to says, words like um and uh, I mean, well, and even long pauses or repetitions might help us organize our ideas, correct errors, and provide signals to our listeners about how they can best follow our trains of thought.

http://www.alumni.ucsc.edu/dept/foxtree.article.html

 

#2 – Don’t yell “Bam!”

It scares Micheal Air.

 

#3 – Prepare More

Borrow from pod-casting lore and produce simple show-notes. At least a list of what I want to demonstrate.

If I don’t need to think about what I am going to say next – less chance of saying ‘um’ to signify that I am thinking.

 

 

Posted in Me Myself and I | Leave a comment