Senior Flex/AS3 Engineer Wanted In Research Triangle Park NC

I don't post too many jobs on my blog, but this specific job is with a really cool company and (more importantly) working for a really cool manager named Isaac. I used to work for Isaac and he is a really good manager who knows how to let technical people be superstars.

This position is full-time, full benefits and on-site so please keep that in mind when you apply. You'd be right in the thick of Research Triangle Park, Raleigh, Durham, Chapel Hill, which is a great area, even ranked in the top 10 by Rolling Stone for the music scene. Oh, and Hey! We'd be neighbors.

If you are interested in applying for the position, simply drop me a quick note and let me know. I'll make arrangements to get your resume. No agencies please.

Here is the information for the company:

Digitalsmiths provides the industry's only studio-grade, video monetization solution with an advanced metadata framework that empowers digital media companies to distribute and publish video content across multiple screens, open up new revenue streams for film and TV assets, build audience, increase viewer consumption and boost audience engagement.

Digitalsmiths full time employees receive comprehensive benefits including stock options, vacation time, sick time, paid holidays, Blue Cross and Blue Shield health insurance, life insurance, disability insurance and retirement program. We have a relaxed, open and collaborative work environment where both achievement and fun are valued and everyone plays a key role.

The Research Triangle Park area is a great place to live, work, raise a family, and enjoy life. The area is within a couple hours drive to both the Blue Ridge Mountains and the Atlantic Ocean. Our natural beauty is a boon for the outdoor enthusiast. There are typically 220 days of sunshine per year with rain being well distributed throughout the year. There are award winning restaurants, as well as, a good variety of art, music and entertainment. Please visit http://www.digitalsmiths.com to learn more about the company.

Here is the information for the position and desired skills:

The Senior Software Engineer position reports to an Engineering Team Lead or directly to Engineering Management and is responsible for designing and implementing software products and services. Candidates should have a Bachelors Degree in Computer Science related technical field of study plus at least three years of work experience using Flex/ActionScript. Five years experience with software engineering and familiarity and desire to work with Flex/ActionScript may be accepted in lieu of three years of experience with Flex/ActionScript.

All candidates must be comfortable working in a fast paced early stage environment with tight deadlines.

The main duties of this position are as follows:

  • Deliver engaging, state-of-the-art, high quality products.
  • Design and implement product initiatives under general supervision.
  • Produce accurate estimates and participate in daily task tracking activities.
  • Adhere to core design, development and testing principles set by team and group leadership.
  • Produce clear and thorough technical documentation.
  • Other duties as needed.

Job Requirements and Qualifications include the following:

  • Demonstrated expertise in AS3, Flex, MXML, and the Flash runtime.
  • Demonstrated competence in at least one programming language other than ActionScript.
  • Experience with Object-Oriented Programming and Design.
  • Excellent written and oral communication skills.

Other Skills and Technologies that are desirable include:

  • Experience with MVC (e.g. Cairngorm, Mate, PureMVC, Spring).
  • Knowledge of software design patterns and architecture.
  • Experience writing Flex custom components.
  • Experience with Web service development using AMF, SOAP, REST, XML-RPC, and XML.
  • Experience with Unit Testing and Continuous Integration using Flex in a team environment.
  • Experience with media player design using Flash and ActionScript.
  • Experience with Digital media (FFMPEG, FLV, MPEG4, MP3, AAC, WMV, 3GP, etc.)
  • Experience with source control (SVN is a plus).
  • Experience with bug tracking/defect management (Bugzilla is a plus).
  • Exposure to agile development (SCRUM, Lean).

5766 Views Print Print Comments (0) Flex

Why I Don't Have A Gym Membership

While I was at the Velocity conference in San Jose, I spent daily time in the very well equipped gym at the Fairmont Hotel (at the urging of the ultra fit Mike Brunt). In a few short days of daily regular exercise, I could feel the difference. Returning back to Raleigh-Durham, I thought I'd go get a Gym membership and make regular workouts part of my daily life.

