CounterMarch Systems

comfortably self-assured


Having fun is just part of what we do.

We're currently transitioning to a new site template...expect transient funkiness!

Fun with Flex, Modules and Embedded Fonts

Short version: I had the same problem this guy had. A nice, functional Flex 2 app, recompiled under Flex 3 suddenly lost the labels under the columns in a ColumnChart. Our resolution was no solution at all.

Apparently a ColumnChart in a Module is unable to use/find/render embedded fonts (wouldn't it be great if this triggered an exception? we thought so.). We tried dropping a hidden ColumnChart in the root module which didn't work (though had been a handy resolution to other singleton vs. module issues in the past) on the off chance it would somehow capture the proper font settings.

Rather than continue to fight, we realized that Arial was good enough for chart labeling so the simple resolution was to just set the fontFamily on the ColumnChart and leave the rest of the app to render in Gill Sans. Happily enough the app looks good, the client is no longer upset about the lack of chart labels, and we didn't have to spend a day digging through the Flex framework to resolve the issue.

So...if you run in to this...take my advice and drop down to a common font like Arial for your chart labels. It'll be interesting to test this more thoroughly under Flex 4 with all of the improvements you get with the text layout framework. For now, though, Flex 3.x + embedded fonts + charts in modules is a combination best worked around.

Adobe Community Expert

Adobe Community Expert I got some great news yesterday from Adobe informing me that I've been invited to join the Adobe Community Experts group for 2009!

The community experts program (and forgive me if I quote directly from the site here) "is a community based program made up of Adobe customers who share their product expertise with the world-wide Adobe community." Kinda like what I used to do with the Philly CFUG, but on a broader scale. We're expected to attend and present at conferences, write frequently (on actual paper and online), and make ourselves available to others in the community who want to learn more.

I'm happy to be a champion for ColdFusion and Flex (and other Adobe tools) and look forward to making an even more active contribution to the community this year!

Higher Ed Barcamp Philadelphia

Keep an eye on (and contribute to!) the topic wiki for the Higher Ed Barcamp happening in Philadelphia late this spring or early summer.

I'm especially interested in this barcamp as the topics are sure to span everything from emerging technology to legacy integration, admissions to alumni relations. There's a reason we're in to the whole higher ed world -- it's so broad that there's always something new and interesting to work on.

So...even if you don't necessarily work in higher ed, you are almost certainly a product of it. What would you apply from your day job to the operations of your alma mater to provide a better learning environment, customer experience and lifelong connection?

Share your suggestions on the higher ed barcamp wiki.

Flex Fundamentals - Philly Flex User Group

The Philadelphia Flex User Group is hosting the first of several "Fundamentals of Flex" meetings this Thursday, January 15.

Location: Huntsman Hall @ the University of Pennsylvania
Room G60
Time: 7-11 PM
Prizes: Books, Shirts, etc

Let 'em know you're coming by responding to the post on their Google Group. Should be a worthwhile outing for those who are new to Flex development and even those who are looking to refine their basic skills a bit.

Welcome 2009!

I don't know about the rest of you, but the end of 2008 couldn't come soon enough for me. It was a great year for business, but we were exhausted and needed a break. Now, refreshed, we're plowing in to 2009 with a lot of work on the books and a solid focus.

No "happy new year" post is complete without a few resolutions!

Communicate Better

As a consulting company, we're always serving as intermediary for someone but there are many occasions when we're speaking for ourselves. Progress reporting, designing something new or even responding to a helpdesk request (yes, we've all got bugs to deal with) all come to mind. We don't let things languish, but in our response we should be conveying our desire to help, our energy and our drive to build really great software, every single time. I resolve to communicate confidently, expressing a willingness to listen to feedback and promote an open and frank conversation with our clients all the time.

Improve Satisfaction

One thing I resolve to do in 2009 is to reach out to our active clients once a week (minimum) and see what else is on their mind. Sitting back and waiting for the "right time" to ask is a short trip to miscommunication and dissatisfaction. The better you know your clients, the more responsive (and perceptive) you become to their needs. Our clients have been absolutely amazing at providing us referral business and I intend to keep that trend alive in 2009. I resolve to reach out to our current clients more frequently and prospective clients more aggressively in 2009 so that we can delight and retain the clients we have, while simultaneously attracting new ones in to the fold.

Be a Champion

I could only dream of having been on the World Champion Philadelphia Phillies. That's not the kind of champion I mean. We should be strong advocates for the tools we use, simply because we've found honest and powerful utility in them. I think the Adobe toolset has provided us with many opportunities to solve problems effectively and efficiently while making a decent living doing so. So, go ColdFusion! Go Flex!

Therefore, I resolve to be more vocal in my support of our chosen platform and spread news of the successes we have had working with it in order to attract more people to the ColdFusion and Flex community. Having served as user group manager of the Philadelphia ColdFusion User Group for several years, I know how great it feels to be part of a vibrant and active community of empowered and motivated folks.

In a similar vein, we do a lot of work in higher education. We've never passed on an opportunity to promote ColdFusion and the results we're able to deliver using our skills. I think there's still plenty of room for growth there (Wharton is just a little ways away and look at all the cool things they do with CF and Flex!) and I'll do my best to continue to encourage more use within our sphere of influence.

Grow. Now.

One of my favorite movie quotes:

"Get busy living or get busy dying"
It couldn't be more appropriate in business. So to address it in three major areas:

Grow the Business

I will seek out and secure new, interesting work solving problems that excite us and simplify the work of our clients. I think that resolution will be difficult enough on its own in 2009!

Grow Professionally

My role is just like that of many small businessmen: a different hat every 10 minutes, 24/7. I must (MUST) work on clock management (just like Andy Reid)(minus a few hundred pounds) and prioritization. We are all committed to doing whatever it takes to get the job done and more than satisfy our clients, but there were two periods last year where we sacrificed more than we should have due to commitments I made and should not have. I resolve to stop, think, plan, collaborate and leave room to breathe, even if that means passing up new opportunities. I would rather delight fewer clients and end the year slightly less well off than mismanage the only real resource we have: our time. I respect the people I work with too much to abuse them. I will improve this, starting now.

Grow Personally

To those that know me, you know I'm generally non-confrontational. At times, that has not served the company well. As a leader, I need to be more focused on the goals (client, project, and company), clear in my communications, and strong enough in my resolve to hold fast when necessary, bend when prudent and never compromise the stability of our enterprise. Again, I respect the people I have the privilege of working with too much to let them down on this one. I resolve to (well, gee, I don't know how else to say this...) find my backbone *g* in 09. That said, I'm still planning on enjoying what we do as much as I can...self employment is an amazing opportunity to grow every single day and I love that responsibility.

Be Better Geeks

ColdFusion (MachII, Coldspring). Flex (Cairngorm, Mate). AIR. LCDS. Enterprise Service Bus. Databases (SQL Server, Oracle). We touch these things (or plan on touching them) this year. To deliver well, we need to keep learning and advance our skills. That's the best part of being in the software field -- there's always something new, something to get better at and something you can then teach someone else. I want to learn more, know more, master more, and then deliver great stuff because of it...and then turn around and teach someone else how to become a master. I may not blog as frequently as Ben Nadel (I blame Twitter for that) and Matt's just not much of a talker (ha!), but I think together we'll come up with some interesting things to share as we learn more this year. I resolve to acquire at least one new skill and improve the ones I currently have in 2009. Even if that means taking a real DBA class ;-)

Oh, so you decided to read this far? Perhaps I could interest you in the services of a growing, intelligent, poised and information-hungry consulting company specializing in the Adobe platform!

I look forward to sharing more with you in 2009. Best wishes for a strong start to the year for everyone!

Our Fourth Birthday

Four years ago today. the Commonwealth of Pennsylvania officially recognized the creation of CounterMarch Systems. LLC.

Four years of profitability. four years of projects. countless lines of code (and commits to our code repository) and a long (and growing!) list of satisfied clients has made this a successful enterprise. This occasion can't be marked without recognizing the great people who have taken us from day one to day 1461:

  • Matt Cass
  • Dayne Mickelson
  • Chris Hamilton
  • Jessica McCarthy
  • Chris Daniels
To those of you who have advised us. thank you too! It's a long list.

As we begin our fifth year of business tomorrow morning. we are more optimistic than ever about our prospects. 2008 is on track to be our best and most profitable year ever! Together we've built the company we've always wanted to work for. grounded in a love for problem solving and software development but sustained by the fun of working with great people.

We're starting to look for a new addition to our team. so if you are interested please send your resume to info@countermarch.com. All we ask is that you love the idea of building great apps with great people using Adobe tools. Sound like fun?

Conference Surfing

Or. why it's worth getting out of your geek shell and attending something totally different.

