Obfuscate:
/ˈɒb.fʌs.keɪt/
to make something less clear and harder to understand, especially intentionally.
15 mins
I’m not entirely sure this will come as a surprise, but developers chat ever so much crap. In a world of heady acronyms and bizarre sounding names for really mundane things, it’s easy for an outsider to be completely lost until they enter the magic circle of utter geek-based bullshit.
Last year and for the first time, Spork hired someone without a development background. In an attempt to make them feel more at home, I took it upon myself to start writing a brief explanation of every term I could think of. Turns out there were quite a few.
Then, a couple of months ago, someone (who shall remain anonymous as I like them) suggested that I made up some terms for a proposal. I suppose the theory was that I would sound more specialised. Naturally, I was somewhat incredulous, and so I decided this obfuscation had to stop.
And thus, for the benefit of all old, new and prospective clients, non-technical staff, partners and friends – and in a blatant attempt to exploit its benefit to Google search (#sorryNotSorry), I thought it not a terrible idea to put this up on our website.
So, if you’re the type of person who’d like to know the difference between their backend and their backlog, or a grunt and a GIT, then, Ladies and Gentlemen, imagine no more, this page really is for you.
(Disclaimer: If you are actually a techie, some of these explanations may grate with you. If you really want to contact us to point out some spurious nuanced inaccuracy, please feel free. I will politely ignore you. Remember, this article really isn’t for you…)
Alpha Transparency
In image formats on a pixel scale you can either have a block of colour, or nothing – which means if you place the image on top of something, whatever is beneath it will show through. You can also have a colour but be transparent at the same time. This is known as ‘alpha’ transparency. Think of coloured sunglasses.
Angular
A JavaScript framework (that we don’t tend to use) that has been pioneered by Google.
API
‘Application Programming Interface’. Basically, a way for different applications to send data and receive data to each other. The data sent is often in JSON format.
Backend
As opposed to the frontend, the backend is the part of an application where code runs on the server rather than the user’s browser (or app).
Backlog
In an agile development process, the backlog is the list of all outstanding tasks.
Client
In geek talk the client is a device or piece of software that accesses the backend. So, in a website, the client is the browser. In a phone app the client is the actual app that sits on the phone.
Compiled
Eventually every bit of computer code somehow magically gets converted to 1s and 0s. Programmers however don’t write those 1s and 0s. Because that would be too difficult. They write languages that get converted to another language, and then that get converted to another language, and so on and so forth, until it’s all 1s and 0s. The process of converting a language to another language which is closer to the 1s and 0s is known as compilation.
Languages can be categorised in many different ways, but one way is whether they are compiled or not. Compiled programmes are those which are compiled before they run. They sit in the application ‘compiled’. Uncompiled languages get compiled when they run. And sit in the application uncompiled.
Compiled code tends to run quicker in software than non-compiled code. Examples are C and Java.
More recently JavaScript, which is uncompiled, has had versions which look a bit different, these differences resulting in software that’s quicker and easier to write. However not all browsers understand the ‘new’ version, so we run the code through a ‘compiler’, to convert it to the old version.
Often you might get compilers that are written in the language that they are compiling. Don’t worry, my brain can’t get around that either. Put on the kettle – this helps.
Container
In the olden days, a server – where applications and websites sat for people to access over the internet – was a physical computer with a particular operating system and application installed on it. Think of Windows but without any of the fancy shit (certainly no Paper Clip animations).
Then the ‘cloud’ came along, and everything was a ‘virtual server’. In practical terms there was no difference but physically the server wasn’t just one physical machine. Many, many hundreds of machines all pooled their resources together virtually making hundreds and hundreds of servers. And so, there was flexibility – you just used software to create a new server – you didn’t need to physically wire up and put a new machine into the building.
However, each server was essentially a virtual computer with its own operating system (Linux, Windows, Mac Server, whatever). In order to run anything, you needed the entire operating system, which was wasteful.
Containers (hope you’re still with me), are a cut down version of an operating system, requiring just the barebones of what you need. They’re super flexible and efficient and require only the resource to fulfil their specific function.
Contentful
A headless CMS that we sometimes use.
CRUD
‘Create Read Update Delete’, the basic functions you need to do with ‘things’ in software.
CSS
‘Cascading Style Sheets’. The code in a webpage that styles the HTML. It handles layout, colour, fonts, backgrounds, borders etc. of everything on the page. More recently, its handles animations too which was traditionally handled by JavaScript.
CVS
‘Concurrent Versions System’ – one of the older version control systems out there. Rarely used these days but it was pretty horrible.
Docker
A type of container which provides a lightweight environment to run your application code.
DOM
Stands for ‘Document Object Model’, and it’s basically a structure that JavaScript creates when it reads an HTML page, and then you can manipulate the HTML page, like reordering elements, put in new ones, or removing them.
ECMAScript
The recognised and standardised specification for JavaScript (there used to be a couple of implementations. Any more written about this is very boring.
Express
A server environment where you can run Node.js.
ES5
aka ECMAScript Version 5… the 5th version of the specification and basically the ‘old style’ of Javascript that all browsers understand without compiling first.
ES6/ES7/ES8 blah blah
Newer versions of Javascript (confusingly ES6 is also known as ECMAScript Version 6, but also ECMAScript 2015). Anyway – ‘ES6’ is generally the generic term for using ‘new style’ javascript.
Frontend
As opposed to backend, this is the area of the application the loads and is executed by the client (e.g. a phone app or a browser).
Gatsby
An open source javascript framework that generates static sites from services like WordPress. Thus, a static site generator.
GIF
Stands for ‘Graphic Interchange Format’. It’s an image file type. Quite old school now but was best used for logos and diagrams. Mainly usurped by the PNG format. An interesting feature of the GIF was that it can have various states and therefore be animated. Hence services like Giffy… although these days… those animations are rarely actually gifs… just short animations in a different format.
GIT
The most popular version control system out there. Unfortunate name, whilst written in capitals it’s not actually an acronym.
GitHub
A company that hosts GIT software. Probably the market leader. Just.
GraphQL
A type of API where you can change the structure of the data that you get back by changing the structure of the data that you send. Hugely flexible and very powerful.
Grunt
A JavaScript task runner that was quite popular a few years ago… but these days less so.
Gulp
Another JavaScript task runner like Grunt… probably slightly more popular now… Same, but different.
Headless CMS
A content management system that uses a decoupled architecture.
HTML
‘HyperText Markup Language’ is what a browser reads to display a webpage. Invented by Tim Berners-Lee, it was originally written to documents academic papers and share them over the World Wide Web – an application on the internet. It’s since developed into a (slightly more) sophisticated method of defining content on the page.
IDE
‘Integrated Development Environment’. So you could just write all your code in Notepad. But that’s a horrible experience. IDE’s are software programs that make writing code easier – recognising what you’re writing and adding colour, hints, and shortcuts.
IntelliJ Idea
A type of IDE that we use a lot at Spork… it’s not cheap, but it’s *really good.
Java
Java is a language supposedly written so that developers write it once but can run on many different types of platforms that support it. Used as a backend language for enterprise level applications. Our developer, Phil, is the dogs bollocks at writing it.
JavaScript
A whole blog post could be written about this as it’s difficult to define in a couple of sentences. However, in a nutshell, traditionally Javascript is the language that runs in a browser. It originally used to do things like change how a button looks when you click it or move something across the screen, and because of the seemingly trivial things it did, it wasn’t really considered a ‘proper’ programming language.
Other the years however that’s changed, and when it was ported to environments outside the browser (including server side Javascript – called Node.js) it’s quickly becoming ubiquitous across all aspects of programming for the web and internet.
Not to be confused with Java, which is very different.
JavaScript Task Runner
JavaScript (well, node, actually) that runs on your computer and automates lots of boring tasks like joining together files, compressing them and compiling SCSS and ES6+).
JIRA
A web-based software management platform that allows users to track issues and manage software releases. You might have heard of the something called Trello – it’s like that, but on steroids.
JPEG
Stands for ‘Joint Photographic Experts Group’ (which I had to Google). Lossy image file format most suited to complex images like photographs.
JSON
‘JavaScript Object Notation’ – a neat and concise way to exchange data – often in an API the response you get will be in the form of JSON.
KanBan
A flavour of Agile working… where you do-everything-on-the-list-before-you-move-on-to-the-next-list.
Kotlin
A programming language to build Android Apps.
LESS
A type of CSS pre-compiler that’s slowly becoming less popular. Perhaps ironically.
Lossy/Lossless Compression
2 different techniques that both attempt to reduce the file size of a raster image.
MySQL
An open source relational database that uses a language called ‘sequel’ to add, edit, select, and remove entries.
NodeJS
Javascript that is executed on the server, as opposed to a browser.
NPM
‘Node Package Manager’ used by task runners to automatically download and open source use code from 3rd parties.
OOP
‘Object Orientated Programming’ a solid way to model programming code into ‘things’ that have various properties and attributes and can also do things.
PHP
(Doesn’t really) stand for ‘Hypertext Preprocessor’. A server-side scripting language which is considered shonky by many serious developers but in certain circumstances get the job done good enough. Programming language behind many CMSs including WordPress, Drupal, Craft, Joomla, Expression Engine, and the very first version of Facebook.
PNG
‘Portable Network Graphics’ – another lossless image file format which is pretty popular for icons, logos and line diagrams. It can also have slightly transparent pixels (known as alpha transparency) which is why it’s used more often than GIFs.
React
A popular Javascript framework, invented by Facebook, and used on lots of web applications such as Airbnb and Dropbox. We like it.
React Native
A Javascript framework, based on React which is used to transpile Javascript to native iOS and Android code for apps, most famously on Instagram. There was a Friday afternoon debate in the office about whether ‘transpile’ was actually correct (as opposed to ‘compile’ of being what’s known as a ‘bridge’). We had the conversation in the hope that you will never have to. You’re welcome.
Redux
A Javascript framework – often used with React which is used to handle data in an app in a very elegant way. It stores the current ‘state’ of an application making complexity easier to cope with.
REST API
‘Representational State Transfer’ is a popular architectural style for APIs.
RGB
‘Red Green Blue’. On a computer screen, and therefore images view on a screen, each pixel is made up of a colour. That colour is made up or a bit of red, a bit of green, and a bit of blue. That makes up all the colours in the world.
RGBA
As above but the ‘a’ stands for alpha-transparency.
SASS/SCSS
A popular type of pre-compiled CSS, which we use a lot.
Scrum
A type of Agile workflow where you divide the work up into a unit of time (say a couple of weeks), get as much as you can done during that time, and then you regroup, re-prioritise, and repeat until the work is done.
Server-Side Rendering
OK. So… HTML can be written manually, written on-the-fly by Javascript, or written on-the-fly on the server so when a browser receives it, it’s already HTML. The latter is server-side rendering.
SOAP
‘Simple Object Access Protocol’. Another type of API structure, popular about 15 years ago. It’s powerful but takes a while to set up compared to more modern techniques.
Sprint
A period of time (e.g. a fortnight) where a bulk of work gets done in an agile development environment.
Static Site Generator
Most websites will have some type of database – containing data (no shit) – and an application that displays it on the page. A web developer wouldn’t be writing a webpage for every product page in an e-commerce site. Sites, then, have templates which contain all the layout information and the application would inject all the product information into the right part of the template with information from the database. Traditionally that injection happens when a user goes to a certain page; the application knows what page you are trying to look at (from the address) works out the right template and the data, and returns the page to the browser. Sometimes to make the site *much quicker, that injection is done at the point at which the database is updated, so every webpage is written out as if the developer had actually written every-single-page. The bit of software, that usefully does this, is known as a ‘static site generator’.
Sketch
A piece of software used to design interfaces for websites, web apps, and mobile apps.
Standup
A daily meeting when everyone in an agile development teams explains what they did the previous day and what they plan on doing the day ahead. Theoretically useful as a time when people can talk through problems they may be having. Actual ‘standing up’ usually compulsory, but not at Spork.
Staging
A name often given to a server environment that’s essentially for testing or client review.
SVN
A type of version control system, that used to be very common but has fallen out of favour to GIT.
Swift
A programming language used to build apps for iPhone and iPad.
Transpiled
When code gets compiled, not just to a lower level, but to a completely different language altogether. A good example of this is React Native where JavaScript gets ‘transpiled’ to native iOS and Android code (sort of).
UI
The ‘User Interface’ of an app (web or phone / tablet). In other words, ‘the design’ but specifically focused on the elements which determine how the application is laid out and the interface connection with a user such as buttons, form elements, menu items.
UX
‘User Experience’. Similar to UI, but not to be confused with it. Concerned with the whole process of using the product. The flow a user goes through, the pages they land on, how they navigate successfully to achieve what they wanted to do.
Version Control System
Software that allows teams to work on the same set of files at the same time without causing conflicts, overwriting each other’s work and a whole world of pain. The most common these days is GIT.
Vue.JS
A JavaScript framework, that Spork doesn’t use (we prefer React), but it supposed to be quite good.
WebP
A new image format invented by Google. It offers both lossless and lossy compressions and has alpha-transparency and animated versions. Basically, it takes all the best bits of the JPG, GIF and PNG formats. And for that reason, it’s the nuts. Not yet supported by the Apple Safari browser though which means we all have to code around that.
WebPack
A powerful Javascript task runner and package manager. It’s like Grunt and Gulp but on steroids and bundles a whole heap of automated loveliness to make our lives a tiny bit better.
WordPress
The most popular open source content management system, allegedly it runs 25% of the world’s websites. It’s a flexible entry-level CMS – and free, but under the hood it’s pretty horrendous. It is, however, nice to use for the user (when configured correctly) so for that reason, it’s a CMS that we use, sometimes reluctantly.
XCode
IDE developed by Apple to create Apple apps (iPhone, iPad Apple Watch, or Mac software).
XHTML
Basically HTML, but 10-15 years ago it very much was a thing. Probably best not to bore you with it… it was a tedious time in web development.
XML
‘eXtensible Markup Language’, essentially a type of datafile that can be transferred across the web.
Yarn
Like NPM but works ever-so-slightly differently, and slightly quicker.
Zeplin
A piece of software that designers use to share their UI designs with developers.
I guess if you spend 15 years as a developer, you pick up some stuff along the way. If anything above here doesn’t make sense, or you think there is something we’ve missed, then why not get in touch? We’d love to hear from you.