It’s dawned on me that I haven’t said much about my new job yet. One of the major downsides to leaving California was giving up my job at HighWire, but I’m happy to report that I like my new job at U Penn’s School of Medicine even better. I’m in the Information Services group. I don’t have as much customer contact as I did at HighWire (which I miss), but on the technical side, there is a much greater breadth to the work. Instead of having a primary focus on just scripting, I’m doing a lot of application design and database development. My current projects are a web-based email account application system, and revamping the Med student online application process. All the tools used here are new to me – PHP, Oracle, Smarty, and some home-grown tools – so that also helps keep things fresh. I’m working in a small group of about a dozen very likeable people, so I’m making new friends too. Unfortunately, my position is funded for only one year. It looks like there’s a good chance it’ll be extended for a second year, or made permanent, so I’m crossing my fingers. I’ll find out when the budget is finalized for the next fiscal year, which will happen around the end of the summer.
The application architecture that’s been deployed here is the best I’ve seen. A typical architecture for web applications consists of a database backend, Java or CGI scripts as a middle “application” layer, a templating system for the front end, and maybe a security layer (typically handled through the web server or the application layer). The architecture here has 4 layers: 1. the database (Oracle) back-end; 2. the LDL (Logical Data Layer), which provides role-based access to the database (you define your queries in XML, along with column and row based access rules, and it’s then compiled for better performance); 3. the “WI-Engine” which serves as the application layer, written in PHP (it allows you to design your pages in an object-oriented fashion – using “panels,” “subpanels,” and “dialogs” which can communicate with each other); 4. a template layer, using Smarty.
The WI-Engine took the most getting used to, as I had to orient myself to thinking of all the page components as objects. Once you get going with it though, it’s very efficient. The LDL is cleverly constructed. Since the applications we design are for use within the School, you always run into issues such as what a student can do with an application vs. what an administrator can do with it. All those access rules are clearly defined in one place, and it’s sitting just above the database itself, so it’s quite unlikely that someone could hack through any loopholes in the application layer.