I've been at the American Association of Advertising Agencies Account Planning conference in Miami for the last couple days. Until now. I had only ever attended tech conferences - CFun. CFUnited. DEVCON/MAX. WebManiacs. etc. While I am technically here to support a client. I have been poking around and listening in on various conversations and learning a lot about a field that we can't help but to come in to contact with every single day. Serendipitous learning - the best kind!

For example. there was one workshop yesterday on learning from information architects. The IA field has absorbed ideas from many others and applied them quite successfully to the new problems created by technology. Now these attendees (account planners) are trying to siphon off the same concept and apply it to their field. Very cool! What does that do for advertising and what does it mean for the future of quantitative benchmarking for the effectiveness of advertising? Huge question. generates a ton more -- just great food for thought.

Also surprising (to me. anyway) was the use of Twitter [conference feed] and Flickr [pics]. I got lots of questions about what Twitter is and (more urgently) why anyone would ever want to use it both socially and professionally. Fortunately enough there were some recent tweets that I received that were great examples of both. It's fun. simple to use and (as i'm sure you've noticed) really cuts down on full-fledged blog activity. The less-relevant or elaborate thoughts now go to Twitter. leaving the soapbox effort for the blog world. Some folks had a hard time understanding that Twitter is fun. not nearly as important as oxygen. and we're all still figuring out just how it can be used most effectively. I guess the over-hyped talk about blogs made them somewhat skeptical about 1:many tech-initiated conversation. I have no idea how they'll use this to their advantage. but as long as we still have to approve follwers we'll be just fine!

So what have I really learned? The people I'm surrounded by down here are all frantically competing for my attention - and each others - in an increasingly saturated environment and want to use not only technology but the seriously old-school fields of psychology. mathematics and language to get it. Look at this picture for an example of where their heads are. One-many and many-many communication paths are still being explored with new edges and boundaries becoming the "next great thing." As a technologist. I'm using Twitter as a yardstick for who's really paying attention - if they know what it is. they're doing ok - even if they have zero intention of using it at all. You've got to look at this slide to see that the techies have created a monster that they're aware of and plan on using against us sooner rather than later. Their event horizon is 2010 - only a short 18 months away!

Anyway. this has been tremendously educational and has inspired me to find other conferences that are in some way driven by (but not ruled by) technology. Think about it: these people are technology and tech services consumers (aka potential customers). Where will you find more business. in a room full of people who do what you do or a room full of people who use the services you can provide while speaking their language?

I thought you'd say that. Happy surfing.

QueryParam Scanner

Time to step back and check your work...

Every now and then it's worth taking the time to run a scan tool against your always-growing codebase to make sure you haven't opened up any avenues for a SQL injection attack.

You'd think that after so long and so many repeated warnings we'd all be tighter than tight now and that param-ing our queries would be second nature. This is such an old vulnerability for any webapp and building in fault tolerance from the start should be elementary. For the most part that's absolutely the case...but there are always a few queries that manage to get by without wearing proper protection.