I decided one reason I was a faithful attender of the hotel gym was its proximity to my room. I could be in the gym in 2 minutes, so I figured whatever gym I chose back home should have reasonable proximity to my house. Luckily, there were two well equipped gyms within a 3 mile radius. I set out to visit each.

Between the two gyms, there was no real difference. One was 1 mile from the house, but older. The other was 3 miles from the house but newer. In the end, I could have cared less which. Both would work.

The sticking point came to the contract. A Gym contract is a lot like a cell phone contract or like buying a used car. For some reason a gym really really wants you to sign a year long contract, with checking account auto-draft and littered with all sorts of strange clauses compounding the difficulty in fulfilling the terms of the contract. For example, auto-draft. I'd rather not pass over my checking account information to a gym so they can take money out whenever they want. I use credit cards because there is liability protection. A checking account is real money! Secondly, there was a proximity clause stating I could cancel the contract if I moved 30 miles from the gym. The proximity clause was the deal-breaker.

Proximity Clause, you ask?

In the contract is clause stating you can get out of your contract if you move 30 miles from the gym. Frankly, Shannon and I have been actively looking for houses since February and there is a fair percentage we'll actually find something we like and want to live in. This process could take a few more months, or might not happen at all (I hear the economy sucks). I've not wanted to use the 'we are house shopping' as Yet Another Reason To Avoid Going To The Gym, but the fact of the matter is, moving is on the table and our target area is about 20 miles away.

Should we end up moving, we'd be expected to still attend the gym (or at least, keep paying for it). Frankly, I'm very uninterested in driving 20 miles in the wrong direction through traffic for a gym. So what do I do? They did offer me a 'month to month' membership for 3 times the cost, but my health really isn't worth 90$ monthly, now is it? So I'm stuck. Is this a normal gym membership experience? Do I have options?

How To Use Gmail to Tame Runaway Mailing List Messages

I am on a lot of mailing lists. "How many?" You ask? I'm on 27 mailing lists as of right now. Most are low traffic so I can quickly scan the headlines and decide whether to read or remove. Some mailing lists are higher traffic and prone to extremely long (100 message) threads. These threads are rarely useful to me mostly because this exceptionally long thread count is pretty much only reached when 2 strong, anti-social personalities engage in a meaningless form of combat called Message of Attrition. Message of Attrition is like the arm-punch game you played as a kid. You know, the one where you punch someone in the arm, then they punch you in the arm. The cycle continues until one person realizes the sheer stupidity of the exercise and quits. The quitter walks away feeling intellectually superior. The 'winner' walks away feeling physically superior.

Is this the first you've heard of Message of Attrition? Can't say I blame you, I made up the term a few moments ago, mostly because I had a sentence that needed a clever ending.

So anyways, I used to get really annoyed by these long pointless message exchanges, mostly because I'm afflicted by a form of neurosis called InboxMustBeAtZeroitis. This condition affects countless numbers of our society and causes them to occasionally trigger a compulsion to unread/delete/read all email the second it comes in. We're doing a fund raiser right now to help those poor souls with the condition. To donate, please hold your credit card up to the screen...

Thankfully, the GMail folks have provides a calming balm for InboxMustBeAtZeroitis in the form of Mute. Have you ever wished your remote control worked in real life? Have you fantasized at pointing your remote control at a stubborn red light when no one is using the green side? If so, then Mute is for you. Here's how it works:

  1. Simply open a message (or use the checkboxes to select several messages)
  2. Drop down the More Actions control
  3. Select Mute
  4. Say "serenity now" three times, and feel the calming peace return to your body...

There, wasn't that easy?

Want to learn more about Drag and Drop in Flex?

Douglas Knudsen is talking about Drag and Drop in Flex tonight on the Flex Meetup. If you are a Flex developer or want to learn about Flex development you should go watch his presentation.

You might remember Douglas from our interview on the CFConversations Podcast where Douglas shared lots of good information about how to hook up ColdFusion to Flex. He is an interesting guy, excellent presenter and really knows his stuff!

