Wednesday, February 6, 2013

Tech Talk: FatFractal

In my last post, I alluded to some exciting new technologies that I had the opportunity to work with when I landed my first industry job. The client that my team was working with needed an iPhone app and a mobile web application for their start-up company, and they were utilizing the services of FatFractal for their applications' backend and data store. The power, robustness, flexibility, and ease-of-use of FatFractal was a breath of fresh air compared to the traditional Web development technologies I had been learning in the classroom.

FatFractal is a cloud-based backend that is portable across a wide variety of platforms (iOS, Android, Javascript/HTML5), and it is much more than simply a data store. It combines a robust object-oriented data store, customizable and extensible server code, application registration and deployment services (on both your local machine and the FatFractal Cloud), and other convenient baked-in services (e-mail, Facebook/Twitter integration, push notifications, transaction processing, etc.) into one tight and lightweight package. With the traditional mode-view-controller (MVC) Web development paradigm I had been taught and used in numerous class projects, I was using SQL to construct my data model and database schema from scratch, bare bones Java servlets to provide server-side functionality, and JDBC with prepared statements to populate my local objects. Often times I found myself banging my head against the wall while having to work through the intricate details of configuring these various layers and then wiring them together by hand. In that sense, FatFractal was a dream come true, because it combined all these services I needed to make a powerful application in one place while abstracting away the nitty gritty details and allowing me to focus solely on what was important: building my application.

One of the features I appreciated the most about FatFractal was how fast and simple it made defining my data model and accessing my application's data. FatFractal provides a simple and intuitive domain-specific language (DSL) which allows developers to define all the object types, attributes, permissions, and collections for their application in a single file. Relationships between objects can also be modeled simply by defining an attribute as a reference to another object or as a grabbag containing references to many objects. CRUD (Create, Retrieve, Update, Delete) operations on your data can be performed by making simple method calls through the FatFractal SDK, of which there are versions for multiple development platforms. The FatFractal SDK enables complete interoperability between local objects in your application's programming language and objects stored on your application's backend. Defining and manipulating your application's data becomes an afterthought thanks to the simplicity and abstraction provided by FatFractal.

Aside from data management, FatFractal also provides a number of other built-in services that are ready for use by your application from the start. Sending e-mails, verifying users through Facebook or Twitter, delivering push notifications on mobile platforms, processing credit card payments, and more are all available to your application through, you guessed it, simple method calls in the FatFractal SDK. Again, the details of such services are taken care of by FatFractal while your application sits back and enjoys the functionality. In addition, your application's backend is completely extensible. You can configure event handler code to fire every time a specific CRUD event is executed on your data, or define a stand-alone service that is executed by the backend any time it is called in your application code. The flexibility is endless, and as a developer, it was exciting to be able to harness the power of a system like FatFractal to perform custom services on behalf of my application.

When doing any kind of Web programming in school, one aspect of development that I always dreaded was getting my application deployed. Manually constructing and deploying WAR files and dealing with the onslaught of bugs that ensued was not how I enjoyed spending my time, so I was thrilled to find that FatFractal had this burden covered for me as well. After downloading and installing the FatFractal engine directly on your developing machine, a single command line instruction is all it takes to deploy your application locally or on the FatFractal Cloud. Local deployment is a wonderful commodity to have at your fingertips, as you can construct, tweak, deploy, and re-deploy your application as many times as you wish until you are satisfied and ready to publish it on the Cloud for all to see. Implementing and debugging new features for your application in a safe, local environment is an extremely valuable tool for any Web developer, and FatFractal nails it.

FatFratal is a rich and powerful system, and as such, this overview only scratches the surface on all that it can do. If you would like to learn more about the types of devices and platforms FatFractal supports, the infrastructure on which it is built, or any further details on the types of services it provides, I strongly encourage you to visit their website at www.fatfractal.com.

Monday, February 4, 2013

For Students: Finding Jobs in Unexpected Places

Most college students have a pretty simple set of priorities: going to class (most days), spending as little money as possible on frivolous commodities (such as food and cleaning supplies), letting off some steam every now and again to keep the stress levels low, and of course, the big kahuna, finding a job. As I'm sure my fellow collegians don't need advice pertaining to the first three topics, I'll offer my two cents on the latter.

The more well-known venues for job hunting in college are fairly obvious, mainly the career fair, information sessions and recruiting meetings held by potential employers on campus, and perhaps your school's online career opportunities search service (for the University of Georgia this was Dawglink). However, there is another equally important resource available to job-seeking students, one that is often overlooked. This resource is closer at hand than any of those previously mentioned, and it's available on a daily basis. This resource is your classmates!

Yes, the folks you sit with through mind-numbing lectures and far too frequent pop quizzes can be excellent facilitators in your job search. Talk to them. You never know what you might find. Maybe it's just the quirky nature of tech students, but many of my classmates were involved in a wide variety of endeavors and projects. One kid built and mounted a gasoline engine for his bicycle and putted around campus without having to pedal. Another guy often talked about opening his own computer repair store after graduating. A good friend of mine was part of a group of students building iPhone apps with financial backing from an investor, and I had no idea until I finally got around to talking to him about jobs in our fourth year. The point is you will never know what your peers are up to unless you talk with them and get to know them. Sure, some may have different interests and hobbies than you (like building gasoline-powered bicycles), but others may share similar interests and even similar career goals. 

In my major, I have done countless numbers of group programming projects with my classmates, which makes them more familiar with my skills and work ethic than any outside potential employer. A classmate with knowledge of your capabilities may be able to point you in the direction of an opportunity that you had no idea existed, or better yet, actually be involved in a project that they want to bring you along on. The latter is exactly the situation I encountered when I found my first industry job. One of my classmates had started a student Web development team, and I was able to work with them on a major project for a start-up company that needed an iPhone app and a mobile website. Although this was by no means a career, I gained invaluable industry experience in Web programming and was exposed to some new and exciting technologies (more on that in a tech talk soon!) that I may never have discovered otherwise. So whether you're in full-on career searching mode or just looking to get your foot in the door with that first internship, take a look around you. While you're on the verge of dozing off in class, your next job opportunity could be sitting just two seats away!


Tuesday, January 29, 2013

Is This Thing On??

Hello world! And thanks for joining me on my first trip into the blogosphere.

I am a senior Computer Science major at the University of Georgia (without a doubt the best collegiate institution in this great nation) and am quickly approaching the most terrifying date in the life of a young 20 something -- graduation. As such, I've recently found myself reflecting happily on the past, tightly embracing the present, and looking cautiously (yet optimistically) toward the future. Through this blog, I'd like to share parts of my journey as I make my blind leap from cozy college life to the ominous uncertainty of the real world, partly because I think someone out there in the cyber audience might find it interesting or relatable, and partly for my own sanity. 

I can't say for sure what I will be posting about (blog newbie alert), but there are a few things I can say. I love web development and hope to make it a career. I am part techie nerd, part sports buff, and I know that is a strange combination. And as I get closer to graduation, I am paying more attention to how the industry of technology compares to what I have been learning in the classroom. A mix of my past and present experiences along with any of the above topics can be expected here. 

Thanks for reading, and until next time....