I was a bit surprised at the results after running the QueryParam Scanner tool from RIAForge (thank you. Peter Boughton!) -- until I realized that the tool isn't excluding SQL in a query of queries (dbtype="query") nor is it omitting any values that are being set from an unadulterated CF function (now() is one example). Still. though. it did identify a number of queries that needed a little extra attention just to be truly safe from attack. I highly recommend that you go get it and run it today. You can clean up the mess before you leave work today. This would be an excellent feature to be written as an extension to CFEclipse or (as Rob Brooks-Bilson suggested) integrated into standard CF unit testing suites.

Worth noting is that in many cases (at least for the numeric params) we val the value and set the type on the cfargument tag in all the CFCs all the way down to the DAO level so even without the cfqueryparam tag we're mostly safe. It's those char/varchar fields that require the most attention (complete with trim(). left(). and maxlength checking!) to be considered sufficiently safe.

All of that aside. cfqueryparam alone is a strong first step to protecting your system from a SQL injection attack. Using it reduces the likelihood you'll be wearing egg on your face on Monday morning!

cf.Objective() 2008 Recap

Seriously worth every minute and every penny.

Jared. Steven and the rest of the gang involved in orchestrating this event should be proud of producing an event that is still of amazingly high quality. No lie: absolutely the BEST ColdFusion conference I have ever attended. one that is aimed squarely at the developers trying to solve the big hairy problems of enterprise-level software development.

I had a conversation with Steven Hauer this morning and narrowly avoided telling him the conference would still be as valuable at twice the price. $500 got me in to a bunch of sessions that made me a better developer. All told. for under $2000 (travel. registration. hotel. food/bar tab. misc) I improved my knowledge of tools and techniques that will ultimately raise the value of the work I do. A great investment for sure.

I'm sure there will be a bunch of these recap posts going up if they haven't already. so here's my 2c on what rocked and what wasn't quite as awesome. Maybe the community will come to some agreement on these. maybe not. Either way. there's not much that they should change about this conference - the formula works and works well.

Great things about cf.Objective() 2008:

  • Content & Speakers: The strongest aspect of this whole event. I learn a LOT at cf.O() - a lot of stuff that I started poking at on Sunday and will work with this week. Effective!
  • Attendees: A veritable "who's who" of the CF world. If they blog. they're likely to be in the crowd which is also just the right size. An overwhelmingly friendly bunch that is coincidentally lots of fun to hang out with and learn from.
  • Power: Power outlets at most of the tables in the meeting rooms. Nice touch and a great acknowledgment that we're gonna be on our machines anyway.
  • Twitter: Goofy little tool becomes the backchannel of choice. Had more thoughts exchanged via that than blogs. which I barely looked at at all this weekend.

Not quite as great:

  • Wireless: Yeah. I'm sure you saw a few comments about the speed of the wireless network. Day 1 was so sluggish hopping on the VPN to deal with an issue was impossible. Got MUCH better on Saturday. however...not sure what changed or if half the attendees just gave up.
  • Food: The food at Sofitel was great; the food at the Crowne Plaza just didn't measure up to that really high standard. Not a deal breaker. just not fantastic.

I did not attend any of the BOF sessions on Saturday night (except for the Bar BOF that closed the place down). but I do understand they ran really late. Will look forward to more of those recaps as well. Seems like the Open BD one excited more than a few people!

Hope to see folks at WebManiacs in a few weeks!

Bethlehem, PA gets kudos from Fortune

Who knew we were prescient in choosing Bethlehem. PA?

According to Fortune Small Business. Bethlehem is #58 of 100 best places to launch a business and one of the top 6 places to launch a tech company.

We're here. Viddler is just a few miles away. Who else is "waiting here (near) Allentown" to make it big?

More Entries

About the blog

Celebrating our 5th year!

CounterMarch Systems is a professional consulting firm specializing in Adobe technologies with a special focus on higher education.

2771 Red Oak Circle
Bethlehem, Pennsylvania 18017
610.280.3455
Contact Us