See you there!

5775 Views Print Print Comments (0) Flex

NC Conference - New Date Proposed

Planning for the NC ColdFusion conference is in high gear. We got excellent feedback on the conference dates/details from both speakers and from attendees. Most importantly, we realized our proposed date accidentally collided with the BFusion/BFlex conference. The Bfusion/BFlex conference is our inspiration for the NC conference. Bob Flynn, conference organizer, and others, have been very supportive of the NC Conference and we want to show our respect by not scheduling on the same day as them. Thus, after much discussion, consultation of calendars and the like, the new proposed schedule is Oct. 17-18th.

If we can make Oct. 17-18th work for the community, then we'll move ahead with that. Our next chance would be to do something in the Spring. (Or raise the price and do it in the Bahamas in winter :) )

The other option on the table is whether to provide a second day of training on the Adobe Flex framework. We propose a 6 hour Bring Your Own Laptop session targeted at beginner level Hands On Flex training. If you have some programming experience and want a hand making your first (or second) Flex application, this is for you. We're looking for responses from the community of whether or not this is interesting.

So if you are considering attending/speaking, please let us know how you feel on the following:

  • Does Oct. 17th - 18th work for your schedule?
  • Are you interested in attending/speaking/teacher assisting the Oct. 18th 6 hour Bring Your Own Laptop session targeted at beginner level Hands On Flex training?
  • Are you interested in more ColdFusion sessions on Oct 18th instead of Flex training?

Thanks for sharing your opinions and helping us tune this conference for the good of the community.

Need Feedback on Proposed Date for NC ColdFusion Conference

North Carolina Conference?

Hi Folks, we've been working pretty hard to line up a good ColdFusion conference for North Carolina and the surrounding areas. The original idea was to have a 1 day conference with 6 sessions and a lunch. All this for 50$.

Tell me more...

Thanks to some generous sponsors, we may even be able to drop the price a little, offer a conference T-Shirt and let the State employees attend for free, since they work so hard to keep this state going.

Where/When would the conference be held?

We propose to hold the conference in Raleigh, North Carolina on Oct 24th. We'd like to get an idea of the number of attendees and the number of interested speakers for this date/location combination.

If you are interested, please leave a comment below and let us know whether you are interested in any of the following:

  • State Employee
  • Attendee
  • Speaker

Thanks for reading and thanks to all the people who have helped us get this far in planning. We appreciate the support!

Performance tuning for ColdFusion applications and Comment

Kunal Saini, an Adobe employee, recently posted an article on Adobe Developer Connection about Performance tuning for ColdFusion applications. This is a well written article full of useful tips and practices and should be a must read on the topic.

I will raise a counter point to one of the minor tips Kunal raised. He says:

compare() and compareNoCase()

Use compare() or compareNoCase() instead of the is not operator to compare two items. They are a bit faster.

I trust Kunal has insider knowledge about the implementations of these two compare functions, because I fail to see how a straight evaluation (<cfif dan IS 1337>) can be slower than a function call ( compare(dan, 1337) IS 0 ). Maybe it has to do with the type inference and type conversion ColdFusion does as a dynamically typed language, maybe it is something else. Regardless I avoid using compare() and compareNoCase() because both functions reduce the readability of the code.

Whereas all boolean comparisons in ColdFusion treat 1 as true and 0 as false, the compare and compareNoCase functions return 0 if the comparison is true. This means compare( 1, 1) will return 0, which doesn't follow the boolean rules. Since this does not follow the rules, code using compare and compareNoCase is harder to read, harder to follow, and generally uglier than straight comparisons.

So Kunal, I don't take anything away from your statements and I appreciate you writing the article. I want to point out that software isn't all about micro-performance, it is also about long-term maintainability. Always write your code to be readable by others.

Of course, if you happen to write the next Facebook and you need to squeeze every possible fraction of a millisecond out of a routine, then throw this advice right out the window. But then again, you'd have already tuned every single query permutation, added a clustered caching layer, offloaded your static files to a Content Delivery Network and clustered your infrastructure Horizontally and Vertically, haven't you?

