10 Tech Concepts Everyone Should Know

If you work in the tech industry then your daily conversations are littered with tech terms. You’ll probably have at least a vague idea of what these mean, but if you’re not in a technical role it’s sometimes hard to put these concepts and buzzwords in precise context.

In this post I’ll briefly explain ten basic terms that engineers use every day. Whatever your role in the tech industry, you’ll benefit from knowing exactly what these mean.

Brevity will require me to leave many important details out. If you’d like me to elaborate further, or if there are other concepts you’d like explained, let me know! I’ll be happy to write another post in this vein in the future.

Read More

Is a CS Degree Worth It?

As ReadWrite noted recently, learning how to code has never been hotter. Tech-education startups like Treehouse and Codeacademy are booming; Non-profits such as code.org are working to make programming education available in schools; Informal workshops abound, and more and more non-engineering tech industry insiders are getting in on the action.

Anyone with access to the internet now has within reach an incredible array of informal programming education resources, including many specifically targeted at women (a demographic still underrepresented in CS departments). With that, and the availability of simple web application frameworks such as Ruby on Rails, you  can learn to create basic but real webapps in just a few weeks. What was once the province of the nerdy few is now available to many. 

Read More

CS101 part 6: Operating Systems pt. 2


My previous CS101 post explained what operating systems are, and what services they provide. This post offers a quick tour through some basic operating systems concepts, and explains in more detail how the OS provides certain services.

I’ll describe in turn how the OS manages each of the four basic resources: CPU, disk, memory and network. You’ll probably have heard of some of the concepts before, but not known exactly what they referred to. So now you’ll know!

Read More

CS101 part 5: Operating Systems (pt. 1)

It’s been a while, but CS101 now resumes… 

In a previous post I mentioned that modern computer systems consist of layer upon layer of increasingly complex building blocks. In this post I’ll talk briefly about the most basic of these building blocks: the operating system. 

An operating system (OS) is a piece of software that provides a set of common services to all the other software running on a computer. These services primarily involve managing shared resources, notably CPU, disk, memory and network. 

Two classes of OS dominate the desktop world: Microsoft Windows, and UNIX-like OSes. UNIX was an OS originally developed over 40 years ago at Bell Labs. It inspired a host of descendants, and its design lives on to this day, including in popular OSes such as Linux, FreeBSD and Mac OS X.

Why are OS services important? For two main reasons: interface and coordination.

Read More

April Foolishness

A few weeks ago @shanley published this post about the superficiality of what passes for “company culture” in much of Silicon Valley. 

In the spirit of the April fool’s day grinch, I’m going to add another one: Culture is not about telling semi-clever lies on your corporate blog once a year.

Every year, come April 1st, dozens of tech companies, from Google down to the smallest startups, post oh-so-hilarious faux press releases about some obviously absurd product move or feature launch. You can imagine the self-satisfied giggles at the brainstorming sessions in the marketing department. The trouble is, no one else is really laughing. 

image

Read More

Men, It’s On Us Now

The Adria Richards/PyCon/SendGrid affair has made me sick to my stomach. Any decent human being should be outraged and sad at how low so many people in the wider tech world can sink.

I’m not going to express an opinion on the original incident. How far out of line were those guys? Did Adria overreact? Could she have handled it better? I don’t know, I wasn’t there, and it doesn’t matter any more.

Read More

CS vs. SWE

Someone asked me at a bar gathering yesterday: “Is computer science really a hard science? Isn’t it more like engineering?” I had at that point had one too many drinks to give a coherent answer. Plus, nothing kills small talk faster than bringing mathematics into the conversation…

But it is actually a good question. What is the distinction between computer science and software engineering?

Read More

Respecting Failure

Alexia Tsotsis just published an important post on TechCrunch about an insidious side of startup culture, one she refers to as “the cult of success”. 

In the startup world we pay lip service to risk all the time. No concept is more hallowed or hyped in Silicon Valley than “entrepreneurship”, and the defining feature of entrepreneurship is risk. 

You Can’t Spell Risk Without Failure

Risk, by definition, implies frequent failure. Yet while we recognize the value of failure in principle, when presented with an individual instance of it, one involving a specific startup and actual people, we too often respond with snark and schadenfreude. TechCrunch, and the rest of the tech press, are not immune from this, as Alexia admits. Too often, how the ups and downs of a startup get covered depends more on how close the founders and investors are to the “cool kids” rather than on the merits or the long view.

What’s an appropriate response to failure, then? Should we celebrate it, as we do success?

Read More

Intelligent Geometry

Religious dogma sometimes leads to absurd anti-scientific stances: intelligent design, young earth creationism, faith healing, and ridiculous conclusions about reproductive health.

If you want to revert to the 19th century, you can leave it at that. But a religious political party in Israel are now aiming much further back: United Torah Judaism, a fundamentalist ultra-orthodox party, are running this ad in the campaign for next week’s knesset (parliament) election:

image

Read More

CS101 part 4: Software

You suffered admirably through my necessary but dense preliminary discussions of boolean logic, binary arithmetic and memory hierarchy. Now comes the payoff - a series of posts about things you’ve actually heard of. First up: software.

I’m sure you have at least a rough idea of what hardware and software are. In fact, if you’re reading this, you probably know a lot of people who write software for a living. But you may be wondering what it means to “write software” or “run a program”. Or you may still marvel at how it is that we can make a pile of electronic circuits into some magical device that can show us pictures of kittens on skateboards.  Read on to find out more!

Read More