Skip to main content

Posts

Showing posts from 2010

2010 Rundown by Jaime Bueza

2010 has been a great year. Here's a rundown of the things I did.

* Gave an introductory talk on NodeJS to the front-end team at Blast Radius
* Explored test automation with Selenium and NodeJS using SodaJS + Kyuri
* Created a free cross-platform app built on PhoneGap (CoffeeCheck.In)
** Iteration 1 Video
** Iteration 2 Video
* Contributed to the HTML5Boilerplate (Pull Request 209)
* Learned NodeJS (Express, npm, etc)
* Learned MongoDB
* Learned CouchDB
* Read "The Fifth Discipline" by Peter Senge
* Read "Getting Things Done" by David Allen
* Read "Rework" by Jason Fried
* Read "The Mythical Man-Month" by Frederick Brooks
* Read "Peopleware: Productive Projects and Teams" by Tom DeMarco and Timothy Lister
* Read "The Tipping Point" by Malcolm Gladwell
* Built a NodeJS Pokemon demo with HTML5/CSS3/JS/WebSockets
* Built a jQuery Omniture plugin
* Released a more sane way of doing IE6 Warning with localization
* Released B…

How to push forward as a large software development corporation

The Art of War has taught us that when a skilled general decides on a strategy to execute on, they either move quickly, or stay in a position that yields a tactical advantage over his/her enemy. Incidentally, we can apply the same concept in corporate culture. If you take a second to disconnect yourself from your environment, zoom out to a birds eye view, you'll realize how really slow your team is progressing in comparison to the rest of the world.

Naturally, human beings can only see what is in front of them and they need to be constantly reminded of where they are and how they're progressing within their environment. That said, dispelling the blindness of corporate software development is like fighting against an enemy on his own turf and consistently having a positional disadvantage.

The question we keep trying to explore is: what can we use as leverage against such a tough and determined enemy? This is a vicious opponent that not only flattens the spirits of your teammat…

Ideas are useless without proper execution

So stop saying you have ideas and start executing.

Good luck and have fun,
Jaime Bueza

Jaime Bueza is a software developer in Vancouver, British Columbia, Canada. He has developed web applications for Nintendo, Starbucks, Electronic Arts, Ritchie Brothers, Kiwi Collections, Cox Communications and Microsoft. When he's not developing useful software that constantly evolves with business requirements, he's creating tutorial videos for aspiring front-end developers.

Advertising companies need to catch up with how the Web platform is expanding. Location-based services is the next natural step

Mobile app spendings are consistently increasing as we push forward into the future. Incidentally, there are advertising agencies that are still stuck on desktop customer experiences. The future is going mobile and I feel like Apple is the only company that is scaling with the growth of Mobile advertising with iAd.

The biggest trending mobile web services at the moment are location-based. FourSquare and Facebook Places aim to drive local advertisement throughput by being able to notify users which locations are hot and which are not. From fine dining to parties--location-based services will shape our reality by changing our views on our local environments. A simple use-case would be if I were in the area and one of my Facebook friends was at nearby Coffee Shop that I've never gone to before. I would be inclined to meet up with my friend and grab a coffee. Since I've never been there before, I would be rewarded with a badge or an achievement (FourSquare).

A simple reward syst…

Building teams based on passion

After being in a meeting on how to increase team effectiveness and increase the quality of the products we're trying to build, I thought of the process of building teams based on a common passion.

Diving deeper, have you ever met a creative person that loved designing social networks? What about a designer that loved creating interfaces on Mobile platforms? Have you ever met a developer that loved building software that connects people? Why is it that teams in the agency realm with multiple disciplines can't grab a group of people who have a common passion. This is totally different from basing it on "skill set". It's about what they love to build. For example, my skill set ranges from backend (multiple databases, multiple integration languages, localization) to frontend (html, css, js) on different platforms like web and mobile; however, I love building social networks on mobile platforms and how you can integrate with different 3rd party services like Flickr, F…

What was your first programming job and were you qualified?

