Great Start-up seeks Engineers in San Franciso

We need world-class software engineers to help deliver innovative content and community applications. You will work closely with other industry visionaries to create compelling new features and first of their kind solutions. If you like tinkering with widgets and Java is more than a drink to you, this is where you want to be!

Your responsibilities will include: • Actively participate in all phases of the software development lifecycle to develop cutting edge solutions • Collaborate with the product managers in the realization of new products by developingboth the technical specifications andsoftware solution • Participate in establishment of software development standards and processes • Support business partners in the creation of new interfaces and delivery channels • Drive the evolution of our unique mobile content delivery and advertizing platforms

Qualifications: • Experience programming and developing highly scalable applications written in Coldfusion and Java. • Demonstrated ability to work within a large engineering team and share opinions in a collaborative manner • Must have good oral and written communication skills • Must be able to work in a quickly changing and fast paced environment • Experience building international applications is desirable • Strong hands on SQL relational database experience (Sql Server, Oracle, MySql, Postgres) • 5+ years developing web server-based applications using Coldfusion and Java • Must have knowledge of and experience working with web services; that is, coding, planning, and consuming. • Essential technologies: Coldfusion, FLEX, AJAX, Prototype, Postgres, CSS • Bonus Technologies: Java, Python, PHP, Linux • A BS is required.

About the Company The company is venture backed and provides a powerful web-telephony platform that seamlessly integrates SMS, IM and voice into a single hosted system compatible with any carrier or handset. Through its patented technology, the company provides a suite of communication widgets and services such as phonecasting, audioblogging, microblogging, instant and large scale group communication (calling & texting) as well as mobile advertising (SMS and audio interstitials).

Please respond directly to me.

cfmemcached v1.1 released today

I released a new version of cfmemcached today. I recently went through and made some changes that would make it easier to deploy in different situations. I also made some changes to the new memcached client to make it easier to use and to avoid some timeout issues.

[More]

external caching for coldfusion with memcached

What is memcached?

memcached is a lightweight cacheing program that allows you to store objects and items in an easily accessed format. The memcached server stores items in a binary format so that it's easy to get these items back. The memcached server is a very light-weight high-availabilty cache system. For you coldfusion heads out there, you can think of memcached as sort of a large struct in ram that holds your stores whatever you throw at it (with some exceptions). Access is quick and non-locking (so there's no waiting around to get stuff if you have several clients hitting it at one time). The server is a stand alone server that you can get to with a client library which zips info up and sends it to the server for you. Not only that, but the memcached server can be put up wherever you have spare ram that's sitting around unused. You can have several memcached servers sitting around and based on a specific algorithm, the memcached client will go out and fetch your stored items from it's servers, however many there are.

Wait... caching? coldfusion already has that... why bother?

True, coldfusion already has caching. it'll cache queries and it'll cache whatever you want in the application and server scopes. in fact you might not get much out of memcached unless you are trying to run a high-page hit site or are trying to cache a ton of data. For example, coldfusion runs on java under a java instance. there are limitations to the amount of memory you can safely use in coldfusion without running into problems.

These are underlying java limitations for the most part, because java intances can only have up to 2 gigs (if you are running cf 7) and i think 4 gigs if you are running cf 8 and remember, coldfusion takes up some of that ram for itself (about 100 mb). I had the opportunity of working at a company where their instance of coldfusion was having a hard time staying up because it was stuffed with too much cached information. The more info you have, the more coldfusion has to keep track of it, and the more your garbage collection has to run on that java instance (to clear out new space) and garbage collection running over 500 mb is faster than running across 2-4 gigs.

What memcached allows you to do is to offload that garbage collecting to a separate process and possibly into other servers if needed. It also allows you to off-load memory allocation costs to other machines. For example, if you have a large coldfusion machine with 10 gigs of ram and you are only running 1 instance of coldfusion, that's potentially 4-8 more gigs of ram that is sitting around unused.

Another nice thing about memcached is that if you have to restart coldfusion, you don't have to reload all those cached items. As long as the memcached server stays up, you can access those items.

Sure memcached sounds good, but aren't there some drawbacks?

Yup, there are some drawbacks to using memcached, like 1. using memcached takes a little more code to use than to store stuff in coldfusion. In coldfusion you can do this:

<cfquery name="mytestquery" datasource="mydatasource" cachedwithin="#createtimespan(1,0,0,0)#">
      .... query here
   </cfquery>

and you're done.. however, to use memcached, it takes a bit more code:

