Introduction to Papervision3D
The truth about avoiding the phone company with VoIP
VoIP, or Voice Over IP is seen as the future of telecommunications. In the enterprise, it took hold about 5 years ago, and about 3 years ago it became the norm for any new phone system. In the highly controlled network environment of the office, the technology flourished and eventually became rock-solid by breakthroughs made by companies like Avaya, 3com and Cisco.
Around the same time consumer-based VoIP products like Vonage started hitting the market. These use the consumer’s internet connection and provided a dialtone like replacement for a standard phone line. Generally these types of connections were less expensive (and in some cases, they were MUCH less expensive), but at the same time they relied on the general internet (without any quality-of-service gaurentees). Recently there has been a lot of fanfare over Google Voice being available on various mobile devices like Google’s Android and Apple’s iPhone. This allows users to use their data plans and bypass the cell-phone companies. The funny thing is, even AT&T sees consumers bypassing their services as a viable threat – they filed paperwork to lift the requirements that they provide phone services in their entire claimed market.
There are a few problems with this mass migration from traditional telephony services to this “wild-wild-west” VoIP services.
First off, VoIP has no concept of location-based services. With traditional PSTN “landline” or business services, the phone company delivers your services to a physical location (your home or business). This information is tied to a database which is given to 911 and other emergency services when you need it. Because VoIP connects over the internet, there is no real way to track where a call is physically being placed from — and the problem is exaserbated by devices like firewalls, VPN tunnels and MPLS networks.
Next, there is no concept of Quality of Service for many of these consumer devices. Companies like AT&T in my local market offer DSL service in most areas that has a 1MB download and 256kbps upload. This allows for a descent speed for doing things like browsing the web or reading emails. However, if you try to use a VoIP connection you most likely will saturate this connection — and if you try to browse the internet while being on the phone (something I do quite a bit), you run a huge risk of your connection breaking up or being disconnected completely. More advanced routers and internet service providers offer QoS for connections, but these are not universal, nor are they easy to setup. I won’t go into the reliability of internet connections in storms, power outages, etc. where quality and resiliency is a needed in emergencies.
Compatibility is another issue that is becomming apparent. There are hundreds of different “VoIP” providers out there, each with their own software or hardware application. Companies are all trying to write their own standard (like Skype), or if they use some of the open standards (like Google), they implement them in a way that makes it very difficult to interconnect with others. This is very similar to the beginning of the telephone network where there were lots of different networks, and none of them connected with eachother. The government finally stepped in and created some laws (known as Common Carriage Laws) that required anybody who wanted to be a telephone provider to interconnect with each other. Currently many VoIP providers do connect via the PSTN, but often times they charge users additional fees to do this.
Finally, we need to take a step back at the PSTN system itself. It has become a commodity item, and even further more, it has become a so universal it is considered a utility. In many markets it is heavily regulated by the government and has lots of redudancy, backups and, well it’s a proven technology. As more users disconnect their traditional phone lines and go with VoIP providers, less work is being put into this system and eventually that glue that holds it, along with all the PSTN providers will begin to go away. Not only that, but because it has become such a commidity, you can get land-lines for cheap, and unlimited minutes (both in cell and landline), it makes very little sence to use these technologies other than it’s the “next best thing”. If you don’t believe me, take a look at your VoIP provider, and compare that to a $14 phone line (unlimited local calls, and up to $0.05 a minute for long distance).
Think twice about cheering on AT&T in cutting the cord with land-line service. It’s something that is easy and well understood. Also think about how you plan to get internet access — and how those who are in unprofitable areas can get basic services (like phone and internet services) if companies like AT&T and Verizon are not forced to provide them.
And we have…. AIR 2.0 (beta)
Tonight marks the release of the AIR 2.0 beta to the Adobe Labs! This is truly a remarkable release that I’m sure will allow web developers to continue to build cutting-edge, multi-platform applications that we have come to expect from AIR.
So, what’s new? Well, you can check out some release notes here, or this Adobe TV session from MAX last month.
What am I excited about? Well, there is a whole lot packed into this release, but some of the things that I personally have been playing with are the new API’s that allow us to directly work with the audio we get from the Microphone (check out www.getmicrophone.com for more information about the back story). This new API allows you to get the raw ByteArray data right from the microphone and save it to disk, interpret it, or manipulate it. You can check out my ADC article here.
Another cool feature that AIR 2.0 is getting is IP Multicast support. Yes kids, you heard me right — AIR 2.0 will be able to do peer-to-peer audio and video streaming in a way that allows you to save bandwidth and create highly-scalable video applications. This is one of those things I have been waiting on for years.
Oh, and did I mention that AIR 2.0’s memory and CPU use footprint is 100x better than before? Well, that may be an exaggeration, but lets put it this way. An application that I used to run 24×7 on my server used to accumulate about 10MB an hour, filling up my RAM quickly and crashing out after about a day. The exact same app compiled with AIR 2.0 has been running for about 14 days now, and is still using nearly the same amount of memory as it did when it launched (about 20 MB). Simply amazing!
So, download and enjoy TODAY!
How to get hired : Resume Tricks
I currently have three close friends that are all looking for jobs (thanks economy!), and are seeking my help with their resumes. Since I’ve been in the hiring position a lot in the past few years (both at small businesses and MSU, an enterprise), I’d like to share some of the tips that I’ve been sharing with my friends. I encourage you to fill the comments with more suggestions and your experiences to share
Cover letters:
- The cover letter is your chance to show your future employer your communication skills. This usually trumps the checkbox you had on the job application of “Has good written or verbal skills.” Make sure it is spit-shined! Spell-checks, grammar checks and punctuation checks are all MUSTs before you print the letter.
- Did you follow proper business etiquette in the formatting of the letter? Do you even know what that is? I am not a dear friend, but a future boss — your letter should act that way. (Pay attention to the opening).
- Your cover letter should NEVER be generic. NEVER, NEVER, NEVER open the letter “Dear Potential Employer”. If you are applying for a job and have direct communications with somebody at the company, put their name on it. Your cover letter should always have information you know about the company you are applying for — and this means do some research. If you are applying at MSU, I want to see something about working at the largest single-campus university in America, or working for a Big Ten University.
- The cover letter should always include your full contact information, including name, email address, phone number and mailing address. If you have a blog, twitter account or linked-in profile, it would be bonus points to include them too (especially for tech jobs).
- You should never mention pay in your cover letter. This is a huge turn-off for the people reading it, and it makes you feel like your only doing it for the money.
- Your cover letter SHOULD highlight your objectives at working at the job (remember, getting paid, and simply holding a job are objectives, but those should be understood — don’t highlight them).
Resumes:
- When I am am first looking at potential candidates, I always start with the resume. Your have 30 seconds to wow me. Your better make those 30 seconds pleasing to the eye. Have you thought about using color?
- Make the size of the resume fit your content, not some golden rule. If you can say everything in one page, use one page. If you need three, than use three. Don’t ever make the size of the font too small to squeeze in that extra bit of info, or have lots of empty white space.
- Your resume, like your cover-letter should have ALL of your contact information on it. Again, postal address, email address, phone number (landline and cell), blog, twitter, etc.
- If your objectives section is one sentence, and very generic, don’t include it. That is what the cover-letter is for. Make it specific to the job you are applying for, and very descriptive of your goals in the job — but don’t include the “to make money,” “to have a job at…”, or simply “to learn and grow.”
- You should not list more than 3 years, or your last three jobs (whichever has more), unless older jobs are relevant to the job you are applying for. Having pages and pages of past jobs doesn’t add much to the mix.
- Past jobs should always have : Company name, location, your position, your responsibilities, and the time you worked there. Make sure to put your real job title on there, and not something like “Maintenance Engineer” (instead of janitor). We know not every job is glamorous, and sometimes we look for those types of positions to show a well-rounded individual.
- You should always list any accreditations, certifications, or major honors you may have on your resume. They don’t have to be relevant to the job, but they show you as an individual.
- Put your educational references on your resume. Make sure to include the name of your high school, location, and graduation date. If your high-school changed names or no longer exists, find out where your records are. The same goes for college / universities. If you are older, only show the college (but only do this if you completed school). Many larger organizations use this information to verify you graduated, and in all honesty, use this space to catch liars. Use this space to show involvement in relevant clubs, projects, or activities. If I’m hiring you as a webmaster, I don’t care that you were homecoming king, but I do care that you were in the Communications Club, and an NHS scholar. You don’t have to include your GPA if you don’t want to.
- ALWAYS include references, unless you are in a position where you don’t want them to be contacted. For example, if you currently are at a job and don’t want people to know you are applying for others, then it is permissible to have a “Ask for References.” Otherwise, put them in — it makes my job easier, and your chances better.
Adobe MAX Wrap-Up
So, I’m back from LA, and the Adobe MAX 2009 conference. Just like the MAX tagline of “Connect, Discover, Inspire,” I truly able to accomplish all of those. This year’s conference packed in a lot of announcements, and gave everybody a good idea of where Adobe is heading in the marketplace. All of the keynotes and sessions were recorded, so make sure to check them out on Adobe TV!
So, lets first talk about some of the major announcements:
- ColdFusion 9 was released. This has been in the works for about a year and a half, and offers a bunch of new features. Some of the new things that are most compelling include the ability to work directly with Microsoft Office documents, ORM, integration with Sharepoint, and certain features pre-packaged as a service.
- LiveCycle ES2 was released. I’m sure this effects all of 20 people on earth, but this product is just plain awesome. LiveCycle ES is a workflow management applications (for those of you who only deal with consumer applications, think of the process that your paperwork has to go through when you hire somebody new. You have multiple interviews, background checks, etc. that all belong in a workflow. This allows you to manage that process, and make sure nothing is missed). With it, a bunch of new Flex components have been released that allow you to integrate your applications with these workflows. Yet another important part of this suite is the “LiveCycle Collaboration Suite,” formerly known as Cocomo. This suite allows you to make your own interactive / collaboration services.
- Mobile Devices. So, there was lots of fanfare about Adobe’s push to make mobile devices 1st class citizens in the computing landscape. 21 of the top 22 device manufactures have signed on with Adobe including RIM, Symbian, Google, Microsoft, etc. The only one that is missing is Apple, of course, but Adobe didn’t waste time shooting a warning shot over their bow. Adobe announced that in CS5, they expect to be able to publish full-fledged iPhone/iPod Touch applications that can be published on the iTunes store. This does not mean that the Flash Player will be available for the iPhone, but simply that you can publish applications that were created in Flash/Flex/Catalyst.
A few things that were not released, but were talked about:
- Flash Builder 4 - This looks like it was delayed until Q1 of next year. It’s a shame, because a lot of the Adobe tooling is based on it now (interesting thought), so many of those applications have to wait too. This included some ES2 apps, etc. Adobe did release Beta 2 to allow people to refresh their builds, and play with things a bit more.
- ColdFusion Builder – This also looks like it was delayed until Q1 of next year. It is a LOT closer than people have been anticipating, and, personally I really like it. They have really done a lot of research on the workflow model, and I think they will win over a lot of developers who have been using Allaire ColdFusion Builder, Dreamweaver and all the other products.
- Codename Stratus – This project allows users to build truly P2P applications with the Flash Player or AIR. It allows IP Multicast or some sort of “home” server to point copies of FP together an allow them to communicate without the use of a server. This saves bandwidth for the server, and makes the experience better if the users are geographically near by. The shear thought of being able to use IP Multicast in FP is a huge win for me. This will require FP 10.1.
- LiveCycle Data Services 3 – It is coming, and very soon. This brings a whole slew of new features to the LCDS package that will make huge data applications faster and will allow data to flow better. One of the coolest things about LCDS3 is the data modeler. It brings the features of a UML designer, and allows you to both deploy databases via your model, or to build the skels of your applications via the model! This, to me, is one of the coolest things I saw at the show. How much was an LCDS server again?
- Adobe Connect for Mobile – So, this one blew me away, but only a peep was said at the conference. During the Day 1 keynote, they showed the iPhone, among other devices using a mobile version of Adobe connect to join meetings! This, to me, is one of the features that has the potential to keep Adobe Connect ahead of all the other web conferencing suites out there. They said that we can expect the iPhone, RIM, Android and Microsoft connect clients to come out “soon”.
- Flash Player 10.1 – Lots of neat stuff coming in this one. FP 10.1 will be smaller, meaner, and mobile ready. It will feature lots of stuff like the Stratus support, and hopefully will make my bed and pour me a beer. Make sure to check out the online sessions on this one
I also had the chance to catch up with a lot of the evangelists, and talk shop with a lot of the people I usually only communicate with online. It was great to see everybody, oh, and yeah, I went to a lot of sessions and labs too. I’m hoping to go through all my notes from the action-packed week from my labs and get cracking on some new apps I have floating in my head (yes, I was inspired).
Posted in Adobe, Personal | Tags: Adobe, Android, Application Devlopment, ColdFusion, Flash, Flex, iPhone, LiveCycle, LiveCycle DS, MAX, Mobile, RIM
Know the code you are in…
Last week I had the pleasure of attending the Detroit Java User’s Group presentation from Josh Holmes on Application Simplicity. Walking into the presentation, I, along with most of the people that attended expected the typical UX presentation (keep it simple, stupid! among other common slogans), but I was pleasantly surprised at one of the tangents that we went across.
“If you have to think about how to explain the solution, it is entirely too complex.”
We then went into a great dialog about how you can best arrive to the most simple solution. One of the things he kept drilling to us was this : If you don’t understand what your code is doing in the background, you can’t write good code.
Today, we live in a world of code-hinting, code-wizards, code cookbooks, and frameworks that write our applications for us. Far too often I’ve been asked to help debug an application or help solve an issue where the person really has no idea what their code is really doing in the background. Dragging and dropping a data-grid onto the stage, dragging a database connection to it and publishing the application is great — but can you actually tell me what is happening in the background. Would you be able to explain why it starts to slow down after running the application was running for 5 minutes?
In the United States we tend to have two camps of people who create applications. Some people are based in computer science or computer engineering. These people have taken some sort of formal classes in computer science theory and understand memory management, multi-threaded computing, etc. The other camp is primarily developers — people who typically don’t have formal CS/CE training, and often will require the use of tools or frameworks to complete their projects. The difference is either engineering software or developing software.
Do you know what kind of code your tools or frameworks are creating? How much overhead does storing that variable as a string vs. a boolean have? How about creating your own class? How does your framework / language manage CPU cycles when you store large amounts of data?
Just things to think about. Knowing how your underlying code works, and not just relying on a tool to create your application can help you write better code. Anybody can use a tool to connect a web page to a database, but not everybody can engineer an application.
Posted in ColdFusion, Flex | Tags: Application Devlopment, Computer Engineer, Computer Science, CS
Innovation in Cable Television
Last week, I had the pleasure of going to the AHECTA conference in San Antonio, TX. This conference was a great opportunity to network with my peers in the Cable Television world, in particular those that support colleges and universities throughout the country. Some of the things the schools are implementing to entertain their students (read: recruit their students to live in the dorms) are really innovative, even with the lack of money that is out there right now. Listening to some of the schools that are sharing content via Internet 2, or implementing IPTV across their campus makes me proud to work in the education industry.
Unfortunately, one of the constant themes of the conference was about the content providers that we deal with. Many of the larger content providers like Comcast, Time Warner, Verizon, etc. have become the 1,000lbs gorilla in the room that only want things their way. Everybody is scared of the new, and have a real hard time with innovation. Lets face it, despite going digital (squeezing more channels in the same channel space as before), cable television hasn’t really changed a whole lot. You turn on your TV, you turn on your tuner, and you select your channel. Some new features, such as Video on Demand are really re-inventions of old ideas (Pay-Per-View).
When we start to look at what is happening to the industry — the move to high-def, with highly compressed, loss-less video, and especially the change to new mediums, they seem scared. If you were to approach a Comcast or Time Warner and ask them if you could deploy your campus cable with an IPTV setup, they would walk away right there. If you go directly to an ESPN or Showtime, and offer the same (even including a DRM package like Flash Media Server), they would tell you it is not in their supported model. It’s funny to watch the entire industry clammor for a change, yet the producers of the content refuse to allow the change.
So where does all this leave those of us providing the services to our communities? Well, for the most part, we will provide what the content providers allow us to provide, and will try to innovate to what our communities want. One day, the two will meet, and all will be happy
What types of technologies do you think students would want to consume for their "television" watching?
Posted in Telecom
Why ColdFusion should NOT be taught in schools
I already know that this post won’t be popular with my close friends, but I think it needs to be said anyway… Don’t worry, this isn’t a “ColdFusion is dead” article.
I was recently asked to sit down for lunch with two computer science professors from two different schools in my area. For the most part, I was in “a fly on the wall” mode as these professors talked about various things such as how they catch people copying code, to how they teach good memory use, etc. This wasn’t a formal meeting by any sense, but rather just a meeting of two friends who happen to work in the same profession.
About half-way through lunch, I decided to ask about using a more stable language, like ColdFusion (CFML) to teach web programming. Currently one of the schools teach Python (and considering Ruby) and the other teaches PHP for their courseware. After both chuckled at me, I dove into my Adobe taught ColdFusion isn’t dead, ColdFusion has a growing population, ColdFusion has some open-source alternatives, etc. Both sat there and soaked in my sales pitch. One of the two even used to use ColdFusion on some side work in the past.
“It’s not about the servers — it’s truly about the language.” spoke the gent from the larger school. “For a formal, introductory computer science class, ColdFusion [CFML] really doesn’t offer us anything that another language does. And it adds in a lot of complexities and guessing that make other languages easier to teach in the classroom“
As he explained his position, it started to soak in to me — ColdFusion while really easy to pick up and learn teaches some really god-awful practices. And if you take a look at the ColdFusion community at large, it seems to be a real mess. Some of the great points from his argument :
- CFML is not a typeful language. For the end user to not be able to specify to the language/compiler that you want to store a String vs. a Number can be troublesome and confusing to both sides. What is often worse is that to force ColdFusion to choose a particular variable type is very awkward and more-or-less a hack.
- There is no good CFML debugger. If you do your work in the current Official CFML editor by Adobe (Dreamweaver) there is no debugger. You have to install another, 3rd party application (Eclipse) to do your debugging. Even then, it is cumbersome, and not really feature complete. How much memory is this CFC using? Why am I getting this response from the Query? These are the questions that the debugger still fails to answer properly.
- The documentation is poor. The LiveDocs, while OK, are very un-organized and seem to be very short on examples. The community is good at sharing examples, if you can find them. The Adobe search engine is a joke on their site. There are only 4 current books, by two authors (although, one plus to this is they both live in Michigan).
- CFML, by its design will fight you in implementing the most common design patterns. Lets face it, most of the MVC frameworks are a hack. In fact, when you take a look at it, most frameworks that exist for ColdFusion — even Adobe’s own Model-Glue are exceedingly complex because they have to implement so many workarounds to get their pattern to work.
- Available Open Source / Free / Alternative engines are not 100% compatible. Even BlueDragon, the engine that has implemented the most compatibility, is only about 90% there. This is a huge disadvantage if you use the “there are other engines out there” argument — most, if not all, examples and documentation are written for the Adobe engine.
- Some features are just some “black box”. This is one item that raised a huge concern, while being a huge advantage for the regular business community. Programmers, specifically students want to know how things work. They want to know the nuances of why FTP would be a sessionful protocol, rather than something like LDAP. These tags/engines are essentially black boxes with ColdFusion, with very limited visibility as to what is happening on the back end — all we know is that they ‘work’, and get the job done.
Some of these things are changing in future versions of ColdFusion, I’m sure. Others are just breed from the history of ColdFusion, and for the regular community, that’s not a bad thing. For example, does a web / CFML programmer really want to know how the POP protocol works? No! That’s why they use ColdFusion!
So parting from my experience, I do ask the question — where SHOULD CFML be learned? That is a really tacky question, one that is really hard to answer. From the above, CFML shouldn’t be chosen to be taught in a formal programming class, but how about in a web programming class? Rather than teach HTML, how about HTML and CFML? Should CFML be taught at a community college? How about at the high-school level where programming theory is not nearly as important? What are your thoughts?
Posted in Adobe, ColdFusion, Personal | Tags: Adobe, Class, ColdFusion, CompSci, CSE, Education, Java, K-12, University
Computing in the Cloud… A thought
At a recent conference I was at, I got in a rather lengthy conversation about Cloud Computing, and its effects on both society and computing. My thoughts were in the minority, but I guess I come from a unique position.
Cloud Computing, for those who are not familiar with it, is the concept that you can load your applications and data into some server "out there" or "in the sky". Your application may reside on a single server, or multiple servers — but you really don’t care. Your data may be under your control, or it may be essentially rented to you for some price (this may not be in dollars, but in ad revenue).
What are my thoughts on it? Cloud Computing is a great concept, but it is essentially taking us back to the old Client/Server days, except we no longer have control of our own destiny. Sure, this may be great for personal, or projects that are no critical, but would you rely your business model on this?
One of the first examples people, or businesses bring up is Google’s gMail service. Google offers a crazy amount of email space which is always available to you as long as you are connected to the internet. They ask for nothing in return, other than to retain your data (email), and serve you advertisements based on the email you get. If you get lots of email on chemistry advancements, then you will get lots of advertisements for test tubes and petery dishes. For most people, they would ask where they could sign up! The two problems I see with this is:
- What happens to your sensitive data? Google doesn’t care what your line of business is, but what about others that have access to Google’s data? What would happen if an advertiser (competitor?) is able to drill into your data — data they may be entitled to because they paid for that advertisement. Even if you are protected from such cases of accidental espionage, the fact that Google (or your service of choice) is building such a close taxonomy of your data, they know exactly what your business is up to — before your employees and shareholders for instance. Remember, they essentially own this data, and you lease it from them.
- What happens if the network is disrupted between you and them? Sure this could happen if your resources are local, but in that instance you are in much further control of the availability of the data. Could you last a day without access to your calendar, email, voice or other hosted applications? How about two or three days? If your internet connection goes down and you host these services locally, then chances are, while you will be in a rough spot, you can still operate your business.
I keep seeing the trend of people moving to these services without much thought of the value of their data. Have you ever read through the license agreement of your favorite cloud service? Did your lawyer? Do you even know where to find it? I am a person who is very tied to many, many laws and regulations in my industry. Not only do I have to worry about education specific laws such as FERPA, but I have to abide by many of the laws and regulations that the FCC and Homeland Security throw my way. Oh, and did I mention that I’m paranoid about my constitutes intellectual property? Michigan State University currently has a set of rules that prohibits the use of many popular cloud services for email or offline storage — a view that seems to be unpopular by the industry for some odd reason.
Another service, which I do tend to like a bit more (and do use for personal use) is Amazon’s cloud services. In their setup, you essentially launch and maintain a computer out in the cloud. You pay a per-minute charge for the amount of usage that you use, but you maintain full control and access to your own data. You maintain the root password, you maintain the encryption, and you maintain the storage. Now, you can still run into the issue of network connectivity, and its facacilities, but this style of service makes both me and my lawyers breathe a bit easier at night — we own our data
Flex, LCDS and ColdFusion Magic
This past Wednesday, I did a presentation at 360|Flex in Indy. My presentation was on Flex, LCDS (LiveCycle Data Services), and ColdFusion, and how they all work together. It was a lot of fun to talk about this topic that is so near and dear to my heart. Because it was the last session of the day, I was asked by many of the participants to record it so that they could listen to it later
For those of you that want to ‘participate’ with the preso here:
- Powerpoint Presentation
- Sample Downloads:
- Parks Viewer Completed
- Parks Viewer Skeleton
- Email Client (Requires IMAP CFC addin here)
- LCDS/ BlazeDS Configuration Files
Also, the screen-share of the entire presentation is available below:
Thanks to everybody who showed up, and also a big shout-out to TechSmith for providing the giveaways at the end of the presentation!