My tale starts when I went in for a job interview at the Vancouver Film School. The position I was applying for was "Intermediate Developer" -- Something I was completely unqualified for. The role of an "Intermediate Developer" would be to write internal applications on a LAMP stack and support the Senior Database Developer with any database scripts for different departments (admissions, human resources, accounting, etc). My first interview was a generic HR meeting. Incidentally, I studied everything about the different programs of VFS prior to meeting with HR and she asked me, "so what do you know about Vancouver Film School?" -- Boom. I recited everything that was on Wikipedia. I even listed out all 10+ programs from acting to game design to entertainment business management. I felt like I completely dominated that interview.

That very day while I was on my way back to BCIT to finish off a project, I was called in for another interview the following da…

Unionization for Developers and Designers

There was a time in the past where I actually thought developers and designers would benefit from unionization. I realize now that it would shape a devastating reality to the overall advances of technology and design. Unionization would paralyze our ability to innovate because the level of protectionism inherent in unions encourages laziness.

By looking at different disciplines, such as, carpentry and construction, we can observe that there hasn't been any real innovation in toolsets. Carpenters still do not have any robust tools that'll make their jobs 100x more convenient. I compare that manual labour to a programmer writing in binary just to build an eCommerce site. It is puzzling how other technology sectors have little to no progression. Another example is economic airline technology--20 years ago we had super sonic jets and now we're stuck with slower airplanes. How do they fix this problem? They improve the fuel efficiency in the engines. Aircraft technology needs …

Leadership

Words by Lieutenant General Hal Moore:

There are four principles in leaders conduct in battle. First is three strikes and you're not out. There's 2 things a leader can do, either contaminate his environment the unit with his attitude and actions or he can inspire confidence. He must be visible on the battlefield. He must be in the battle. Self-confident, positive attitude, must exhibit his determination to prevail no matter what the odds or how desperate the situation. Must have and display the will to win by his actions, his words, tone of his voice on the radio and face-to-face, his appearance, his demeanour, his countenance, The look in his eyes, he must remain calm and cool--no fear. He must ignore the noise, the dust, smoke, explosions, screams of the wounded, the yells--the dead laying around him, that is all normal. Must never give off any hint or evidence that he is uncertain of a positive outcome even in the most desperate situations. Again, the principle that must be…

Why Boxing Is In Decline And Solutions To Increase Viewership

After watching tonight's fight between Manny Pacquiao and Antonio Margarito, I decided to explore why boxers are able to duck out of fights (Mayweather). The boxing federation, as a company, has it structured all incorrectly. In all honesty, boxing is in a state of decline and the only real way to re-energize the fans and really get some growth in the boxing community would be to revise the fight policies.

In the UFC, fighters are employees. The organization constitutes regular fight schedules so that the fans of the sport can be assured consistent fights (something to reliably look forward to). Conversely, in the sport of boxing, fighters are treated as separate companies where they're able to decline fights and employ an army of lawyers to ensure they win negotiations.

While Floyd Mayweather is able to stir up the declining boxing fans with his ridiculous galavanting and trolling in the short term--the long term integrity of boxing as a sport suffers. Slowly but surely fight…

Has Ajaxian Gone Down Hill?

Recently, Ben and Dion (the main guys who started Ajaxian) have left Ajaxian's helm to concentrate on other projects. One thing I've noticed is that they've reduced the frequency of posts to about three times per week. Prior to Ben and Dion leaving, there were sometimes 2 posts per day. Furthermore, since the articles on Ajaxian aren't that interesting, I've gone ahead and subscribed to Dion Almaer on twitter. Dion posts about 10 tweets a day on average with really interesting works out there in regards to front-end development.

Twitter is the #1 source for technology and design trends. I barely even open reader.google.com anymore as 140 character tweets can be more informative than walls of text.

Good luck and have fun,
Jaime Bueza

Jaime Bueza is a software developer in Vancouver, British Columbia, Canada. He has developed web applications for Nintendo, Starbucks, Electronic Arts, Ritchie Brothers, Kiwi Collections, Cox Communications, and Microsoft. When he's…

