Slack's Tech Stack Is Very Traditional

I use Slack every day. I have multiple teams I’m connected to, including a personal one that’s dedicated to RSS feeds. The platform is versatile and unusually well designed. It’s probably my favorite app on my Mac.

What’s interesting is that Slack’s tech stack is very traditional. Old school, even. From one of its job pages:

The main tools that we use to build Slack are PHP, MySQL, and Linux – reliable tools that the Slack team knows well and trusts.

At a fundamental level, Slack deliberately seems to avoid sophisticated tools that get in the way more than help. On this same job page:

We are looking for other engineers that understand that simplicity and reliability are aspects of a system that can’t be tacked on but are carefully calculated with every decision made.

Slack’s JavaScript framework seems to be a homespun mixture of jQuery, pure JavaScript, and an in-house plugin called Monkey scroll. One of the critical requirements of its application engineer position is that you should be comfortable with functional programming languages “used without frameworks.”

It’s ironic that the de facto demo app that shiny modern tools show off to prove their viability is an instant messaging app, but that the number one app for business messaging, Slack, is built of tools that are much older.

Stephen Hackett on Software Rot

Last Friday Stephen Hackett wrote an interesting piece at 512 Pixels about software rot.

The vast majority of people will never need to run operating systems like Mac OS X Server 1.0 or older software titles like MacPaint. As a self-proclaimed Apple historian, I am interested in keeping it accessible.

Deep inside, I know it’s a losing battle.

One of the things Steve Jobs did when he returned to Apple in 1997 was to throw away all of the old relics that the company had enshrined. It was important to leave the past behind and look towards the future. I don’t see the need to prop up old stuff. Keeping it functional can be unhealthy, actually. Hackett’s example of the Antennagate app is a reminder of a product that had a problem with it. What’s worth remembering about that?

If the solution to a problem is so good that it’s worth reusing, on the other hand, it’ll get reused, and it’ll be present in currently working software. The concept of “survival of the fittest” is important here. We should keep the stuff that works, and throw away the rest. Code that isn’t somewhere in currently working software isn’t worth remembering.

Hackett also wrote:

I believe that to understand where we are and where we’re going, we have to know where we’ve been. That includes the technology we use.

There’s a time and place for museums, certainly. But I don’t think that keeping previous technology is important in order for us to know where the puck is headed. The technology that currently works gives us plenty of context to know the kinds of things we should be building for tomorrow. As an example to prove my point, during college I heard computer science professors reminisce about MS-DOS. I didn’t have a clue what they were talking about. As a software developer who uses bleeding edge Javascript tools and libraries, I am none the worse for my ignorance of these things. The past does matter in the realm of politics, because human nature does not change. That’s a different field altogether however. Assigning that value to the history of technology is a misnomer.

Software is only valuable to the extent that it is being used today. If the software I write tomorrow is not in use 100 years from now, I couldn’t care less if it existed on a repository on a Github server or not. It served its purpose in its time, just as the Antennagate app served its purpose in its time.

Overvaluing unusable software is an effort in futility. If the original creator of an app no longer deems it important to preserve, why should we?

I love what Hackett’s doing at 512 Pixels, but this one’s off.

Rarity Brings Admiration

Apuleius once wrote, “parit enim conversatio contemptum, raritas conciliat admirationem.” This translates from Latin as, “Familiarity breeds contempt, rarity brings admiration.” The first half of this saying is popular, and the second half is a restatement — the other side of the same coin.

The farther away a human being is, the more value that we assign to them. This could not have been more clearly displayed in The Martian. A real-life example is the 14-year-long relationship that Pyotr Ilyich Tchaikovsky had with his wealthy patron Nadezhda von Meck. They exchanged many hundreds of letters, some of them quite intimate, and they purposely never met. Von Meck wanted to think of Tchaikovsky as a larger-than-life composer, an ideal that could never be crushed.

I’ve worked remotely with people since I was 16. Some of them I’ve eventually met, many of them I never have. There’s really something strange and incredible about meeting someone in person for the first time that I’ve corresponded with for years. The relationship is in some ways much more deep and exciting than if I regularly met with them on a daily or weekly basis. Rarity brings admiration. There’s an innate idea within all of us that people out there, untouched by the influence of our own surroundings, will have an air about them that’s alluringly unfamiliar. They’ll be more interesting. More valuable.

Working primarily remotely is a trade-off though, of course. The richness of nonverbal communication with an in-person interaction can replace many paragraphs of email. The downside is it’s not possible to experience that moment of euphoria a remote worker experiences when they do get to meet someone in person for the first time, or the first time in a very long while. The memories that are formed during these meet-ups are incredibly powerful, far more powerful than the vague memories that come with those constantly in one’s physical presence.1 It’s the difference of having a few powerful memories or a thousand weak ones that are averaged into a muddle. My most vivid memories are monopolized by people I see in person very infrequently.

Apuleius was onto something.

  1. I’m writing this with the professional context in mind. Coworkers, bosses, clients. For a nuclear family, the closer the better is always preferred. ↩︎

A Bias for HTML

There’s a certain feel that comes with a native app, and there’s a certain feel that comes with HTML, CSS, and JavaScript. The difference is subtle but it’s noticeable in how various components appear and respond to user interaction. The abilities of HTML and JavaScript have advanced so far that I’ve come to prefer an app that uses this stack. The user experience is the same across all platforms. When I use an app that’s been primarily built in HTML, I instantly feel at home that I just can’t with a native app.1

I also like the idea that an HTML document is a blank slate in which things can be moved around and changed. It’s not like the native world where views and things are inherited and things have to look a certain way unless you want to go custom. I know there are also defaults in HTML to be overridden and that things are ultimately 100% customizable in native apps, but for the average developer it’s significantly easier and faster doing this in HTML.2

Slack’s Mac app is built using MacGap, and it’s one of my favorite Mac apps. I like it more than Messages — so much so that I prefer using Slack to communicate with friends.

I’m hopeful that we’re going to be seeing more and more apps be built primarily in HTML and JavaScript. On so many levels it’s making more and more sense to build everything in this.

  1. It’s possible that, since I’m a web developer, the understanding what’s under the hood of an HTML app contributes to this sentiment. In other words, someone who writes native apps for the Mac might feel more at home using a native app. ↩︎

  2. Think about the difference in learning curve for CSS media queries versus iOS constraints. ↩︎

Microsoft’s Declined Slack Acquisition

It’s old news by now, but several months ago Microsoft concluded it would no longer entertain a Slack acquisition. One thing about it has really had me thinking. Jon Russell from Techcrunch writes:

Microsoft eyed Slack as a potential acquisition target for as much as $8 billion, TechCrunch has heard. But an internal campaign around making an offer failed to drum up support. Microsoft co-founder Bill Gates and CEO Satya Nadella were among those unconvinced by the idea, with Gates pushing instead to add more features into Skype to make it more competitive with Slack in the business market, our source says.

An attempt to make Skype “more competitive with Slack in the business market” could be successful in theory, but I never see this actually happening. This is akin to when a child sees a new LEGO set in a supermarket and its mother tells it, “You already have something just like that,” when unbeknownst to the mother the something-just-like-that is actually old, broken, and uncool. I daresay Bill Gates and Satya Nadella haven’t used Slack extensively enough to realize what they’re up against. If Microsoft were to change Skype so that it looked and functioned exactly like Slack, not only would it be a vanilla competitor, but it would no longer serve the family-oriented purposes that Skype has traditionally fulfilled.1 At a fundamental level, Skype isn’t a business product. It wasn’t originally built to be one, and it doesn’t feel like one. It’s great at what it does, but it’s completely different from Slack.

I’m not saying that the decision to save $8 billion was a bad one, per se. But if the chief reason for declining the deal was because Microsoft thinks it can metamorphosis Skype into a viable competitor, Microsoft is dreaming. That’s never going to happen. It’s irksome when someone looks at a great product, proclaims they can do better and dismisses it, and then never ships. That’s unfortunately what I see happening here, however.

  1. Skype is used for business a lot. I’ve used it for that. But it’s always felt like I was using a family-and-friends product for professional communication. I’ve almost had a twinge of guilt or embarrassment, even. ↩︎

Github’s New Font

Good to see Github finally leave Helvetica and go for a custom font family. There’s not yet an official announcement of the change from their blog, though I’m not sure we should expect it.

There’s nothing inherently wrong with a site going with a standard font like Helvetica or Georgia, but with services like Google Fonts and Typekit, there are many great new fonts from which to choose.

It’s also interesting how the font family on Github is determined by your environment. Here’s one person whose instance looks dangerously close to Comic Sans. It’ll be interesting to see how Github reacts to all of the community feedback, and whether they keep this dynamism. If they do, it will be also interesting to see whether other sites adapt a similar approach. Github has a lot of influence because its customer base is programmers and designers — the sorts of people who get to decide how the rest of the web should look.

LeadPages Acquires Drip

Late last week was busy in acquisition announcements. Clay Collins, at LeadPages:

Today we’re announcing that we’ve acquired Drip. Drip is a world-class marketing automation and email platform.

Right now there are three tiers of CRMs for content marketers:

  1. ConvertKit for small business owners who need something simple.
  2. Drip for sophisticated business owners who have an increased level of complexity.
  3. InfusionSoft for larger corporations who need to go all out.

I’ve worked with the APIs of all three CRMs and Drip is an unsung hero. Its acquisition by the much lager LeadPages should give it exposure like it has never had before.

Five Pack Creative Acquires Hours

From Five Pack Creative:

We’ll be honest: we love the Hours Time Tracking App. We’ve implemented it company-wide for team tracking and reporting, use it on a daily basis and even wrote an entire blog post about five reasons why we love it. So it’s with great excitement that we’d like to announce we’ve officially acquired the Hours Time Tracking App! The acquisition includes the iOS app, the Apple Watch App and the new web version of the app with Hours For Teams.

Yours truly interned at Tapity when it launched Hours in summer 2014. It’s the most visual time-tracking app on the market and has a bright future ahead of it, though it’s bittersweet seeing Tapity let go of it. (See also Tapity’s announcement.)

The Paralysis of Ability

Those who don’t know tech are full of ideas, while most who could actually implement something have neither the need nor the desire to do so.

The tendency is for visionaries to think that executers simply don’t have enough motivation, and for executers to despise visionaries for their childlike eagerness and lack of appreciation for the amount of difficulty involved in achieving their ideas.

Visionaries need executers, and vice versa. Occasionally the same person has both traits, but it’s rare.

Thoughts on iOS 10 Beta

Yesterday the public beta for iOS 10 was released. You can download it here and check it out for yourself. A few things have struck me in the past 24 hours of using it. Here are things I like:

  1. The fact that you can only respond to lock screen notifications via 3D Touch has me excited. Heretofore, 3D Touch has been used in very lightweight ways, and a typical user could get through their day without using it. That’s now changed.
  2. Being able to see the lock screen wallpaper in its regular form even when notifications are present is great. No more darkened blurry effect. In the past I’ve often removed notifications from my lock screen just because this bothered me.
  3. Maybe it’s just me, but it seems that the phone doesn’t instantly unlock when you press the home button. It’s still faster than it was with the iPhone 6, but not as fast as with the iPhone 6S and iOS 9. Unlocking too quickly was a huge pain point for people with the iPhone 6S because they couldn’t see their lock screen notifications. Apple’s done a good job of making it still fast if that’s what you’re wanting to do, but just barely slow enough that if you just touch the home button it won’t unlock.
  4. The new Messages app is amazing. Some of the new features seem childish but you don’t have to use them. The new interface has many small design improvements, and some big ones. My favorite one is the submit button. Instead of the word “send”, it’s now simply a blue circle with a white upward arrow in its center. The more you can move an interface to symbols instead of letters, the less you have to worry about i18n differences in word length affecting your pixel-perfect design.
  5. Panels are the future. Apple has created very distinct boundaries between visual entities by means of them in iOS 10. It’ll be interesting to see how this spills into the web because of Apple’s lead. Decisions like this on Apple’s part truly affect the choices that graphic designers make when designing their web comps.
  6. I know that deleting native apps isn’t a true deletion — it’s merely suppressing them from the home screen — but it’s psychologically liberating to know that my folder of unused apps has fewer than it did before. There are still some that cannot be deleted such as the Health app, but most of the nonessential ones are gone and it’s wonderful.
  7. Swiping from the right side of the phone’s lock screen to activate the camera is so much easier than swiping from the bottom left corner. Sometimes I snap photos on my bicycle and this is going to make it much safer.
  8. The new vibration type for toggling the phone to silent mode is an improvement.
  9. Cross-device features like global clipboard and Apple Pay for the web are things with iOS 10 implications that I’m really excited about, but they won’t be usable without Sierra. I simply can’t update my macOS to that version because I use my computer for work, and I can’t risk losing hours of time on beta desktop software.

Here are things I don’t like:

  1. Update 7-9-2016: It’s working now. What I was afraid was a feature turns out to be a bug. Swiping down on the home screen no longer brings up search. I hadn’t realized how much I have come to rely on this. A lot of the apps that I use 3-5 times per week aren’t on my home screen, and doing a quick downward swipe and tapping the opening 2-3 letters of the app name was an incredibly fast way to pull it up. Now I have to swipe to the left and swipe down in order to do the same. The left swipe is an extra gesture that doesn’t have to exist, especially considering that swiping down on the home screen does nothing now. The only reason I can figure that Apple disabled this feature was that too many people were accidentally swiping down. Seems a shame that we have to lose this feature though. I’m really hoping we get it back before the official release in September.
  2. The top section of message threads takes up a lot of precious real estate since it now shows both the avatar and the name of the recipient. Aligning the avatar to the left and the name to the right would save space compared with stacking them. It’s a change I would strongly recommend.
  3. I wish Apple would take wallpapers more seriously. We don’t have any new dynamic or live wallpapers (we’re stuck with a paltry 7 and 9 respectively) and there’s only one new still wallpaper. I’d like to see Apple preserve the most popular 3 wallpapers of each category and replace the remaining with new ones. It wouldn’t hurt to have a selection that’s 2 or 3 times the size, too. Finding good alternative wallpapers is a real hassle, especially if you’re a minimalist like me who deletes his entire photo library once a week.1

I’m sure other things will strike me as the days go on, but these are the big ones. Overall iOS 10 is a solid improvement. Unlike the iOS 9 beta, the battery life on the iOS 10 beta is not noticeably worse than its stable predecessor, so I will likely remain on beta until the new hardware is released in the fall.

  1. One of my favorite quotes from Heat: “Don’t let yourself get attached to anything you are not willing to walk out on in 30 seconds flat if you feel the heat around the corner.” Constantly reassessing whether something is worth keeping and then purging is invigorating. ↩︎