Check out our Angular Book Series.

Happy New Year

The new year is often a time to look back and look forward, but I'm honestly not sure what to say about 2019. Let's see what comes out.

Books and Writing

DotComIt has continued to chug along in a stable position. I continue to write and publish books in the Learn With series and that is the primary focus of DotComIt right now, but I still take on consulting projects as they come up, so if you have something I can help with don't hesitate to reach out.

I'm a quarter of a way through a book focused on RXJS, an Observable library used heavily in Angular. The progress is not nearly as quick as I had hoped, but it is moving along. I keep restructuring the chapters to avoid interrelated dependencies. I haven't found the time and energy to push this thing out, unfortunately. Writer updates are boring, so I'll spare you all the details.

I continue to post weekly on my personal blog--right here. I published 53 posts in 2019. In 2020, I expect to pull back on my weekly publishing schedule so I can focus on redoing the blog design in order to make it more mobile friendly and easier to navigate.


I don't often talk about specifics of my projects, because I'm often bound by different legal documents that prevent me from sharing specifics. But you may have noticed that I contributed a bunch of blog posts to the Disney Streaming Services blog. They had a big launch last year and I'm part of the team that built some back-end tools. It has been the most high-profile, public, launch I've ever been involved in.


On a personal note, I continue to write and record music, and want to increase that in 2020. The balance helps me keep my mind fresh and stave off any burn out from all the programming and writing. I broke my first drumsticks 2 months ago laying down the track for a new song which I'm really excited about. I've also been experimenting with some video recordings of some live performances. If anything happens with this stuff, I'll post about it here, even if it is not the tech content you signed up for.

Final Thoughts

That is about it for me. I'm planning a trip to Star Wars Galaxy Edge shortly, and hope to have a more relaxing vacation at some future point.

When am I too old to learn programming?

This comes in from a reader, and I thought it might make an interesting blog post.

After reading your "general life lessons" blog

I consider this a programming blog as opposed to general life lesson blog. But, then again, I'm writing this post, so...

I wanted to ask if you have known anyone who has came into the field of programming at a later age with no prior experience and if so how did they learn?

I know tons of people who came to the field or programming later in life w/ no prior experience. Of course, the bulk of them entered the field in the 80s and 90s. It might be harder to do that today. I'll get to the 'how did they learn' later.

and can the field of programming be for everyone?

I'd like to think so.

Im turning 30 next year with 12 years of blur behind me.

I just want to point out that, from my perspective, you are not entering the field 'later in life'. Unless you plan to spend the next 20 or so years studying before trying to enter the workforce. 30 isn't old nor later in life.

I just finished my AA and intro classes into programming(basically C++ Syntax and excercises). what brings me down is the guidance from other people. when I ask for advice from people in the field most answers are "get an internship", "things will come together when you graduate", and "work on real-world applications".

It sounds like you're too beginner to be considered for an internship, but maybe in a year or two. If you can get an internship or Co-op or similar work-study program I highly recommend it. It gives you work experience and programming experience with no expectations of preexisting knowledge. I cannot say enough good things about my own co-op experience--back in the mid 90s.

As an entry-level CS student with a plethora of information its difficult for me to understand what should i be learning not necessarily in order but things i need to know to break into the field one day. I think i pretty much hit a HUGE learning curve after learning how to print to screen, receive input, ifs and switches, loops, arrays, pointers, and classes.

Earlier you asked how people learn. People learn in a lot of different ways. I, personally, learn by experimenting with stuff and writing about it which is why my blog is full of programming posts, some stuff about obscure bugs, some about weird trivia, and some are just super basic stuff.

C, or C++, is pretty low-level. Not bad for basics, but it is unlikely you will graduate to work in that language. The thing I recommend concentrating on is learning concepts. It sounds like you have very basics. But, learn about how to use classes to create your own data types. Learn about encapsulation principles and separation of logic and data, and how loosely coupled pieces can fit together to build something more. That sort of stuff will, hopefully, come in some more advanced classes. Also experiment with other languages; especially other language types. SQL is a different type of language than C, and LISP is completely different than either of those, as some random examples.

