Software is like an onion. If you are not a developer this may sounds strange but software, just like an onion, is made up of layers upon layers. Unlike an onion, where the layers are made of biomaterial, software is made of layers of abstraction.
Each layer attempts to simplify the usage of the layer(s) below and hide its complexity by focusing on a special case, thereby creating a new abstraction with a terminology tailored specifically for it. Typically an abstraction allows you to do more with saying less.
Now, I’ve mentioned abstractions several times already and perhaps all this sounds just that – abstract! Ok, so what am I talking about really? Well, that can probably best be described by an actual example.
Most computers have a hard-disk, this is an electronic device that uses magnetic disks for storing information. The computer can send simple commands to the hard-disk, commands like: ”start spinning the disk,” ”move the read/write head to position x,” ”read some bytes,” ”write these bytes,” etc.
Now when you think of a hard-disk most likely you think of the files and folders on your laptop and it may not be directly apparent how this relates to what I described above. Well, the filesystem that you are used to is a specialized way of using a hard-disk – where we organize data in files and folders. A hard-disk could in fact be used the same way as we used magnetic tapes, where one could only read data sequentially, starting from the beginning and reading through it until we found what we were looking for.
Thus the filesystem is an abstraction that adapts the use of the hard-disk, or some other device for that matter, to a specialized use that fits us well (commands given to a file-system would be ”read file mydocument,” ”create folder x,” ”delete file y”).
Ok, so now it’s hopefully somewhat clear what I am talking about and we’ll get to how this relates to Appivo.
When a developer creates a new application, he must know and understand many of these layers and he must be able to create his own layers above them to create an abstraction around the problem that he is trying to solve. A lot of this is just tedious work, where you have to do the same or similar things over and over again. Developers refer to this as boilerplate and to solve it they build frameworks. What are frameworks you ask ? They are, again, just layers of abstraction, tailored around some specific kind of use. A well known example of a framework is Ruby-on-Rails, a web-application framework.
If we now leave the layers aside for a minute, here’s a related observation: the demand for software is growing exponentially, and hence the need for developers. But how can we satisfy the demand for software when the demand is growing so quickly? The answer is to make software development more easily available so that anyone can become a developer. Whereas tailored software systems used to be a privilege of huge organizations – governments and big corporations, we are now on the brink of enabling small companies to get the same technical advantages. Cloud technology has changed the economics of running IT-solutions forever and it is time for cloud-platforms to revolutionize the creation of applications the same way.
At Appivo we think it is time for the next step in the evolution of software frameworks, frameworks that operate with layers of abstraction that are simple enough that people without computer-science degrees can turn their ideas into reality.
As you’ve understood by now, when you create an abstraction you have to pick a specialization – Appivo’s platform is optimized for building information systems – systems that collect, store, manage, share and act upon information in a secure, reliable and scalable way.
Our specialized abstractions provide you with a toolbox that lets you create applications rapidly, focusing on the core of what makes your application unique, what we developers refer to as ”business logic,” and not much else. Also, you do not need to worry about all the intricacies of running your application – how to store data on multiple clustered database-servers, hot to replicate across geographically separate data-centers, how to integrate with a solution that can send an SMS or how to failover from one application-server to another when a hardware component breaks down.
If this all sounds exciting and you would like to start taking advantage of the next revolution in IT you should get in touch with us. Likewise if you’re an engineer that feels like becoming a part of the team that makes this real, we’re always on the lookout for talent.
Speaking of that, we’re offering thesis-projects for computer-science students next year. If you’re a student at the University of Örebro and you’re looking for something out of the ordinary then you should definitely get in touch with us.