if ( variables.memcached.keyExists("mykey")   {
      mytestquery = variables.memcached.get("mykey");
   } else    {
      <cfquery name="mytestquery" datasource="mydatasource">
      .... query here
      </cfquery>   
      variables.memcached.store("mykey",mytestquery,3600);
   }

All in all, it's a little more code, but not a ton. It does get more involved if you are storing the query based off of parameters. Coldfusion automagically saves and updates stored queries based on the query parameters, whereas you have to manage that in memcached. It's not tragic, but its a bit more work. However, one benefit that you gain is that you can access the stored queries and purge the cached items whenever you want. You are able to do that in coldfusion as well, but you have more control over it with memcached.

That all sounds nice, where can i find it?

You can find the coldfusion memcached client here:

cfmemcached.riaforge.org

You can get the memcached server here:

www.danga.com/memcached

high scalability - use cases

A friend of mine just pointed me to a website today with a lot of information about scalability. What looks most informative and interesting is that it has use cases from some of the big website names and how they deal with scalability issues.

The website is:

http://www.highscalability.com

probably one of the most interesting reads there is the article on database "sharding", where to achieve maximum scalabiity, you part out your database in smaller chunks on more midrange servers. makes for a good approach. Rather than scaling up, you scale out. you can use midrange or low end hardware and you minimize bottlenecks.

definately a good read if you have 5 minutes on your hands. http://highscalability.com/unorthodox-approach-database-design-coming-shard

Beginner tip: cfc's and init function

I was thinking about this over the weekend. If you just started with coldfusion or been reading around about coldfusion and cfc's you've probably read that it's a good idea to have an init function in every cfc that you make. This is a good idea to do for a number of reasons, but I haven't read to many explanations on why to call it init. Init seems to be an arbitrary designation with any reason. It's not. However, it's hard to look at a cfc and see why it would need to be called init and why you would even need one in the first place. the simple answer is: that's how coldfusion interacts with java. however, for a more detailed answer, read on for the explanation:

[More]

ColdFusion 8 (Scorpio) now in Public Beta

been wondering what the hype about ColdFusion Scorpio is all about? well you don't have to wonder any more. ColdFusion is now out on Adobe labs for a public beta. Go get it! Download ColdFusion Beta here!

Coldfusion has some really compelling new features that are really neat.

  • Server monitoring (now you don't need to go get a third party monitorying app, you can track it all in coldfusion
  • line debugging! - This is goign to be awesome. now the same functionality you might have gotten used to in Flex builder, you can now do with coldfusion using an eclipse plugin
  • multi threaded app calls using easily split your calls out into different threads and join them back into the main call, with a simple call
  • image manipulation. now you have the ability to resize photos and change photos in real time on the server without needing a third party custom tag to do it.
  • Exchange integration - almost like outlook for your server
  • included postgressql support
  • Performance enhancements!
  • Improved Flex and coldfusion integration. should make it easier to create flex applciations using coldfusion as a back end system
  • included AJAX implementation with new AJAX widgets that you can use from within your coldfusion code. Just like the cfform elements, you can include these elements in your pages and create some exciting UI's for your users.

I think that these are some fantastic improvements in the coldfusion server line. Looks like Adobe really put in some effort to get these things working right. Download it now and try it out!

If you want to read more about the improvements in the coldFusion 8, this blog has a few more enhancements listed.

Update on coldfusion's misappropriated obituary

Apparently the ColdFusion and Cobol communities generated enough feedback to warrant a follow up article.

http://www.computerworld.com/action/article.do?command=viewArticleBasic&articleId=9021399&pageNumber=1

I can't believe that i'm even reading the drivel (meaning the original article) but there it is.. I did, and i'm even commenting on their followup. It's hard to get really angry about this stuff because it seems like these rumors go around every once in a while.

[me at the watering hole] : Hey Joe, did you hear that you're a dinosaur?
[Joe] : What again? The doctor already gave me a cream to clear that up. Why can't people just let me live in peace? [Joe goes stomping off ]
[me] : touchy.....

Anyway. It sure would be nice not to have to keep explaining the business decision but results is what matters.... and ColdFusion delivers. I've been able to put apps together faster using ColdFusion than what it has taken to do a similar app in a different language. I really enjoy working in ColdFusion and FLEX (my two favorite languages/environments at the moment). In my experience in the job market, the demand is there and as long as Adobe keeps working the magic and keeping coldfusion relevant, it'll still be there.

This just in: Rumors of ColdFusion's death overblown

well, unbeknownst to me, somebody came in the middle of the night and offed ColdFusion while it was coming home from a charity art auction in downtown san francisco. I woke up this morning and found a b-line mention for it in the police blotter right next to the working stiff (cobol) found dead riding the subway after just knocking off from work and the other homeless guy that they fished out of the water next to a pier. You can see the full article here

[More]

Postgres, coldfusion and selecting the id just inserted

This week and for the next however long amount of time, I'm working with the postgres database. the last time i worked with postgres as a database was back in 1998 when I was learning to do web programming, and working with a database in perl even. At that time, i remember it was a complete pain to work with a database, much less postgres - and in perl even. Since then, I think database support has gotten better all around AND I was most pleasantly surprised to find that postgres was much easier to work with this time around.

[More]

BlogCFC was created by Raymond Camden. This blog is running version 5.7.