All those things will make you a better programmer, and while in school for programming that should be your primary goal.

That said, I fully believe that being a good programmer will not help you get a job. For that you'll need to learn some marketing and networking. An internship can give you a jump start on that.

Unfortunately, interviewing has changed in the past 3-5 years. It becomes more about programming trivia than about how to get things done. I've been on some brutal client interviews where even when I do awesome I have no desire to move forward.

There are some random thoughts. What do you think?

How to I make my Angular Component Styles global?

An awesome thing about building Angular components is that the styles you specify are 'local' to the component.

In normal HTML development, any style on the page can affect any other style. For example. If I add a style like this:

div {
border:1px solid red;

Every div in the site / application will have a solid red border. Check out a sample here.

If you build an Angular, component, and that style is only included in the application as part of the component, then only that component's div will given a solid color red border.

The reason for this is because Angular creates something they call a Shadow DOM. Under the hood it is some coding magic to conditionally apply styles only to the component in question, not to other components.

However, Angular allows us to change this behavior using something called ViewEncapsulation.

A default Angular component is like this:

selector: 'my-comp',
templateUrl: 'my-comp.component.html',
styles: [`my-comp.component.css`],
encapsulation: ViewEncapsulation.Emulated

The Emulated value means that Angular will simulate a Shadow DOM. This is considered safest because not all browsers support their own shadow DOM trees.

In most cases, I use this approach and leave out the encapsulation attribute. I like to have my styles encapsulated to a single component. But that is not required. There are two other options:

selector: 'my-comp',
templateUrl: 'my-comp.component.html',
styles: [`my-comp.component.css`],
encapsulation: ViewEncapsulation.Native

The Native property tells Angular to use the browsers Shadow DOM. In this case, styles are encapsulated just like they would be in the emulated approach. So, any styles in the my-com-componment.css file will affect all HTML elements globally.

To turn off style encapsulation complete, use the None value from the ViewEncapsulationclass:

selector: 'my-comp',
templateUrl: 'my-comp.component.html',
styles: [`my-comp.component.css`],
encapsulation: ViewEncapsulation.None

I'm working on my second super really big Angular application for a client, and it is giving me the opportunity to touch on areas I normally wouldn't.

The Learn With Series now includes Java and PHP

The Learn With series now includes a few new book that talk about integrating with Java or PHP.

Check them out now.

I'm greatly enjoying writing these books, experimenting with different technologies, and taking you all along for the ride.

Get my Training Course on AngularJS for Flex Developers

I've spent a lot of the past year putting together a training course on AngularJS for Flex Developers. Today is the release day.

The base of this are two books that work together, one builds an application in Flex. The next builds an application in AngularJS. I found that this was a great way to compare and contrast the two technologies. The main books are available under a pay what you want scheme; however I put together a lot of extras including bonus articles and a full screencast series.

Check out the packages; and choose one that works for you. You can use the discount code 'jhblog' to get a 10% discount.

Why You Didn't Hire Me

I started writing this post a few years ago; after I failed to come to terms with a new client. I finished it for September's Flextras/DotComIt newsletter. I realized that I seem to pass on more opportunities than I take on. Part of the problem is me, of course, because I can be picky about the type of work I take on. But, there does seem to be a common thread running through these rejections. This newsletter collects my thoughts on why I wasn't a fit for the project you wanted to hire me for.

How I Work

Before going into why we didn't come to an agreement, I thought I'd explain how I usually work. There are usually two different approaches I can take to a project contract: either by the hour, or by the project. I'll explain a bit about each approach.

By the Hour

Working by the hour means that the client pays me for each hour I work for them. This includes everything from meetings, email management, documentation, system maintenance, and writing code. Some important aspects of an hourly contract:
  • They are great if a client wants to get me in the door to have me start working as quickly as possible.
  • They are very flexible and allow for a constant change in requirements, priorities, and focus. This is good for the client because it allows for a fluid approach to development.
  • The deliverables are delivered when they are ready, and functionality usually comes in small, quick chunks.
  • If the client wants to manage me as one of their resources, then this is the way to go. Usually we have weekly planning session to discuss the progress made and the plan for the week. I expect that the client is involved every step of the way; and will direct where my efforts should go. This gets a very tight feedback loop and the client and problems can be addressed quickly.
  • The client can terminate at any time, usually with minimal commitment.
  • The client is responsible for managing the budget and schedule; and none of the responsibility is passed onto us. I will provide a client with weekly breakdowns known as time sheets that they must approve.

Some of these items are considered 'double edged' swords. The fluid nature of development means we often code for speed and not architecture elegance. It is tough for the developer to budget our time and finances without said commitments. Some clients are more comfortable by limiting their own commitment.

By the Project

Working by the project contracts usually means with a fixed fee. The client hires the developer for a specific period of time for a specific amount of money to complete a specific scope of work. Some aspects of a project contract are:

  • They are great for a client working within a fixed budget or under a deadline. This is also good for both the developer, who gets guaranteed work and the client who gets a guarantee on the project being complete in their limitations.
  • The budget is all inclusive, which means every aspect of our time is included in the budget.
  • A project plan is created, which will include fixed milestones with detailed descriptions of functionality. The down side of this is that this requires a lot of paperwork up front in order to define the scope. Sometimes it is hard for a client to create the documentation in enough detail needed to code something.
  • Changes to the focus or priorities can be very costly; and require additional paperwork. When changing a fixed fee bid; we have clients sign a change request that includes a description of the changes, the additional cost, and the new timeline.
  • We act as the project manager and balance our own time, budget, and development tasks against project milestones. This relieves the client of some responsibility, but the client usually gets more functionality in a single deliverable than they would in an hourly contract. Milestones are often 2-8 weeks apart.

A lot of developers don't like working on fixed fee bids; and I can understand why. The requirements are very rarely carved in stone and often change. It is tough to manage those changes in the context of a project bid. I, personally, love fixed fee projects because, like many small business owners, I like to look out at least three months ahead to see that we have a plan.

Reasons we Couldn't Come to Terms

Understanding the two approaches that I can take to project development, here are some of the reasons why I often don't come to terms:
  • No Contract: Some clients have insisted that we work without having a contract in place. A contract will define the terms of the full relationship including payment terms, code ownership, lawsuit liability, termination terms, and what one party can do if the other party is in default. I like to have the contract in place to avoid any ambiguity. In my early days it was to make sure I could get paid. These days, it also makes sure they can't claim ownership on work I do not do for them.
  • Intellectual Property Rights: Ownership of the project's output is a big deal for many companies. They want to make sure they own the project and source code, and are able to maintain it without coming back to us. They also want to make sure that the source code I provide them is not violating the IP rights of any other organizations or developers. This is all fine. However, I have seen IP clauses are too over-reaching for my tastes. I am very careful not to transfer ownership to the client of anything I do not build for them. I maybe building something for other clients; or I may be writing newsletters like this one, or I may be creating podcasts, or creating for my own projects, such as Flextras. I am very careful not to transfer ownership of everything I create.
  • Work with Jeffry Houser, not DotComIt: I've lost projects because I only work through DotComIt. Some people insist I must personally sign contracts as an individual instead of as a representative of DotComIt. I never do that. Issues such as insurance, liability, and accounting all go through DotComIt. As a compromise; I may suggest a 'key person' clause to the contract which says I will be the primary contact, or developer, on a client's project.
  • Mixing Project types: I don't like it when a client tries to mix our two approaches to development; and I'm undecided if that is me being inflexible or not. I have had clients request explicit deliverables in an hourly contract. Sometimes hourly contracts includes a limit on the amount of hours worked; so a list of deliverables could put me in a position where I am contractually obligated to complete said deliverables without pay. I do not want to be in that situation. Likewise, I have had clients request an hourly breakdown in a fixed fee project. I understand the client doesn't want to pay me for time I am not working, but in such cases, they should focus on the bottom line, functionality, and delivery dates. The micromanagement gives me a pause.
  • Non-Compete: I understand that a client doesn't want to hire me and then have me steal their client list, or source code, and use it to help, or become, a competitor. However, some non-competes are more far reaching than that. In one contract, with a web development firm that wanted to subcontract work out to me; a clause said I couldn't work in a similar industry. I feel every client I had before and after them would have violated that clause. Another contract had a guarantee I had not worked for any of their clients two years prior to signing. Without their client list; how could I make that promise? I'm fine with a company protecting their proprietary information, but I'm very careful not to sign away my right to continue to do what I do.
  • No-Advance: I always like to ask clients for an advance at the start of the project. Some clients insist on not paying anything until they have the final results, and that is a red flag for me. I do not want to spend weeks, or months, building something only to find out the client can't, or won't, pay. For fixed fee projects; I am usually able to successfully negotiate some type of an advance. For hourly projects, I am not always so lucky.

Any contract with a client will have a dozen different little things that will cover the working arrangement with the client. Usually many of these things are no-issue or easily dealt with, but the items above are the main reasons why I often walk away from a contract.

Final Thoughts

I'm curious to hear about experiences of others. What are some of the problems you've had when working with clients? At what point do you decide it is time to pass on this client and move on?

360|Stack is the rebranded 360|Flex.

I am buried in my man-cave lately, focusing on writing a book about converting a Flex app to other technologies. I wanted to pop my head out for a second to let you all know that I'll be speaking at the 360|Stack conference coming up in the beginning of August.

360|Stack is the old 360|Flex conference, but it has a slightly different name.

I'll be giving an inspirational presentation entitled "How to Fail Fantastically." I'll be talking about my various business ventures, such sa The Flex Show and Flextras and DotComIt and probably some you had never heard of.

Even if that doesn't excite you there is plenty of real technical content covering everything from Google Glass to more JavaScript frameworks than you can shake a stick at.

I have an extra ticket that I'm undecided what to do with. I'm thinking maybe some type of contest?

Do Marketers Care About Interacting with You on Social Networks?

An associate recently posted a question onto her Google+ wall about how marketers are using social networking. I wrote up a long winded response--for a social network--and decided to share it here too.

First, the question:

Seen on a mailing list recently:

"It's been really discouraging to see how quickly social media has taken its place next to SEM, email marketing, and all the rest as just another broadcast channel with a revenue goal and ROI attached to it."

Do you agree or disagree?

I generally agree, but sometimes it depends on the company.

Here are a bunch of random--and true--examples:

If I speak to VirginMobile on twitter; it is always canned/stock answers. Such as when I asked if they'll get any Windows Phones; the response was something like "we don't have any announcements regarding future phones". It was very formal.

I've liked "Jakes Wayback Burgers" on Facebook because it is my favorite "fast food" burger place in my town. If they respond to interaction at all--which is rare--it usually only positive interaction. For example when I asked Wayback Burger why they were giving away an iPad 2 in a promotion instead of the "latest and greatest model" that was ignored. But, I have them respond to other queries such as "What time does X store open". Very fact based and no personality.

On Twitter, I complained about MX Energy salesman showing up at my door. Seriously, I am sick of these people. I actually posted a sign on my front door that says "no soliciting, especially from MX Energy" They ring my bell less but that sign has not curbed it completely. I didn't even know MX Energy had a twitter account until they followed me. They were was no response to my complaint, no attempt to communicate me, no apologies for the constant interruptions. In fact, I'd say MX Energy is the company I hate most in the world--although Wandisco is trying really hard for that top spot.

Since I brought up Wandisco; let me talk about them. They just bought SmartSVN from the company that owned it. I love SmartSVN and it is the best SVN client I've used. So, I've been a happy customer for many years. I did not receive promotional mailings from the SmartSVN folks--until Wandisco bought them. Now I get emails all the time. I have unsubscribed from their mailing lists using the Unsub" link in their emails. Yet, I Still get emails. I have emailed them back, complaining, but got no response. I have flamed them on Twitter and that did get a response. I have to admit that response was human and personable and swore to me that the issue was a mistake on their part and promised to get the issue fixed.

Fine, mistakes happen. But, when you tell me it is fixed; I want it to be fixed. I'm still getting emails from them; despite multiple times of being promised it would be fixed. After the my last twitter tirade; I got a personal apology emailed to me, promising that this time it was really fixed. I'm impressed they followed up. But, five days later I got another round of promo emails from them. Obviously the issue is not fixed. The point has almost become laughable now. I imagine them as a big corporate company with lots of bureaucratic overhead and no one knows what anyone else is doing. The person who is managing their twitter account (and/or emailing me) is probably promising things they can't deliver on--such as getting my email removed from every copy of their list.

Moving away from Wandisco..

If you take a look at "known" bands such as Toad the Wet Sprocket or Soul Asylum; all the communication is one way. When Dan Murphy left Soul Asylum there were weeks of speculation on their message boards before the band finally responded with a Twitter sized response.

When Wadjet Eye Games (my favorite Indy Adventure Game Publisher) posted on Facebook that they were looking to do auditions for voice overs for their next game; they did not respond to the 3-5 people who asked for more details. If they weren't going to respond; why did they post an announcement on Facebook?

When Lake Compounce--a local amusement park--asked what people liked best about their season pass; I responded with some snark about how the Halloween attractions were an extra charge. That comment was quickly deleted. Instead they could have apologized for the inconvenience.

On the flip side of things; not all companies [or bands] are bad.

The GeekDesk twitter account is amazingly personal. Pretty much any tweet I make regarding my GeekDesk is responded to directly. when I casually mentioned that the desk was making weird clicking sounds when going up and down they offered to open a ticket for me via twitter. That is not the first time they've done something similar for me. Clearly someone there gets it. I cannot recommend GeekDesk enough. It is the best desk I ever owned.

When I tweeted a "recording" of a recent Bowling for Soup show the lead singer responded from his personal twitter account to thank me for sharing. And then he followed my twitter account details to my blog and used it to email me to ask if he could re-purpose the recording. How cool is that?

So, that's my brain dump. Some good; some bad. My perception is that there is more one-way interaction than communication. It's a shame because social networking for companies had a lot of promise.

Quit My Job: Twelve Years Later

While randomly surfing the Internet, I came across a blog post entitled, Quit My Job for Consulting: Two Months Later and it made me smile. It was late September in 1999 that I left my full time job. That led to the formation of DotComIt; and I am entering into my thirteenth year of being on my own. Steve Klein's post inspired me to share some of my thoughts on the experience; hopefully from a more experienced perspective.

I wrote up this post for the monthly Flextras newsletter and thought I'd repost it here.

How Do You Define Yourself?

A favorite game in my family is Scrabble. I have siblings scattered throughout the US and it is rare that the whole group of us end up in the same room together. Some of my fondest memories are sitting around the coffee table in my parent’s living room on Christmas playing Scrabble. The games can become lovingly cutthroat and it is rare I am on the winning end. My elder brother once pointed out to me that I lost because I always looked to create cool words, without devoting thought to the point value of said words. That sentiment has become a defining factor in my life and career. I often look for cool work even though they are not always the most profitable.

Part of the life outside of a traditional paycheck is to figure out what you want to do, and then figuring out to get a way for people to pay you to do it. (That’s probably not a bad approach even if you’re after a traditional paycheck, either). The process isn’t easy, though. I think the hardest part is figuring out what you want to do.

I am a Technical Entrepreneur! To me, that means I want to create products and services that use technology to solve problems. I get high on process automation and love it when I can do things to help make my clients more efficient and effective in their respective profession.

Over the years I’ve been given many different roles. I’ve been called a small business owner, a consultant, a contractor, a subject-matter expert, and someone who will shovel shit for money. The work associated with some of those labels isn’t always satisfying. I strongly suggest you take your own time to define your identity before someone else does it for you. Then search out clients—or employers--that fit the identity you want to create for yourself; and you’ll find projects that will make you happier and more productive.

Don’t Ignore the Business!

When you’re not employed by a company, then you’re running a business. It may not feel like, especially if a recruiter had placed you as a full time consultant working on-site with a client, but even then you’re still a business. I’ve seen a lot of great programmers start consulting, only to quickly go back to being full time workers at the first opportunity. I always got the impression that they do not treat their activities as running a business; and are shocked at the amount of time the “business stuff” is taking. This extra responsibility is one of the key tenants of Steve Klein’s post. In this newsletter, I’m going to share some of my thoughts on two areas of the Business stuff: including Finance and Marketing.

Let’s Talk about Money

You’ll have to be careful when it comes to money. You will have clients that don’t pay on time. You will have clients that don’t pay at all. I made a lot of money mistakes in the early days and eventually had to institute policies to address non-paying clients. When a client is late; I stop all work for that client immediately. That may sound simple and logical, but the programmer in me finds it hard. Incomplete tasks bug me. Stopping work in the middle of a task is like trying to stop a run while in mid-stride.

The client will often assure you there are no problems and the check is in the mail, but do you want to bank on that? I don’t recommend it. More often than not; the client interprets a 30 day payment term to mean that they can start processing your payment whenever they feel like it. It is not a happy feeling to discover that it’s time to invoice a client, and you haven’t received the previous payment yet. Did you just provide the client with a full month of time you'll never see a cent for? I have, and it’s an expensive lesson to learn.

Sometimes the client will not respond to a late payment inquiry. I know people get busy and have many priorities; but I figure three calls within the span of a week or two is a good way to follow up; and it gives them plenty of time to get back to you. The fourth follow up call never goes to the client; it goes to the lawyer. For some reason, clients seem to find time to respond to a lawyer, even if they don’t have time to respond to you.

Taxes can be another issue. In the US you want to be sure to put away 40% of your income (after expenses) for taxes. Yes, it really is that much. Because you don’t have an employer to take it out of every paycheck, you’ll probably have to pay quarterly taxes to the state and federal governments. If you work full time for a company, or used to, check out one of your pay stubs. You’ll find that roughly 30% of your pay is being taken right off the top before you ever see it. The employer is paying another 7.5% to social security. When you’re on your own, you have to pay that extra yourself. Sometimes it is a shocking realization, especially if you didn’t plan for it.

Beyond the income taxes, you may also have to deal with local sales tax on the services you provide and property taxes on your business property. The sales tax will most likely vary from state to state, so you’ll want to talk to an accountant knowledgeable about local laws.

What is Marketing?

When starting out, I never had an explicit marketing plan. My first clients were achieved by a little bit of networking and little bit of luck. If your plan is to wait until the phone rings, then you’ll probably have a lot of spare time. If you do nothing to actively search for the right clients, then you’ll often be stuck with the low-hanging fruit. I’ve found that these projects are neither profitable nor satisfying.

In the beginning, I was doing a lot of marketing work without realizing it. I was writing books, blog posts, and articles. I was presenting at conferences. Later I added podcasting to my repertoire, both with The Flex Show and the Flextras Friday Lunch. Project clients often have no way to judge your ability. When they can see your name in print, or as a conference speaker it gives them confidence in you. That confidence can help you land the project. It can lead to more opportunities, and sometimes higher rates.

I’ve often been troubled over my lack of a formal marketing plan. Over the years I’ve tried other marketing avenues including ads in the phone book, joining the local Chamber of Commerce, using Google Ads, and sponsoring conferences None of those things have paid off as much as the more grass roots elements, such as writing this newsletter has, though.

Be a Subject Matter Expert

One of the interesting points that Steve makes in his post is that you must become a “Full stack” developer. He is suggesting you must be able to do everything. My route has been the exact opposite. I have inadvertently marketed myself as a subject matter expert. In the earlier days it was as a ColdFusion developer. The past few years it has been as a Flex Developer. Being a subject matter expert brings lots of benefits.

  • People have already decided on the technology before contacting me. I’m rarely put in a position where I have to make a case for using one technology over the other.
  • People often assume if you have an expertise in one technology, you are also an expert in related technologies. In my earlier days, I was often hired because of my ColdFusion skill, but no one thought twice about having me do HTML/JavaScript development, database design, server setup, or whatever else needed to be done.
  • The more specialized you are, the easier it is to be found. This can lead to higher rates, longer commitments, and more freedom. If you look for a mobile developer, you’ll find thousands of people and it may be hard to choose one. If you look for an ActionScript Developer who specializes in Stage3D on iOS, then you’re going to find a smaller pool to choose from and it will be eaiser to find a suitable candidate .

Of course, being a specialist is not without its’ own limitations. Anyone looking for a Flash developer will never find the ColdFusion guy, for example. Often clients will segment you into what they hire you for and not to think to ask you for the other things which you can do perfectly fine. Being a specialist is a double sided sword. I assume the same is true for being a full stack generalist.

The Work-Life Balance

One of the challenges of being your own boss is that you can set your own hours and work when you want. It is up to you to enforce this balance. It is easy to have “five more minutes” turn into 6 hours only to find out you skipped dinner, missed seeing the sun today, and your significant other has been asleep for hours.

When I started out, I was budgeting 25-30% percent of my time for actual billable work. The rest of the time was for my business management; such as paying bills, bringing on new clients, negotiating contracts, and doing my marketing activities. This means, out of every four weeks, only one of them was billable. If I were to work 60 hours; it’d be a great month. If I were to work 80 hours; then I know next month will be devoid of billable work.

Remember it is okay to say no to projects. This is hard and not what the common logic says. You may be too busy. You may have other commitments; whether work related or not. You may not be interested in the work. I find it is always better to say no, then to say yes and the not deliver. Sometimes you may be able to negotiate deadlines and the schedule to accommodate your other commitments.

Every Sunday night I make a schedule for my week. This includes time for current clients, business stuff, social activities, and whatever else I want to do.  This makes me sure that every week I'm saving some time for the important aspects of my life, both within and outside of the business.  Getting a new project on my schedule often takes a few weeks; even after the contract is inked.

Final Thoughts

Overall, I recommend managing your career the same way that public companies manage their stock price. Make your commitments and stick to them. Public companies make their commitments in terms of revenues and profits. As a business owner, your commitments are probably around deliverables, timelines, and budgets. If you can, exceed expectations. Prepare your deliverables early. Come in under budget. Address issues head on, as they arise, and be prepared to offer a solution or two.

One thing I have come to learn is that there is no secret sauce to being a success in business. I've been lucky.  My best advice, is to figure out what you want to do and then find a way to make it happen.

Thoughts On Flex, Business Models, and Apache

Over the past few years a few friends have told me that I always have a plan. I didn't think about it much until it was mentioned to me, but I guess that is true. I'm always trying to think two steps ahead and plan my next move and carve out a path in life. Sometimes this is a lot harder than it is.

Gareth sent me a question through the Flextras site about the future of Flex, the availability of mobile components; and the viability of AIR.

Hi Jeff, I know things are a little bleak right now with Flex (hopefully with 4.8 SDK release things will perk up with the community), but I was wondering if you'd thought about still doing the mobile component creation. I'm still making AIR apps for mobile and have found the landscape pretty scarce when looking for various components [snip].

[snip] ...the flex mobile component still seems to be a viable model. I'll keep using Adobe AIR to make my cross platform apps until Adobe decides to get rid of that too :) I do the app thing as a supplement to my day job, so being able to purchase low cost components that will help make my apps more "snazzy" is something I'd look into (even at $5-10 a pop would be better than having to write it myself).

I've even considered the whole business model myself, but have not had the infrastructure set up to do it. Anyway, hope things are still going well with the Flex Components side of things. Just wanted to suggest something as I see your Flextras Friday Lunch, but haven't seen you on the "build" side of things recently.

I responded to this email after a very long day and about 4 hours past my bedtime. I think I was a bit blunt. I thought I'd turn my response into this blog post, perhaps with a bit more polish than the "late at night" ramble I sent to Gareth.

Things are a Little Bleak with Flex

I think I agree that things look a bit bleak for browser based Flash applications, and that has affected Flex. I also hope that Apache Flex can help turn things around; and I believe there are many ways to do this including improving performance on mobile applications (with AIR) and targetting other runtimes (such as HTML5).

There are also a lot of "little picture" things, such as bug fixes, that can help make Flex more pleasant to deal with.

I have faith in Apache and I have faith in the community. I just hope we can prove ourselves while Flex and Flash Player are still relevant.

Flex Mobile Components seem to be a Viable Model

I have been doing some Mobile Component development, but not much. There are some things in my Apache Flex Whiteboard. I have not wrapped up any of those components into the Flextras component set, though.

I wasn't sure what Gareth meant by Model in his original email to me. If he is referring to a "Development" model. Then, I agree. AIR offers a compelling offering. Right now it feels like there are lots of cross-platform development approaches for native mobile apps. AIR offers a good solution. I suspect over time, the market will condense and I hope that AIR is one of the success stories. I don't know if AIR will be the winner, but it has the potential to do so.

If Gareth was referring to a "business" model in flex Components, then I'm not sure a successful one ever existed. Or rather, I haven't found it yet. Selling Flex Components was never a viable model for Flextras. It grew to a nice side business, making roughly $10K a year, but that was not enough for me to do it full time. Even though I did do it full time for 2 years or so, though.

I had planned for a 70% drop in income to launch Flextras, then have it grow from there. But I actually had a 90% drop in income. At some point I stopped telling consulting clients to shove it.

Flextras was growing each year, although slowly, but Adobe pulled the rug out from under that. Generally we did 20% of the sales in December, yet after last November things just nose dived to nothing. That cut into revenues, of course. This year sales will be in the $2K range at best, most likely lower. There are a ton of different reasons for this; and not all of them are Adobe's fault. I could probably write a book on the many ways to fail in business.

What is the Future of Software?

The Internet will change software just like it will change music and movies. Boxed software is going to go away, just like CDs and DVDs.

The cost of duplication and distribution have fallen close to nothing. Creation of said software is, basically, a sunk cost that no customer cares about. Marketing is still needed, though. People have to notice you. But, as the cost of software drives towards zero; how does a software development company make income?

I believe the future of Flextras is in formal support services. I've been working on this for a while. I hope to have it ready in time for 360|Flex in Denver. In 2011. I could write another book on why this is so late. The vendor I hired to rework our shopping cart took 6 months past the deadline to deliver code that worked.

Delivering code to spec is a completely different issue; and that never happened. I've lost count of the number of times I've missed the goal of "Flextras selling Support Services."

What Have I Been Up To?

I should be spending my summer seeing if I can make the new shopping code do what I want it to do; or if I should throw it out and start from scratch. But for reasons of personal sanity; I put that aside. I need to crawl back into my cave and refresh.

I've been trying to spend my summer riding waterslides at the local amusement park, going to as many Soul Asylum concerts as I can, and catching up on some video games I hadn't played yet. Check out the new Soul Asylum album; it's great.

What is the Plan?

Ideally, I'll come back to the shopping cart in 3rd quarter of this year, ready to tackle said problems with a fresh mind. Then I'll have 1-2 (or 6 or 12) months to finish the infrastructure problems that would allow Flextras to sell support services around Flextras and [in theory] Apache Flex.

Once that infrastructure is in place; I'll turn my head back to promoting said stuff and building new components. I have even consider launching a Kickstarter [or two or three] to 'fund' my Flex development time.

I'd love to create a Spark Alert class that works well on Mobile. I think I can do better than what is already out there. I'd love to create a ViewStack that easily supports Spark Components, MX Components, and even non Flex Display Objects because why does a ViewStack need Flex dependencies? I'd love to create a Spark port of the Flextras Calendar. That can be mobile optimized easily.

But a lot has to happen for any of this to come to fruition.

Make sure you're signed up for the Flextras Monthly Newsletter if you want to know when stuff like this moves forward. It's the best way to keep up on any Adobe Flex or Flextras related news I have to share.

More Entries

All Content Copyright 2005, 2006, 2007, 2008, 2009 Jeffry Houser. May not be reused without permission
BlogCFC was created by Raymond Camden. This blog is running version