Blog

  • Part-time Recruiter, Breakneck Flex, & WebDU 2007

    I get a lot of emails regarding Flex & Flash opportunities, most on-site with no telecommuting options. These usually come in on average 1 every day. Some days I’ll get 4, 2 for the same job, and some days none. As I started exploring employment opportunities back in November, it didn’t really take long for the recruiter emails to start rolling in. Combine that with my own 2 email blasts to everyone I know work wise, everyone connected to me on LinkedIn, updating my resume on job sites, and my own volleys of cold-emailing jobs at FlexJobs and other various avenues… and well, it’s more insane than 2003 was. The projects are longer term, and they want more experience.

    Same problem, though. Not enough qualified individuals. The difference between now and 2003 is that I keep telling those employers and recruiters who I end up hunting for that time is on their side. I mistakenly predicted that Flash devs would flood the marker and 2005 would be the year it all ended. Not so; even today there is still a lot of Flash work. Flex, on the other hand, is different. I see programmers from all walks of life diving in with the only learning curves being associated to learning a new language, not a new tool. Big difference which effectively means lower learning curve. I’m also hearing more of the, “…we/they got so frustrated by the lack of qualified talent, they just sent their in-house .NET / Java team to training for a week, and apparently are doing fine.”

    Good for them. Good for Flex.

    The downside is, there are too many emails to respond to. Too many software specifications to read, digest, and make bids on. Too many opportunities to quickly and easily recognize what is worthwhile, and what isn’t. The good thing is, this really makes you focus clearly on what you want, and shoot for that. I’ve just never been good at saying no, so it’s rough. Some are time-sensitive too, so it’s challenging to keep on top of those. My compensating factor is becoming a part-time, not paid, recruiter.

    For example, for those jobs that are on-site in some state, city, and county not within 30 feet of my house, I’ll usually try to suggest qualified candidates that have the skill set they are looking for, in the same locality, and follow up with an email that contains the contact information of those individuals. From meeting many people offline and off, I have a decent network across the planet; enough to have a 50/50 chance of even helping international positions. This goes hand in hand with contract work that I usually don’t have the bandwidth for. I’ll shoot to my list, and order said list by client complimented contractors, those who requested work recently, and those who fit the skill set the client is looking for.

    To add to that, I’ve had this weird desire to look at other people’s resumes and tear them apart. Her majesty has ripped into mine for the past 6 years, so combined with the plethora of stuff I learned from and in college, on interviews, and from online research, it’s really nice to give advice (heeded or not) to peers so their resumes’ stand out and effectively sell them to prospective employers.

    Now, seems to me those above 2 paragraphs are the jobs of recruiters or job placement agencies; not some programmer. But… I like it in a hobby type of way. Both recruiters and potential employers have been really appreciative of me sending them employee leads, so even if a job interview / contract doesn’t work out, we part on good grounds and open up the door for reference checks (“Yeah, I know the guy, he’s legit.”). Holy fish, though… man, it’s a lot of time and effort! I can see why people get paid full-time to do this stuff. I’ve still got 5 resumes of friends to go on top of the starred 52 (last Friday’s 48 didn’t go so well…).

    Bottom line, if you know Flex, or are learning it, and you don’t have a gig / job (or are not in process of interviews)… wtf? If you are under-appreciated, there are plenty of people out there who will love you!

    In Flex news, I’m on an extremely fast and hard deadline project. I like the git-r-done ones vs. the drawn out, too-afraid-to-test-early-builds-on-users ones. It reminds me of Flash projects… only with cooler components. I’ve been pulling 16 hour days for like 2+ weeks… I think, maybe 11, I don’t know, it’s all a blur. I’m having a blast. Those types of projects you just really don’t care; if it’s fun, it’s not work, and if it’s not work, you code till you drop with no anger. Those types of projects you find sneaky ways to pump more features into the final product (ensuring it works of course) instead of whining like a little ho in meetings when management wants some modifications and additions. Totally different world. I wish every project could be like this. “There’s the hill, soldier. You need to take it by nightfall. Failure is not an option, and you only have 1 machine gunner with you. Good luck!” Hell to the yeah.

    Technically, I’ve learned too much about mx.containers.Container. It’s really rad, though, because now I can make my own panels with impunity. This is important because I can allow other developers to use them as containers in MXML, and that is just so frikin ‘ cool. Additionally, if I ever work with a designer again (I will dang it), they won’t be constrained by the Flex Panel. “You design it, I’ll code it.” …Except masking blurs…wtf . Works in Flash, not so great in Flex. The lack of easy use of pixel fonts is kind of shame too. I saw Grant blogged a solution today, but I haven’t had to time to try it myself. Some of our charts that shrink really small have un-readable text. If I could shove some of my pixel fonts in there, they’d look really good. The more design stuff I am responsible for, the more I hate layout constraints and box models. I’m starting to just feel like if I want everything laid out the way I want it with an easy ability to animate it, it’s gotta be in a Canvas with x and y positions. Everything else is just a nightmare. It’s worth it, though, because she (they, as in apps) look hot.

    I also like impossible odds. In this current project (due tomorrow), I have 2 3rd party vendor components, 1 back-end, 1 front end, that are both brand spanking new. Alpha code is t3h fun! Both of those vendors already have a ton on their plate, so they can’t just lolly gag on the phone/IM with me all day if I have questions and don’t feel like reading the docs. I have a list of bugs, features, and clean up tasks a mile long. Naturally my defiant response is, “You got nuthin’!” Grit my teeth, have faith my wing man’s got my back, and pump updates to HQ on status. Oh crap… 53 emails to respond to. I’m sure if I prioritized things around my deadline, getting my taxes done, and responding to job / contract related emails, it’d just be a clean looking list that was uber long. Just code and don’t look back!

    Speaking of code, I’ll be speaking about code in Australia next week at the WebDU 2007 conference. Her majesty will be speaking too about Usability. I’ll be flying from Atlanta, Georgia to that stupidly designed airport, LAX (Los Angeles) on a 5 1/2 hour, and then hitting the 14 hour to Sydney. I have mad books that friends have recommended to me as well as some I own. To top that off, I have to document my Flash Lite 2 component set called “Shuriken” which is what I’m speaking on. In my experience, good docs make a great product. Frankly I don’t see a future of Flash Lite for me for another 2 years, but you never know. I’m a programmer, not a futurist. I’ll have to pack on Saturday I reckon since no time tomorrow.

    Speaking of tomorrow, I hope they announce the winners of the Flash Lite contest. I keep telling myself that I’m not excited, and don’t really care about the results, but I think that’s just my way of emotionally compensating for if I lose. I hate losing, and live to win, thus I secretly want to own. We’ll see. Even if my PHP tanked on me, and my app didn’t make the grade, at least I got some phat components out of it.

    Got a new phone, too, a Razor something or other. Her majesty is Nokia prejudiced; she digs Motorola. Since it’s Cingular specific, it’s locked (as opposed to my Asian Nokia 6680), and even has 2 buttons just for them ON the phone. I love how these operators in the US work, man. I remember bitching to Michael Hagel about how pathetic it is trying to make money on mobile stuff using my existing skill sets. He retorted about how they (operators) refuse to do what some of the telecoms did, and basically build a bunch of communication infrastructure (aka the Internet) and not make any money off of it. The operators like Cingular and Verizon on the other hand charge you out the yang for everything, and give you hardware they control. I may not like it, but I respect their ability to monetize every stupid little, irrelevant thing. That’s just rad that it costs $70 a month for unlimited, modem speed internet access on my phone (it’s not $20 Nahuel, I looked, you Californians must have better deals or you just got extremely f’ing lucky) when I get unlimited broadband from BellSouth (now AT&T) for $30. Then again, AT&T merged back together for a reason. $1.60 to make roaming calls in Oz. I could call Robin Hilliard, and ask him random business questions… or a party line for $2 a minute. Robin bequeathing knowledge… Candy relaying praise… hrmm … anyway, they sure shove these phones full of useless stuff. It’s like when you buy a computer from Best Buy, or some other media outlet that sells eMachines . It comes with a bunch of pre-installed software you don’t want, don’t need, and slows down your comp. Instead, you get a raw box, and go from there. Apparently the same is becoming true with phones. However, to her credit, the phone DOES look stylish, has a nice looking screen with a fast interface, AND isn’t Nokia software. My last Nokia backup utility actually deleted my entire phone book. Here’s to hoping Motorola perceives that as “unfashionable”.

    Anyone want a job of answering my emails? You basically go:

    recruiter: “Contact this guy; he’s a good Flex candidate for on-site work.”

    client: “This project will cost $X, and take X amount of time.”

    homeskillet: “Search for ‘states’ in the Flex docs and join Flexcoders.”

    big company: “Contact Universal Mind.”

    employer: “Here’s my resume and links of my work. SWF 4 t3h w1n!”

    See? It’s easy!

    :: reloads :: It’ll be light soon, and I got a hill p@wn.

  • lol, code review!

    You know you’ve been coding in Flash Lite too long when you see this in your diff tool for a Flex file…

    lol_codereview.gif

    BWAHAHAHA!

  • Aborting Flex 2 Effects

    The effect classes in Flex 2 have a wonderful new API. In particular, you can pause and rewind the effects as well as access them by id. They do not, however, act like I’d expect when you abort them. For example, I’m building a scrubbable component. You can scroll the slider, and the View it’s attached too will show and hide objects over time, like markers on a map that are date specific.

    I want these markers to fade in when they appear, and fade out when they are no longer relevant to the date range. The problem I kept running into is that the effects wouldn’t either finish all the way, or wouldn’t play what I told them too correctly and would just blink in without fading in. In this case, the Fade effect wasn’t always fading correctly. It is a race condition you can easily repeat. You basically just tell one effect to fade something out from 1 alpha to 0 alpha, and another to fade in from alpha 0 to alpha 1. If you call the disappear method before the appear method’s fade effect is done, you can see it’ll either interrupt it and not fade out, or just flash. Really gross looking.

    I implemented 2 methods, appear and disappear. It seems that calling fade.stop() is not enough. I tried fade.end(), but that didn’t work either. I also removed the event listener for the end, and then null’d the Fade effect property before creating the new one that did the opposite, but to no avail. I’m guessing that because garbage collection doesn’t run immediately even if I told the effect to stop and removed all pointers to it, the effect still held onto the applicable properties of the UIComponent it was affecting. I’m sure I could open up the classes and look, but I don’t really have time; on a tight deadline. Best excuse I have, anyway.

    Suffice it to say, fade.pause() did the trick. For some reason, this particular method, as opposed to stop, or end, allows another effect to override the properties the original one had set, and continue on. Seems trivial, but to get fast, good looking transitions and visuals, this took me an hour to figure out. Blogging so others don’t have to spend that time.

    Example code:

    public override function disappear():void
    {
            if(__fadeIn != null)
            {
                    __fadeIn.removeEventListener(EffectEvent.EFFECT_END, onFadeInDone);
                    __fadeIn.pause(); // magic method!
                    __fadeIn = null;
            }
            
            if(__fadeOut == null)
            {
                    __fadeOut = new Fade(this);
                    __fadeOut.duration = fadeOutSpeed;
                    __fadeOut.alphaFrom = alpha;
                    __fadeOut.alphaTo = 0;
                    __fadeOut.addEventListener(EffectEvent.EFFECT_END, onFadeOutDone);
                    __fadeOut.play();
            }
    }
    
  • Star Fridays, 360Flex is Done, and 300

    They used to be “un-read” Fridays, and then Flagged Fridays, and now that I use GMail for both my personal and hosted POP email, starred Fridays. Basically, on Friday, I check all the email that took longer than 5 seconds to respond to during the week, or just ones that need followups. I don’t always do it on Friday, but I strive to tie up all loose ends for the week. This week was busy despite travelling all day Sunday & today, and being at 360Flex Monday through Wednesday. So, I have to hit 42 emails tomorrow morning. The record is 18. Usually when they get above that, there is no hope. I’m looking forward to that same recruiter that’s been calling my phone all week calling at 9:00am this time instead of 6:00am, haha!

    360Flex was cool. I missed the XBox room. It’s always rad to meet the people in the community I know to build up more of a report in person for better communication, to garner more corroboration, and clear up things you’ve been wondering about for awhile. Additionally, it’s great to meet those I’ve never met in person. The one thing I’ve always dug about consulting is meeting new people, and 360Flex was no different. Finally, since I appear to be the only Flexdev on the planet not fully entrenched in employment yet, there were a plethora of start-ups and companies to talk to. It’s neat to get a pulse on what the industry is working on by hearing a variety things that companies are doing with Flex & Flash.

    Finally frikin’ got to catch up with Joe Berkovitz. I really wanted to get some answers to my burning questions about certain framework things spawned from my earlier blog entry. Unfortunately, I had didn’t really get the justification I was looking for, and instead got context with regards to understanding his ideas & uses for MVCS, one particular framework style he uses. I was hoping I’d either stump him (not a chance, he outranks me in experience, hah hah ) or he’d relay this wonderful tale of how you can scale certain parts, and encapsulate others. The reality wasn’t that glorious. Instead, he had valid reasons why things work based on his work environment. Specifically, the leadership there following through with expectations on server-side API’s & data, clear communication channels with their customers, and the opportunity for the client developer to have a hand in the server-side.

    Those business realities have far reaching implications on why one does not need Delegates in Cairngorm for example. In fact, one could perceive my use of them, if one were in Joe’s position, as a reactionary step to shield yourself from the server-side’s ever changing mess so your model can remain clean within your Commands. If your server-side is clean, gives you what you need, and isn’t changing because of an unstable work-flow, you don’t need Delegates. Unfortunately, I’ve never worked in a place like Joe does, thus I still need to have Delegates. Furthermore, after talking in person, I really got to understand how he uses multiple Controllers in MVCS (real ones, not the Cairngorm namesake). Finally, I realize we’re only getting the condensed, edited story since some things are NDA which I totally understand. His use of modules was quite interesting too. I view them as GUI widgets, while he (paraphrasing badly) uses them as class repositories. You can’t do these things over email; in person just rocks, hence the need for these types of get together’s to really grow to the next level.

    BTW, Hamachi is off the chain. Joe showed me some examples, and man… wow, I’m all over that, twice on Sundays.

    It’s also funny to hear everyone has their own Flex framework. They don’t advertise it like I would; instead, you have to start acting all high-horse about Cairngorm to get them to talk about it, but that’s all the prodding you need to get the good stuff… alcohol helps too.

    I will say speaking here was way better than MAX. I could see the blank stares at MAX on a few faces where others seemed completely bored out of their minds; I knew I was doomed to alienate pretty much half of my audience. Here, however, I got the impression everyone pretty much followed the code, and just wanted to know about the technical logistics behind it as well as the gotchas… which is exactly what you want when you are speaking about this stuff. So, felt a ton better. Grant Skinner pretty much did the same talk I did in the later part of his slides the day before, so I took the opportunity to speak more on the code parts about what you can do right now vs. when CS3 is released and they release Grant’s solution, which is very much needed mind you. I’ll post the links to the details tomorrow.

    Finally, got home just in time to catch the History Channel’s special on Sparta’s 300, to tie in with the movie the 300. Pretty cool to get the real history behind it. Pretty much a spoiler to the ending, but as my high school government teacher used to say, “The only news you don’t know is history.” … or something like that.

    It’s not blasphemy, it’s not madness. THIS… IS… SPARTAAAAAAAAAA!!!!