Job Hunting Tips for New Developers Out of University

Open Source projects on your resume are more important than your co-op or education. I've seen brilliant developers that shatter walls of constraints by being strictly committed to the vision of the project. If there was ever an issue that constrained the team's ability to move forward, there was always that developer hero that would step up to the plate and do what he could to resolve the issue. These types of developers don't play by the rules of the game. They change the game.

Software development companies don't want drones. Drones are people who have jumped through the hoops, ran the courses, and are ready to get paid. Drones aren't creative, confident, or committed. Once a company starts to accumulate too many drone programmers, your company starts to grow "corporate arthritis". Corporate arthritis paralyzes your company's ability to deliver your products efficiently with a degree of quality and reduces your company's ability to keep your cu…

Distributed Development / Divorced Software Development

In an attempt to dispel the level of optimism in distributed teams: I'd like to negatively state that divorcing your team like this is the worst way to achieve team efficiency and sustain a high level of quality in your products. None the less, it still happens project to project. I've bounced back and forth between teams where we've stuck in pods (all in one common area) and some where I'm dealing with teammates in a different continent. Sadly, most of the projects that have somehow dwindled down the path of hiring cross continent resources have been the most stressful.

It's not the people that cause problems. As a matter of fact, the team is usually composed of wonderfully talented and smart people -- It's the ineffective communication channels that get incorporated into the delivery process that ultimately divorces team/client expectations.

My primary concern about distributed teams is that upper management fails to see the overall picture of software deliv…

What If

Have you ever asked yourself "what if" when you reach a point in your life where you could've acted on an opportunity? I've been an evangelist of the following quote: "you miss 100% of your shots you don't take". After having this ingrained in my mind for so long, I've come to realize that I am almost always disappointed with myself. Every opportunity I take advantage of, I'm always disappointed--It's like I constantly become blinded: I look at the situation negatively and see how I could've done things better. I feel like a plethora of opportunities lead to an infinite loop of disappointments.

Do I need to dispel my blindness and take the time to cherish the small victories in life? or learn to let things go when mistakes happen? Do I need to stop consistently blaming myself for anything that goes wrong in life? Do I need to sink back down to reality and accept the fact that "I can't always be the hero"?

An endless list o…

Mentors

In my life quest to figure out the deeper arcanes of social dynamics and emotional intelligence--I've taken notes on patterns of behaviour and characteristics in most great leaders of our time. Frequently, I hear the phrase, "person of integrity" being used to describe leaders.

What does it mean to be a person of integrity?

Wikipedia has the following definition:

Integrity is a concept of consistency of actions, values, methods, measures, principles, expectations and outcomes. In western ethics, integrity is regarded as the quality of having an intuitive sense of honesty and truthfulness in regard to the motivations for one's actions.
Reflecting on my own career--I've been very fortunate to have been led by great individuals that exhibit the level of integrity that Wikipedia describes. In all honesty, my leaders have always been great mentors: they've taught me how to react to situations, how to be as technical as I am today, and how to communicate effective…

Adding and deleting git tags

Adding a git tagCommon Case:
Johnny is the developer on a project that is about to go-live. Their codebase has passed all unit tests and functional/behavioural tests from QA. Before going live, he needs to tag the current revision so that his whole team can easily backtrack and possibly fix any last minute bugs before launch but also make it so that his team can also keep pushing code to the master branch.

Create the tag:$ git tag -a v1.0.0 -m "2010-10-10 Production-Ready"

Double check which tag was created:$ git describe --tags

Push tags to your repository$ git push --tags

Deleting a git tagCommon Case:
Johnny accidentally created a tag called "v1.9.0" instead of "v1.0.0". He needs to simply delete this tag so it doesn't confuse other developers.

Delete the tag$ git tag -d v1.9.0
Push the deletion of the tag to your repository$ git push origin :refs/tags/v1.9.0


Good luck and have fun,
Jaime Bueza

Jaime Bueza is a software developer in Vancouver, British Col…

Why We Still Need Heroes

