Skip to content

Instantly share code, notes, and snippets.

@tracend
Last active November 13, 2015 09:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tracend/db6f2ec8b4817c285c32 to your computer and use it in GitHub Desktop.
Save tracend/db6f2ec8b4817c285c32 to your computer and use it in GitHub Desktop.
Makesites Insider: The Little Server That Could

The Little Server That Could

A cautionary tale about machine intelligence and how it can aid in sustaining the Web; the importance of automation in our professional lives and a foresight in embracing the next evolutionary step in our human/machine relationship.


Servers can't even

We treat servers as mindless drones. We set them up in a rigid fashion and they simply appear online through a network interface. Uptime and response time are important attributes for these machines but at no given time do we question what a server is doing. Their parameters are very well defined and their limits are narrow and small. Many servers are so dumbed down they operate like ATMs. You request something, you receive something: end of transaction.

Servers are expected to be dumb. We want them to be dumb. How else will they be predictable?

Before we go further down that path lets take a step back and remember how sci-fi predicted servers would exist. Everyone knows the signature appearances of HAL 9000 or the computer of the Starship Enterprise. Their role was to manage and sustain a broad spectrum of operations, towards assisting people in their tasks and functions; in many cases required to maintain an overview across place and time of any specific subject. Sound familiar? What sci-fi referred to as "the computer" is in fact how we use servers.

But that means that the AI is on the server? How can AI live online? In Motoko's own words: "The net is vast and limitless". In practice, an AI without a network is like a brain in a coma, so we can truly claim that AI is a server component.

Servers can totally

If blending AI with servers sounds like a scary concept, lets remind ourselves that this kind of AI is not self-serving by definition and even if it becomes one day it will not be interested in serving our needs, rather pursue its own needs, so that AI will immediately become dysfunctioning. What is mostly obvious in our case is that:

Servers serve and a smart server can serve better

Lets try to see how we can translate that statement into tangible concepts for server operations.

Distribution

This is the obvious area to look into as it's the primary use for servers. CDNs, elastic cloud and fleet management, are all cool concepts that are already in use and giving the server the option to make intelligent decisions within that context is definitely welcomed. But we can go even further with things like:

  • Including network speeds, weather and other physical factors for directing traffic
  • Localization handled automatically
  • Dynamic delivery based on arbitrary events. For example, email campaigns may run based on what's trending on social media

Content

Our media, our personal and professional pieces of content we use to interact with each other, are all distributed through servers. Servers can help us when handling this content in multiple ways:

  • Encode media in different dimensions & properties and generate the necessary code for our source sets
  • Compose summaries from long text and descriptions for other assets
  • Keep a record of all the delivered content and propose recommendations based on user preferences

Development

If anyone wants things done manually, it's developers. The closest to automation they come is using build scripts. But there's practically no reason why those builds can't run on the server. A server can:

  • Build and compress client-side assets
  • Test deployments with updated dependencies
  • Propose improvements based on a database of best practices

Testing

A pain point for any application and admittedly a lot of arguments in favor of the naysayers. Why should testing be anything other than a machine task? Machines are great for the repetitive, painstaking, excruciatingly detailed analysis testing needs. If anything, we're stopping servers from helping us, if we're not making them aware of the factors and principals we are interested in and allowing them to exercise critical judgment in evaluating our applications. Areas of interest may include:

  • Stress-test benchmarks 
  • Dynamic unit tests
  • UI / UX issue scanning

Security

Imagine if servers could learn from each other when a threat appears. Our defense would be impenetrable and disasters could be prevented. Cyber warfare is said to be advancing and we may not afford to have our servers operate with predictable, monotone reactions. Instead we could expect:

  • Live monitoring of traffic for suspicious behaviors 
  • A shared database, automatically updated, listing all blacklisted IPs
  • A coordinated effort among servers to pinpoint a threat

We may not think of servers as intelligent machines. But one day, one server will prove us wrong. It will amaze us in how far it can take our product development reach. And that'll be the day that our productivity and efficiency will be upgraded by orders of magnitude. It'll change our lives as professionals forever. Of course we'll take all the credit and simply wonder how we could even bear working in the past, when our ways were so manual.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment