Let's face it. At heart, most of us are "technology addicts". We like technology and what we can do with it. If we didn't, illumineX would be a glassware company, rather than a software company. If a sexy new technology walks into the room, our heads turn, and we look it over. We can't help that, it's in our blood. If it smiles back, we strike up a conversation. That's innocent enough, right? But realistically, going home with a new technology is more like a marriage than a summer romance.
The languages, platforms, and tools we prefer these days are typically based upon or support open standards, like HTTP, TCP/IP, POSIX, SQL, etc. In general, open technologies have many advantages including longer life-span in the industry, broad vendor support, and platform independence. We work with you in the early phases of your project to make sure that the technologies we employ will be scalable, robust, and maintainable in your environment.
Here are some of the technologies we find ourselves using on a regular basis. Most of our developers remain proficient in other technologies and languages, including Perl, C++, etc., but we find ourselves using the tools described below more often to provide scalable, robust, and secure solutions for our clients.
The Java language is the swiss army knife of the internet. Modern Java is Object Oriented, robust, platform independent and high performance. It's also the first development language to consider security implications in the design of the language. Java is supported by every major industry player (save one), including Sun, IBM, Apple, and Oracle. A variety of strong second-tier technology drivers like Borland are driving rapid innovation in the Java universe. There's also a thriving open source Java community, providing a variety of quality Java applications, tools, objectware, and even servers like Tomcat and JBoss.
The synthesis of all this activity around Java is that it's easier to satisfy your demanding and rapidly changing needs with Java than with any software development environment that has come before.
Prior to the creation of XML, (a common, extensible language for describing data) developers everywhere wanted something like it. Now that XML is here, it's easier to exchange data between different applications, on different platorms. This isn't always in the initial design requirements, but it's becoming common industry practice to expose data through an XML interface to make possible future integration efforts easier. XML isn't the panacea of data interchange, but it's about as close as anything has ever been. (You probably won't be able to control the alien mother ship by plugging your laptop into it and clicking the "XML" button, though.)
WebObjects is a pure Java application development framework and scalable application server. WebObjects has been the technology leader in the internet application space since the mid nineties, when it practically invented the dynamic database-driven web application market space, and has stayed current with evolving standards like J2EE, XML, etc.
The WebObjects framework provides significant benefits to robustness and scalability of a typical project. Some frameworks can't scale up in deployment to large projects, others are so complicated or expensive that they can't be used on smaller projects. With WebObjects, no project is too large, no project is too small. WebObjects brings a number of important scalability and robustness features to the table, nearly free, including load balancing and failover.
We jumped on this bandwagon pretty early, rolling our own Web Services API based on SOAP/XML/HTTP before the vendor-supplied API were available. Web Services provide an important layer of abstraction that's very useful for making legacy data available to the internet, building business-to-business operations, integrating native client applications with the internet, and all sorts of useful things. Web Services even helps bridge the gap between enterprise services based on Windows and Unix.
On top of all that, it's just plain fun to be able to say that we've been doing Web Services as long as anyone.
It doesn't always seem so important to employ a modern N-Tier application design. Development teams are often willing to build a "quick and dirty" but non-scalable solution in order to deliver it faster, then throw it out and start over on "the real solution". These days, we don't build any solutions without thinking about scalability up front. The quick and dirty solution may sometimes be needed, but we don't base it on a whole lot of effort that gets wasted later -- instead, it becomes a solid foundation for the scalable deployment to come.
We use modular design and object oriented languages, tools, and techniques on every project. A little bit of thought sprinkled here and there throughout a project can make a big difference the first time a new, unexpected requirement pops up. Oh, but of course, that never happens, does it? In fact, new requirements emerge throughout the lifecycle of a software project, and flexible, modular, object-oriented design really does help make it easier to accommodate them.
We use UNIX to host our own internet services, and we encourage our customers to consider UNIX as well. Mac OS X, Solaris, Linux and other UNIX platforms are reliable, stable, fully remotely administrable and are available on various hardware architectures including RISC and intel based systems. UNIX servers are simply the most reasonable and cost-effective remote-manageable server technology available. That said, our design decisions favor portability whenever possible, so you can deploy on Windows NT based systems if your environment requires them.
We use the Apache web server for all of our projects, and encourage you to consider Apache, too. Apache is simply the most reliable, secure, high-performance web server that money can buy. Oh, wait... it's free, too.
The tools and techniques we use are database-independent, allowing us to employ an appropriate relational database for a given project, or even build a system around your existing database. For large enterprise deployments, Oracle is often the database of choice -- it's reliable, secure, well supported, and familiar to enterprise customers. If you have another enterprise database, like SQL Server, Sybase, InformiX or DB/2, we can work with that, too. For other projects, FrontBase or Postgres may be more cost-effective or easier to maintain.
What we do…
Why you need it…
How we do it…
Case Studies…
illumineX can help you build iPhone applications for internal enterprise use, or for consumer use.