History has proven time and time again that the world needs heroes. People who are helpful, selfless and dedicate themselves to a cause--a high level initiative. In the realm of software delivery, where you have to ship a product on a tight deadline, you often face burnouts and frustrations--a seemingly impossible uphill battle. That's why you call on your heroes...

Horatio Hornblower was a British admiral full of integrity, courage, and intelligence. He fully understood the potential and limitations of his team. Without any hesitation, he answered Britain's heroic calling to engage Napoleon head on.

While waiting at his Mediterranean rendezvous point for the rest of his squadron—and its commander—to arrive, he carries out a series of raids against the French along the south coast of Spain. He learns that a French squadron of four ships of the line is loose, having slipped the blockade. He decides that his duty requires that he fight at one-to-four odds to prevent them from en…

Understanding Your Team

Have you ever been put on a team that is so brilliant and talented and somehow the project is frustrating to deliver? I've come to realize that when working with a team of great people, there needs to be a level of transparency and level of understanding of what we're trying to build as a whole. In the agency realm, typically you'll have 4 disciplines working together to ship a website:

1) Design (Creative)
2) Development (Frontend and backend)
3) Client Services (Project manager)
4) Quality Assurance

My evolved thinking has brought me to the conclusion that there can't be such a thing as blame. Understanding the delivery as a whole will help dispel the shackles of each discipline. Furthermore, each member of a discipline should fully understand how much of an impact their decisions will make on another part of the system. For example, a designer can choose to break consistency by readjusting the website's grid on a particular page. This would have a negative impa…

Random Thought at 1am: Treating People Like Human Beings

I've changed a lot since I came out of post secondary.

When I first came out of post secondary (BCIT), I was a driven, dedicated, and passionate knowledge-hungry kid that wanted to tackle each and every challenge on my path to glory. After developing my technical skills, I solidified myself as a maven for writing great code and building great software. Negatively, on my career path, I came across many different people that end up not treating me for who I am. In my past, I've been often labeled as a "kid" or "inexperienced codemonkey" in the workplace. I believe that if someone wants to label me as that then they can--it's completely their opinion; however, someone shouldn't be completely ignoring my technical opinion because of the limited number of years I've been programming--That's ageism.

One thing that holds true about technology and design is that everything changes so fast. "Highly experienced developers" can legitimately b…

Why You (As A Developer) Should Question Technical Decisions

Many times throughout my career I've seen software developers take a lot of pain from their leaders. Throughout history, "leaders" have always been personified as an unstoppable wave in the ocean that everyone rides along with. One way--one direction--one man/woman's goal. A "leader" is the entity which has the final word. To some degree, I can't picture myself blindly following a leader without questioning his or her decisions--There has to be a reason for everything. Furthermore, you (as the developer on a team) should be asking "why" certain technical decisions are being made in specific situations. Positively, you may even end up saving a high degree of effort for your team just by having your leader realize how much of a bad mistake his or her decision was.

Decisions from a technical standpoint should always be strategic. One should always aiming for a goal to achieve and one should always have to look for key people, abilities, or event…

The State of 4N/WebSockets and NodeJS Hosting

4N + WebSocketsFor anyone that wants to develop on a 4N (Not Windows, nginx, NodeJS, NoSQL) stack, I've come up with a list of gotchas that you will eventually run into when developing your applications.

nginx does not support web socketsIf you're building an application that will require WebSockts for full duplex bi-directional communication between the client and the server, you're sore out of luck as nginx doesn't support the WebSockets protocol (ws:// for normal, wss:// for secure) yet as of September 2010. Based on the discussions on the NodeJS Google Group, some have gone out to say that NodeJS shouldn't be out in the front. For clarification, nginx is a battle-tested Russian event driven web server that powers high traffic sites like Wordpress, Hulu, Github, and SourceForge. By using a single master process, it is able to easily handle 10s of thousands requests by delegating to worker processes. Each worker handles multiple requests in an event-driven or asy…

Why the web evolves so slowly in comparison to other industries