Flash Animation Project Needed

I'm using the power of the pen to located a flash designer that can help me fulfill a quirky task. See, I'm no flash designer. Not at all. I do need one to make a SWF for me, the details of which are a little odd.

Specs

We need a picture of an animated, stylized monkey in a resizable window no smaller than 100x100 and needing to scale to 500x500.

The cursor, when hovered on the SWF, should appear as a boxing glove and when the mouse button is clicked, should punch the monkey in the face from whatever logical angle relative to the mouse cursor position and the monkey. The monkey should react as appropriate, meaning if punched from the left, the monkey should absorb the blow and move to the right.

I do want to stress the animated nature of this monkey and of the interactions. We aren't looking for realism, rather sophmoric humor.

Bonus points if the monkey takes on visual damage like a black eye, bloody nose or other results of cursor violence.

This gig does pay a fee to the designer and is of low budget, ideally suited for someone who thinks this might be a fun project (or who hates monkeys). Please send me your initial thoughts with a price range and some samples.

Note: No monkeys were harmed in the making of this post

New Bluetooth Headset On Order

I live and die by bluetooth headsets. Holding the phone up to my ear during a long conversation is as annoying as being covered in sugar water and buried in a Fire Ant hill. I'm just not very happy doing it.

I loved the Aliph Jawbone Headset. Apart from some issues with the charger, that was the most perfect headset ever invented. The Aliph Jawbone 2 was demonstrably worse in all ways, including call quality. I've been on the hunt for a new headset ever since.

Today I found the Plantronics Voyager Pro and am ordering it right now. Rather than bore you with the details of how the Plantronics Voyager Pro deals with a barrage of noise, a cacophony of wind and other call quality reducers, I'll leave it to you to watch this simple video demonstration of the Plantronics Voyager Pro Bluetooth Headset.

Want one?

It seems Best Buy is the exclusive source right now. Amazon shows a month back order. I'm going to get mine from Best Buy today. If there is enough interest from the readers of this blog, I'll post periodic reviews of the Plantronics Voyager Pro Bluetooth Headset. Whaddya say? Do you guys/girls care about what I think of this product?

The Art Of Method Names

I write from time to time on code quality and structure because it is a topic of interest to me. Clean code and well named logical structures, methods and objects really pay off during the infinitely long Support And Maintenance phase of software development.

Some could accuse me of having too many opinions on the topic, and I'd guess they could be on to something. Heck, I'll probably disagree with something I've said today, tomorrow, just because I'm always refining and learning.

While some of what I think/advocate/do is opinions, and could be subjective, I'd like to share some code I found on a project today and talk about the importance of method names.

A method should describe it's intent or behavior at the level of where it is inside the program. For example, a method named load() might be sufficiently descriptive to represent the behavior and be flexible enough to withstand a refactor or two. In other places in the program, perhaps the right method name is loadShippedOrders() since there will always be the concept of a shipped order in our proverbial system.

You get the point, right? There is a wide range of OK-ness for method names, with behavioral descriptiveness and refactorability as being two made up words that really judge the method name quality.

I found code today that really flies in the face of any of these principles. The names of these methods do not in any way describe any behavior of any system I've ever written, nor will probably be lucky enough to write.

method bodies removed to protect client interests

Be the Judge Yourself:

view plain print about
1<cfcomponent name="ET">
2 <cffunction name="phoneHome" output="yes">
3 </cffunction>
4
5 <cffunction name="createDir">
6 </cffunction>
7
8 <cffunction name="createDirImpl">
9 </cffunction>
10
11 <cffunction name="beamMeUp">
12 </cffunction>
13
14 <cffunction name="energize">
15 </cffunction>
16
17 <cffunction name="setPhaserToKill">
18 </cffunction>
19</cfcomponent>

Before you ask, this code was found in a production eCommerce system that is currently running that has nothing to do with Phasers, Energization nor beaming anything to any location.