In technology, in one way or another, you will run into specific individuals that just don't care about their jobs. I've had to chance to see them infest my beloved discipline: software development. Time and time again, I see them dodge bullets from upper management by talking their way out of specific things that are too challenging or too lazy to take ownership of.

I work in web development: my role is to to develop cutting edge user interfaces, produce engaging online experiences, build intuitive software, and be a passionate technology leader. I've come to realize now after working in the agency business for so long that there are too many people that just don't care about the software they are actually building for their clients.

I've talked with several other developers from different companies and it appears to be the same. Consequently, I believe that the reason why we're forced to code like a drone is because a majority of other disciplines in the bus…

NodeJS Hack Session: MMO Pokemon with NodeJS/WebSockets

The primary focus of this proof of concept is to determine how easy it is to build real-time web applications for all iPad, iPhone, droids, Safari, Chrome users on top of NodeJS (non-blocking event driven server side Javascript platform). The proof of concept was built within 6-8 hours including the following:

Uses Express framework for server side Javascript development (inspired by Rails / Sinatra / Django)Uses EJS for templating language (much like Django templates and symfony) -- allows partials and passing parameters into partials like symfony PHPReal-time chat using WebSocketsArena Queueing System for real-time competitive matchplay using WebSocketsHTML5 AudioCSS3 transitions for all hand cards, tappable cards, transparent panels, rounded corners, drop shadowsFallbacks for Firefox, IEFirefox/IE will fall back to Flash socketIE will fall back to XHR long poll if the user doesn't have Flash installedNoSQL CouchDB for fetching users and soon cards, achievements, friend associat…

SimpleYUI, thoughts on NodeJS development

I've been a huge fan of YUI for a few years, even back when they were named YUI-Ext. Recently, they rolled out SimpleYUI. When asking other web developers why they don't like YUI, they say, "their package system is too complicated" or "you can't just start accessing the DOM by including the library easily". Incidentally, back in the day, it was far worse--YUI didn't even have a selector engine until they ported someone else's into YAHOO.util.Selector (remember this guy?). This design flaw in the library is probably what cost them in terms of people adopting YUI. As a developer, you want a consistent way of doing the most common things (dom access).

Back in the day, you would have to call YAHOO.util.Dom.get(element or string for ID of element). This was terrible because they introduced YAHOO.util.Selector.query(cssSelector) right after and soon developers were choosing between fetching DOM elements by selector or by ID. MooTools has the same pro…

Develop to Developer: What is Passion?

Passion is what makes someone truly great. You can see just from glancing at a developer's application that an extensive amount of passion went into his or her work. Passion is not something you can forcefully create or define but you know it when you see it. Sometimes passion is misdirected into building things that are harmful to others. Sometimes it is the determination of one that makes a creation so great. Passion makes a person a hero, it makes a villain evil, and it definitely makes a front-end developer a true Ninja.

Passion makes software memorable. Passion awakens theoretical design and entangles us in its practicality. Passion is the engine that drives inspiration and ingenuity. I often wonder how technologically advanced the human race would be if it wasn't for some of the most passionate inventors of our time: Einstein (relativity), Edison (light), Arnold Schwarzenegger (bodybuilding)? People often ask me why I'm constantly trying to find newer, effective so…

IE6 Downfall Is Coming, The Nail in the Coffin for IE6

The tides of darkness are slowly subsiding. I've come from a generation of front-end developers that have had to deal with every single IE6-related layout or JS bug in the book. Incidentally, I've been looking at the latest browser statistics on W3C and although your particular client may have more IE6 users, we can't deny the fact that the IE6 unicorn is about to die off in the coming years. It is happening. The day that I thought would ever come is edging closer and closer as I look at these web browser usage statistics.

My current client has mandated that all their sites drop IE6 support. This is a client that pulls in a huge amount of traffic hits a day and anyone who visits the site on IE6 will be thrown this message: http://code.google.com/p/ie6-upgrade-warning/.

This brings me to my question: are IE6 heroes needed anymore with declining usage? Do you remember the days when a client wouldn't launch the site because of IE6 performance issues? Do you remember when…

Blizzard Real ID to expose personal information of users on forums

Recently, we introduced our new Real ID feature - http://www.battle.net/realid/ , a new way to stay connected with your friends on the new Battle.net. Today, we wanted to give you a heads up about our plans for Real ID on our official forums, discuss the design philosophy behind the changes we’re making, and give you a first look at some of the new features we’re adding to the forums to help improve the quality of conversations and make the forums an even more enjoyable place for players to visit.

The first and most significant change is that in the near future, anyone posting or replying to a post on official Blizzard forums will be doing so using their Real ID -- that is, their real-life first and last name -- with the option to also display the name of their primary in-game character alongside it. These changes will go into effect on all StarCraft II forums with the launch of the new community site prior to the July 27 release of the game, with the World of Warcraft site and foru…

Blast Mojo Tutorial (Episode 4): How to use Publish/Subscribe with Mojo's Messaging Behavior

Publish/Subscribe is implemented in many applications and games as it is best
practice for keeping code loosely bound essentially increasing its level
of refactorability. In modern day web applications, your client keeps
requesting new features and you as the programmer need write code in a way
that will keep up with evolving business requirements.

I have a few blog entries written but I'm going to space them out more and release them
on a set schedule. Other than that, I've been having a lot of fun with my weekly sprints (self-disciplined coding) and Javascript tutorial videos.

Good luck and have fun,
Jaime Bueza

Jaime Bueza is a software developer in Vancouver, British Columbia, Canada. He has developed web applications for Nintendo, Electronic Arts, Ritchie Brothers, Kiwi Collections, and Cox Communications. When he's not developing useful software that constantly evolves with business requirements, he's creating tutorial videos for aspiring front-end developers.

Basic HTML 5 Audio Example on Github

Adding to it, I'll be integrating those sounds into a clone Javascript game. You can guess what that game is by the sounds I used! :) Here it is: http://github.com/jbueza/Basic-HTML5-Audio-Example

Good luck and have fun,
Jaime Bueza

Jaime Bueza is a software developer in Vancouver, British Columbia, Canada. He has developed web applications for Nintendo, Electronic Arts, Ritchie Brothers, Kiwi Collections, and Cox Communications. When he's not developing useful software that constantly evolves with business requirements, he's creating tutorial videos for aspiring front-end developers.

Dispelling Laziness, Getting Things Done, Helping non-programming programmers

I'll do it later. - Mr. Procastination
After reading Getting Things Done by David Allen about 3 months ago, I've become a productivity machine. I've evolved from working 9-5, sleeping early, being able to do programming sprints every month to doing sprints every week, starting my own YouTube channel, writing for several blogs on productivity/gaming, and engaging myself in a healthy lifestyle by going to the gym and sustaining an unforgiving 2000 caloric intake. What does it take? The answer is simple: discipline and passion.

I have to admit that when I first started this blog I wrote in a very robotic tone (much like the Architect from the Matrix). I've dispelled that and decided to take the direction of this blog to a more casual tone. I was listening to the Internet Business Mastery podcast and they talk about how the tone of your blog should always be as if you were talking to a person at a nearby coffee shop. This intrigues me so much and it purges the thoughts of…

Upcoming Javascript Sprint Projects

I haven't contributed to Github for a while now since I've been so submersed in work lately. I'm planning an upcoming Javascript sprint this weekend to hopefully tune my level of Javascript architecture, work with an exciting new feature (audio, video controller in HTML 5), and refuel my inspiration for front-end technologies.

Lately, I've been thinking about a pluggable Audio Controller for HTML 5 web games that can take into account character movement, character responses, and music tracks. The more I think of it, the more I get inspired to get started but I have this huge list of things to pencil out:

How does the native audio support in modern HTML5-capable browsers affect the performance of the application?Can I lazy load audio tracks by dynamically injecting the audio track into the DOM?Can I programmatically set auto buffering?Can I observe the audio object in question and hook into its events with Blast Mojo?Can audio objects play at the same time? or do they ge…