Archive for the ‘Red’ Category

Nova. Our next big thing.

Wednesday, July 31st, 2019

Hello, long-time Panic friends. It’s nice to see you again. We have a few quick — and important — announcements for you.

A new Mac editor.

You’ve been waiting. For a very long time. Us too. And we’re so happy to announce that the next Coda is almost here.

And it’s called Nova.

Our next great Mac-native text editor, Nova, is about to enter private beta. We’re looking for testers, and we’d love for you to be a part of it. We’ll be doing tests in groups, so the more we know about your editor usage, the better!

Visit the Nova Private Beta Page

A few possible answers to a few possible questions:

Why “Nova”?
Nova is a dramatic upgrade in every respect, a total re-write and reimagining. It felt appropriate to give it a new identity.

Is today’s Coda dead, then?
Nova is replacing Coda, but if you like using Coda there’s good news: we’re planning a final Coda update soon to add support for macOS Catalina, and we will always update Coda if any major security issues are discovered. Importantly, if you like how Coda works and haven’t yet purchased it, do that now — it will not be for sale in 2020.

How much will Nova cost?
We’re still figuring this out. We’re leaning towards a Sketch-like “buy it, keep it forever, and get a year of feature updates” model. We also hope to provide a discount to Coda 2 owners, to be determined.

Will Nova be in the Mac App Store?
Not at this time. This is because of Nova’s heavy reliance on arbitrary third-party executables and extensions, prevented by sandboxing.

And later, an updated iOS editor.

We’ve also begun work on a new version of our iOS editor. It won’t ship at the same time as Nova, and it won’t be a feature-complete copy of Nova for Mac — rather, we’re planning something that hopefully strikes an ideal balance between Nova-like functionality, and Transmit-like functionality, for on-the-go work.

But! Until this new version is ready, we’ve somewhat-comically renamed the current app to just “Code Editor“, since there’s a new Coda in town — a reimagined document at coda.io. So, don’t be alarmed if you search for Coda for iOS and wind up with Code Editor. That’s us!

We can’t wait to get these new apps in your hands!

Transmit 5 on the Mac App Store

Thursday, November 15th, 2018

You already know Transmit is a wonderful file transfer app, maybe even the best on any platform. It’s jammed with features, it’s fast, it supports every major cloud storage provider, and it looks awfully nice.

But here’s something you might not know: the reasons we never put Transmit 5 in the App Store. They’re simple. We weren’t sure we could provide a good-enough Transmit experience under the stringent sandboxing security the App Store requires. And frankly, we weren’t sure Apple cared that much about the App Store on the Mac.

Since then, a lot has changed. macOS Mojave gave us a significantly improved App Store that caters to professionals like yourself and seems to treat apps with respect. And sandboxing has evolved enough that Transmit can be nearly feature-parity with its non-sandboxed cousin.

So, as we promised at WWDC: it was time to give this another go.

You can now get Transmit 5 on the Mac App Store!

But, there’s a twist…

A screenshot of Transmit in the Mac App Store.

The Twist

Transmit from the Mac App Store is a subscription — just $24.99 a year. Included with your subscription is Transmit, access to Panic Sync, and any major Transmit updates that we may release in the future, all rolled into a convenient yearly charge. There’s even a free 7-day trial before your subscription kicks in. And, of course, you can cancel at any time.

If you don’t like subscriptions, don’t worry! You can still buy Transmit 5 directly from us. It’s still $45. It will still include free minor updates. And you get the same support as a subscriber would.

The choice is yours. Love the App Store? Subscribe today. Don’t like subscriptions? Buy it directly from us. Everybody wins! (Almost.)

There’s a little something in it for us, too — a chance to learn about the subscription business and see how, if at all, it can impact our decisions moving forward.

FAQ

Wait, so I have to subscribe to Transmit now?
No, my post-skimming friend, you don’t. While Transmit in the App Store is a subscription, you can still buy Transmit 5 directly from us at full price and own it forever for just $45.

How much does the subscription cost?
$24.99 a year. 

Is there a free trial?
Absolutely. When you install Transmit from the App Store, on first launch you’re given 7 days to use it as much as you want, without restriction, until the subscription kicks in, and you can cancel during the trial (here) if it doesn’t work for you. It’s really simple and should give you more than enough time to demo the app and make sure you love it.

What’s included with the subscription?
Transmit, Panic Sync, and frequent updates, of course. But you’ll also automatically get any major updates we release in the future as long as you remain subscribed.

I already bought Transmit 5. Can I switch to the App Store version?
If you bought Transmit 5 in the last 60 days, we can refund your purchase if you’d like to subscribe instead. Simply e-mail our support team. Beyond that, it’s gets really difficult, particularly as the prices are so different.

Hey, what if I love the App Store but strongly dislike subscriptions?
Yeah, that’s the one bummer zone in our plan — we’re sorry. But we believe the App Store is suited particularly well for subscriptions, and we’re always looking for a sustainable future building our complex applications.

Does it have the same features as regular Transmit 5?
Yes, it does! With one small exception — “Open in Terminal” depends on AppleScripting the terminal, which isn’t possible with sandboxing (yet). But even viewing or editing or changing the permissions of files you don’t own is now possible, which wasn’t until very recently.

What about Transmit Disk?
It’s not in this initial release, but stay tuned.

Any other differences in the App Store version?
For security, you have to manually “Choose” any local folders in the file browser that you want to navigate to. However, Transmit will remember the highest-level folder you’ve chosen, so over time you’ll have to do this less and less. (And here’s a pro-tip for all the FAQ readers out there: just drag your hard drive to the “choose a folder” view to unlock your entire drive and never be prompted again.)

If my subscription lapses, do I lose my sites/favorites?
Absolutely not. If you use Panic Sync, your sites are safely stored in our spacious, welcoming cloud, and you can sync them down in the future, even to non-subscription Transmit. And if you don’t use Panic Sync, as long as you don’t delete Transmit’s application support files, they’ll be there waiting for when you re-subscribe.

Will Transmit 5 support iCloud for sync?
We’re not planning to. We know it’s a bit of a bother to manage another account, but we really value the ability to debug syncing problems directly.

What about Coda in the Mac App Store?
Sadly, Coda cannot be sandboxed yet. We’re hopeful for the future.

Oh and hey while I’ve got you on the line where’s Coda 3?
? (More on Coda soon!)


The 2017 Panic Report

Thursday, May 3rd, 2018

Hello, my friends. It’s (Q2) of a (not-so) new year. That means it’s time to talk about Panic!

Here’s what we did in 2017, and where we’re going in 2018.

Releases

Transmit Transmit 5

2017 was all about Transmit 5, our long-awaited major update to your favorite truck icon.

It had been an astonishing seven years since we had done a major update to our file transfer app for macOS. We’d spent most of that time focusing on Coda, so we had a long list of things we wanted to address, and once we got started it took us a good couple of years to get it all done. The good news is that we landed virtually everything we wanted to land in 5.0. And we focused hard on quality and process, creating what I think is the most solid initial release of any app we’ve ever done, ever.

The improvements in the app were huge: speed was increased significantly. Eleven new cloud services were added. We added our fabled Panic Sync service, which remains free and secure. I’m really happy with our “Get Info Sidebar” and I wish it was in the Finder itself. We added a Batch Renamer. We built a great UI for managing private keys. I could go on and on.

You can see all of the new features over here. And we made a fancy little video to show off what’s new:

 

[youtube https://www.youtube.com/watch?v=dwtaJRWvuSU&rel=0&w=750&h=422]

 

After shipping, we naturally collected feedback and we addressed most requests in the just-released Transmit 5.1, including support for SFTP’s “ProxyCommand” config setting, support for Amazon GovCloud, and brand-new French, German, and for the first time ever, Chinese, localizations.

How’d it do, then? What’s the business side of macOS productivity software like? I’m happy to say Transmit 5 sold quite well, all directly through our store. And the timing was (accidentally) totally great — just as Firewatch revenue was starting to wane as the game ran its course, Transmit 5 fully picked up the slack. It was comforting to see that people are still willing to pay real money for good Mac software. That’s why we’re here and can continue to do what we do.

One interesting note: We added a ton of new cloud services in Transmit, which is great, but it definitely adds an exponential burden to our QA process (many connection types × many functions = many many tests). Interestingly, to this day, still nothing beats the popularity of plain old SFTP, and, oh my stars, FTP. Yep, regular, unsecured FTP. Based on our anonymous usage data, that unnecessary donut chart on the right there shows how the connection types rank so far.

The purple and dark blue? That’s everything else – all cloud services combined. Were they worth adding? I think yes, as a bet on the future, but we’ll probably want to pick and choose future protocols extremely carefully.

Overall, this release had an extremely low goof-up ratio, but there were a few pain points. Our simplified activity window redesign was much cleaner and clearer for the people who just wanted to know what Transmit was doing, which we think is most people, but lost some really important functionality for users who need to manage their pending transfers more granularly. We’ll keep working on this in future versions. And some were disappointed that we didn’t provide an upgrade discount for our existing Transmit 4 customers. Normally we would’ve, except for that seven year gap — we’d been providing free updates for seven years, and that seemed like extremely good value for money? (Interestingly, many of the people upset by this had been using it for all seven years!) Finally, a couple people really couldn’t handle the new Sync toolbar icon! These things happen. There’s a reason it changed: it used to be  , but now it’s   , as the new    button uses arrows, as well as the usual    button, and it was just too many arrows!

But overall, it was extremely smooth sailing. And we’ll keep working on improving it even further, of course!

All of us at Panic would like to say thank you to everyone who bought Transmit 5. And thank you to everyone who sent us their ideas for Transmit 5 and beyond. I’d also like to say thank you to everyone at Panic, including of course Wade and Will who spearheaded this release, for doing such amazing work.

Faster?

We often write things like “we made it faster!” without going into much detail — that’s usually because the details are pretty gory. But, exclusively for this update, I thought I’d ask Wade, who did the bulk of the work in Transmit 5 with his brother Will, to get specific — what did we do to make Transmit 5 faster?

For those interested, let’s get technical!

   ////////
  //    //  P A N I C
 ////////   E N G I N E E R I N G
//

When we sat down to start work on Transmit 5, we wanted to prioritize speed and the “cloud” (have you seen all the new cloud services Transmit 5 supports?!). While adding cloud services was fairly straightforward, improving speed can be a little more abstract. We approached the problem from the ground up and found obvious areas where we could improve and some that weren’t so obvious going into it.

The first and most obvious change we made to Transmit was how it handled transferring large file hierarchies. In prior versions of Transmit, when you started transferring a group of files and folders, it would transfer the top-level items using individual connections to the server, but the folders and their contents would be processed serially using one connection. This worked well if you were transferring many top-level folders, as they would be transferred concurrently, but transferring a single folder would only ever use one connection. With today’s fast internet connections and multi-core devices we felt it was time to fully multi-thread every possible transfer scenario. In Transmit 5, almost all transfers will use the maximum available connections regardless of their contents. (Some cloud services restrict the amount of API calls you can make to the service over a period of time, so those services are limited to two transfer connections.) This allows multiple connections to work on the contents of a single folder, which results in much faster transfers.

This in and of itself was a huge improvement, but we didn’t stop there.

Long-time Transmit users may remember that in Transmit 4 we introduced our patented (not really, but it’s still cool) dual progress bar. This style of progress representation shows the entire transfer progress as well as the current file’s progress in a single bar. While this was great for showing the user status about their transfers, the necessary pre-flighting to compute the entire transfer size was delaying the start of the transfer. In some cases we found the entire transfer could be completed in the amount of time it was taking Transmit just to compute the overall transfer size! Transmit 5 now computes the overall transfer size dynamically and asynchronously with the transfers themselves, so your transfers start immedately and you still get that sweet double progress bar.

Once we got the backend completely multi-threaded, we noticed that, under high stress transfers, the app could start to feel a little bogged down. Turns out, when you transfer thousands of files in a few seconds on gigabit ethernet there are a lot of messages being sent around internally. Folks who know programming know that you have to process user interface updates on the main thread, but that thread also handles user input, so if you’re overwhelming that thread with messages, your app can start to feel a bit sluggish. This was happening to Transmit, as it was servicing progress updates constantly. We developed a lightweight messaging queue that gathers updates from the connection threads, coalesces redundant messages, then batches the delivery to the main thread to update the user interface. The coalescing reduced many unnecessary progress updates and batching allowed us to fine tune the amount of work that the main thread would perform per update cycle. Likewise, we added a second layer of message throttling from our various connection classes to the message queue, which further reduced the amount of internal messaging while maintaining a high level of performance and responsiveness.

We left no stone unturned in our relentless pursuit of improving all aspects of Transmit’s performance, and memory usage was certainly included on that list. After all, your computer isn’t going to feel fast if memory is paging to disk all the time. We analyzed the memory consumption and to our surprise, NSScanner was using a very large amount of memory when parsing large directory listings. I wrote an API-compatible replacement that instantly eliminated the memory bloat and had the side benefit of being faster as well. That’s what we in the industry call a win-win. Beyond those parsing improvements, we restructured the way very large file transfers were handled to prevent temporary memory bloating as well. This means you can transfer multi-gigabyte files using Transmit and memory use will remain stable.

After the backend systems were performing at a high level, we turned our attention to the UI. Frequently drawing and animating progress bars can require a fair amount of CPU. In Transmit 4, when you had the transfers list visible with several transfers in progress, the CPU usage would tick up a few points (which our sharp-eyed users were quick to point out). Lucky for us, a few things happened in the computer world since Transmit 4 came out. User interface design trends are now much simpler and flatter, requiring far less work to draw. Additionally, highly performant layer-based drawing is better supported. We rewrote our progress bars to be CALayer-based, which reduced the CPU overhead tremendously. Those optimizations keep the main thread free to handle other tasks that keep the app feeling snappy.

All of this work resulted in massive speed improvements across the board when using Transmit. Not only are transfers dramatically faster, but the entire app benefits from the internal work across its various components. Occasionally while working on Transmit I’d think something was broken because the transfers would complete impossibly fast! It wasn’t just us that noticed these improvements either, we immediately heard from users about how much they were loving the speed of Transmit 5. -Wade

So when you see a single bullet point in a major Panic release that says “• Now faster!”, now you know.

Updates + Support

I asked Aaron, who handles a great deal of the QA and release process here at Panic, to talk a little bit about what we did, software and support-wise. He says:

In 2017 we shipped a record 39 software releases. Each one of those releases had to be qualified, tested, approved, and distributed. So, for our small team, this is a really solid accomplishment. Here’s what went out the door:

2.6.1 2.2.4 2.6 4.4.12 5.0b1 1.3.2 4.4.13
2.6.2 2.2.5 2.6.1 4.4.13 5.0b2 1.3.7 5.0
2.6.3 2.2.6 2.6.2 5.0b3 1.3.8
2.6.4 2.2.7 2.6.3 5.0b4 1.3.9
2.6.5 5.0b5  ☠?
2.6.6 5.0b6
2.6.7 5.0b7
2.6.8 5.0b8
2.6.9 5.0
5.0.1
5.0.2
5.0.3
5.0.4
5.0.5

QAImproved QA

2017 also brought a number of improvements to our internal QA processes and organization.

We retooled our testing documentation using new features introduced in GitLab and formalized a new release workflow to better coordinate our Portland and Japan offices.

The Transmit 5 development process also resulted in the creation of new internal tools for testing and verification:

Fig • Quickly build, snapshot, and deploy macOS configuration profiles
Hydra • Panic’s authentication and file transfer testing system
Pug • Quickly update local projects and their dependencies with a single command
Vanderbilt • Browse and download builds of Panic apps using the command line or GUI

We’ll spare you any overly specific details for now, but if people are interested we could do a more extensive write-up in a future blog post. Let us know! ?

HelpImproved User Help

In addition to all of the fun new tools we used internally, there are also some helpful new user-facing resources we’re really excited about. First, we introduced a dynamic Panic Help Library inspired by Acorn 5’s Live Help Search. (In his write-up, our pal Gus of Flying Meat said “If you make a Mac app, please steal this idea”, so, like, we did! But no, if he jumped off a bridge, we wouldn’t.)

Here’s what our new live help looks like in our app:

All of those help articles are being pulled from our server in real-time when you search! That means we can add new features or documentation at any time without needing to push an update to Transmit itself, and as a result our help is ever-evolving and ever-helpful, and everybody wins.

VideoTutorial Videos

Right near the end of the year, we debuted the first of our Transmit 5 tutorial videos. For years we’ve been wanting to show off cool tips and tricks in our software in the most visual and dynamic way possible, but didn’t exactly have the time or bandwidth to make it work until Christa came on board. Now we’ve got video coming out of our ears! And eyes. And computers.

Our videos can teach you about how to best use Places…

 

[youtube https://www.youtube.com/watch?v=i6He9Upze7c&rel=0&w=750&h=422]

 

…or how to use our File Sync feature…

 

[youtube https://www.youtube.com/watch?v=S7FSlGsJtZc&rel=0&w=750&h=422]

 

…and lots more. We’re adding these frequently! Consider subscribing to our YouTube channel! Yeah, I said it.

And a request: if you have topics you’d like to see covered in a future video please let us know. We have a whole lot of exciting new things planned for 2018!

This is the real engine that keeps Panic moving and software going out the door. Our process continues to improve significantly year-over-year. Also I like that Aaron uses emoji in his updates.

Services

It’s a huge part of our business we don’t discuss much: our backend services that help you sync your data, process your orders, and the like. Here’s Patrick with a brief summary on our service work for 2017:

The site had numerous under-the-hood changes to support a big internal effort — modernizing our web store.

For years (almost 20 years, in fact) our web store was powered by a custom PHP app we wrote called POD, or the Panic Order Database. It grew a lot over time, to handle sales of physical goods, product activations, Coda plug-ins, and all kinds of other things. It became a little long in the tooth, and in 2017, seeking a more flexible and modern architecture, we decided it was time to retool.

Building off our great experience with Django in Panic Sync, we starting rewriting our order system as a Django app, cutting out slices of functionality and migrating them over bit-by-bit. In a true Ship of Theseus fashion, almost all backend pieces have now been replaced by their Django counterparts – now complete with tests, code coverage checking, Python 3.6 type hinting, and other great tooling improvements.

Also, Panic Sync 2.0 shipped, the headlining feature of which was 2-Factor Authentication. We added a huge number of new users quickly – over 10,000 in a very short period of time. (And speaking of big numbers and weird backend services, our firewatch.camera project is still running strong, currently hosting over 680GB of in-game photos across over 54,000 rolls.)

We’ve standardized on Django across all our web services and we couldn’t be happier with it. Python 3.6 and Django 2.0 offer a great developer experience, modern tooling, and years of stability. Hey, if it’s good enough for Instagram, it’s good enough for us!

This work is always ongoing and represents a huge part of what we do.

Infrastructure

A bit more from Patrick:

At the risk of sounding corporate and corny, we’d like to say that independence has always been a core value of Panic. As such, it should be no surprise that we think of our web services in the same way: while we believe companies like AWS, Heroku, and DigitalOcean all provide valuable services, we still prefer to build our sites on our own servers and infrastructure – the same way many of our own customers do. We have the know-how, gumption, and by-golly, the stick-to-itiveness [this is gonna be tough for Noby to translate into Japanese! —Ed.] to do it, so why not?

Over the past year, James has been busy upgrading the hardware that we have colocated at the Pittock Building (a few blocks from Panic in sunny Portland, Oregon) significantly, as well as rebuilding most of our servers to run on shared, virtualized host clusters, set up and managed by Ansible. Using Gitlab, we now have continuous deployment for all of our sites, keeping us in line with modern web development best practices.

These improvements have proved to be so fast and stable that in 2017 we moved all of Panic Sync off Heroku and onto our own infrastructure. For the paranoid among you – don’t worry. Your data is still safe: you can read more about how we encrypt your data so even we can’t read it on our Panic Sync page and library article.

Speaking of security, we’ve also upped our encryption game internally: all source code interaction now requires 2FA, and we’re requiring Yubikey or Krypton for private key storage. We’re thinking of doing a separate post from the engineering department to dive a little more deeply into our security setup, so if you’re interested in that, please leave a comment and let us know (and don’t forget to smash that like button!) [There is no like button —Ed.]

If you ever have questions about this stuff, let us know!

Successes

So, looking back, here’s what I was proud of from 2017:

  • We still ship pretty nice software. I mean, we’re definitely not perfect, but we’re making really quality things, I think. Transmit 5 modernized the UI, added a ton of stuff, increased speed, and was an extremely solid release that a lot of people bought. As long as we can keep doing this well, we’ll hopefully be here for a while.
  • We’re still having fun on the web. The Transmit 5 website is, I think, really nice, especially thanks to our WebGL truck magic. We worked with Little Workshop (look for a blog post about that in the future!) who took Kenichi’s 3D icon and make it work on the web. (They were also not afraid when we said “and also the perspective of the truck should change when you scroll!”.) And thanks to Dean at Apple on making it extra performant in Safari. I think it’s a good sign when your crazy product web page leads to overall improvements in Safari for everyone.
  • Our support is better than ever. In addition to the improvements mentioned above, including our Panic Library, I think our response times are fast, our answers are accurate and helpful, and people in general hopefully feel that when they buy something from us, we have their back. (And when we fail, we fix it!)
  • Oh and we expanded our work area and added a couple trees. It’s almost all done.

Challenges

Not everything was silky smooth sailing in 2017, including:

  • iOS, again, as always. We have not cracked the secret of how to be super successful making advanced productivity software on iOS. (In fact, quite the opposite — we canceled Transmit iOS, our portable file transfer client, due to poor sales.) I’ve talked about this for many years running, but I’m hopeful this is the year we’re gonna crack it. In the meantime, we’re still dedicated to updating and improving Prompt and Coda, our iOS apps that can justify increased investment.
  • We got owned hard. We blogged about it at length right here. It wasn’t exactly our favorite time. But I can give two small addenda to that story: we never heard a word from the attacker after we threw all our cards on the table via that blog post… and the law enforcement investigation is, amazingly, still ongoing.
  • We don’t have enough engineers. Our dream of “an engineer permanently assigned to every app” continues to be strained with our current, rather intense workload. And low iOS revenue doesn’t give a lot of room for growth. There’s a lot of juggling to keep everything updated. But, it’s time to staff up. Read on for more about that.
  • Our process still has room for improvement. Defining features and releases more concretely, and putting more time into UI up-front before code gets written (including building in time for design prototyping) so that UI designs are ready and more thought out earlier, are just a few of the things I hope to see get better.
  • Tough revenue decisions. We continue to debate about how much longer people will be accepting of full price macOS software. Is it time for us to consider subscription pricing, which could lead to frequent and constant Panic software releases, instead of saving up for big “major updates”, which sounds really appealing? On the other hand,  we know a lot of people don’t like subscriptions, for many valid reasons. We’ll have to do more research on this throughout 2018.

Q&A

I asked on Twitter if anybody had any Panic questions. Here are ten of them!

 Do you have plans for Prompt on macOS? —Lukas and Josh and Mike etc.
We talk about this idea a lot! While we’re not working on it right now, I’ve always thought it’s a good idea…

 Are you involved at all with Campo Santo’s next game? —Michael
We’re not. You may have heard that the team at Campo Santo now all work for Valve, a move that will allow them to focus more on making games and less on running a business at a scale well beyond what we could provide them. Frankly, it’s still a little hard for us, as we truly enjoyed working with them. But, we can’t wait to play their game some day. And soon we’re announcing our second game as a publisher — more on that below!

 Who’s behind the lovely videos that have been shared recently? How long do they take to make? —Dave
Christa does those! She consults with engineers/support/QA to understand the goal of the video, she writes the script, she does all the After Effects work, even the voiceovers. (I do a bit of copy editing on the scripts and try to write original music for them as much as possible!) A typical video takes… a week?

 Will you ever make shirts again because some of my favorite shirts are lookin kinda rough ?? —Mike
This is a very good idea. We really should do another run of Panic shirts. Maybe we can pull this off in 2018.

 Any plans to bring Verso to BeOS? —Chris
How… how do you remember this incredibly obscure bit of Panic trivia… Verso, geez.

 You probably get this a lot, but would it be possible to get an office tour some day? —Joan
In general, yes! It depends on what we have going on on a given day, what’s lying around, and if I’m in the office (most people here are a little scared of humans), but it’s always possible. Twitter is a good way to schedule that!

 Can you talk about any projects that you thought of, started, but then abandoned? —kmikeym
We once canceled a very polished and beautiful iOS music sharing app called… Audion. (I’m not kidding!) Kinda like a musical Instagram. It had at least one UI thing that I still think is original and amazing. Someday we’ll tell that story.

 Any update/change about the last status of ? Transmit for iOS? —Fred
We are still working on our plans, starting with: is there a way we can bring more of Transmit iOS’s functionality to Coda iOS? That would be a big change to Coda iOS, but might make the most logical sense. Stay tuned.

 I’m using Transmit 5 as my primary interface to Dropbox. Am I a bad person? —Kyle
Absolutely not. This is so potentially powerful, we even made a video about it!

 Is it just me or is it cold in here…? —Ashur
Ashur, we’ve been over this, it’s hot outside right now so, YES, the cooling kicked in, that’s what office HVAC systems do, they COOL or they HEAT. Maybe our next bonus should just be JACKETS??? [Ashur works at Panic and is also responsible for the Slack channel #planet-hoth. —Ed.]

What’s Next

In addition to maintaining all of our apps, which, remember, we are doing always, here are the big things in store:

Firewatch for SwitchFirewatch for Switch

Look for it later this year!

A Second GameA Second Game

Soon we will also announce the second video game we’ll be publishing! The follow-up to our hit game Firewatch will be a new game from a different studio that is not at all like Firewatch but is absolutely delightful. Keep an eye on our blog and Twitter for the big reveal.

Coda NextCoda Next

Great news! Our work on the next version of CODA® is well underway. Here are some facts I’m allowed to share about this project.

A lot has changed in the web development world since we first started working on Coda, not the least of which is a new set of really capable (and often free) competitors.

To catch up to today, we had to take a dramatic step. We’ve been informally calling it Coda Next during production. (We may even rebrand the product entirely, since it’s a dramatic step forward from today’s Coda.) It’s a total rewrite of our macOS version of Coda. We’re taking everything we’ve learned from the past, everything we learn doing modern web development here every day, and everything we’ve heard from our customers, and we’re totally redefining Coda for the future. Expect support for cutting-edge development and deployment workflows, ways to make your work easier, a light bloat-free design, and most importantly, 100% macOS native code so it’s extremely fast and responsive. This will be a huge update.

But, how far along are we? We’ve completed work on the “editor core”, i.e. the editor itself, i.e. the real meat-and-potatoes part of Coda Next. We’re using a brand new engine based heavily on Coda iOS, and including much-requested features like multiple cursors and a minimap. We’re really happy with it so far, and many of us are using it internally for our day-to-day editing already.

Coda has always been more than just an editor, though, so now we move on to the rest of the app, which is a lot. Some features may go, some may stay, but everything’s getting a re-think.

I have long ago learned not to predict release dates, so I won’t even try. While work is progressing rapidly, we still have a whole lot to do. But are we excited for you to see what we’ve got? Very!

HiringHiring

Something extremely rare is happening at Panic: we’re about to bring a few more people on board. Because it’s so very important to our success in 2018 and beyond, I’m gonna slap a <blink> tag on that: we’re hiring soon!

Keep an eye on this jobs page in the next few weeks. (We’ll also tweet when the jobs are up.)

And if you know anyone looking for a nice job in a nice city writing nice software, send them our way.

(My god that blink is really awful, no wonder it was deprecated, sorry.)

MiscMisc

We continue to work extremely hard on extremely bonus projects, as we have for a few years now, and I sure hope we’ll have a surprise or two for you in 2018.

Thank You

I always get a little sentimental writing these posts — borderline trite, to be honest — but it’s really astonishing that we continue to be able to do what we enjoy, day-in and day-out, and that’s all thanks to you. Recently I spur-of-the-tweet offered free Panic stickers and it brought piles of nice cards and letters to our office which really physically drove the point home: we are extraordinarily lucky to have such great customers and fans. Your support of the things we make, be it Transmit 5 or a game like Firewatch or even a Katamari t-shirt you bought a billion years ago, it all has helped us immeasurably. And we hope that we have improved your life a little bit in return.

To keep up with Panic goings-on, follow us on Twitter, or subscribe to our mailing list!

The Mystery of the Slow Downloads

Monday, March 5th, 2018

A few months ago, a complaint started popping up from users downloading or updating our apps: “Geez, your downloads are really slow!”

If you work in support, you probably have a reflexive reaction to a complaint like this. It’s vague. There’s a million possible factors. It’ll probably resolve itself by tomorrow. You hope. Boy do you hope.

Except… we also started noticing it ourselves when we were working from home. When we’d come in to the office, transfers were lightning fast. But at home, it was really, seriously getting hard to get any work done remotely at all.

So, maybe there was something screwy here?

The Video

Before digging in, here’s this story in convenient summarized video form, if you’d prefer!

[youtube https://www.youtube.com/watch?v=yh3touL9eqg&rel=0&w=750&h=422]

Now on to the details.

The Test

The Panic “network topology” is actually very simple. The Panic web servers have a single connection to the internet via Cogent. We colocate our own servers, rather than using AWS or any other PaaS, and we also don’t currently use a CDN or any other cloud distribution platform.

So, if something is making our downloads slow, it ought to be pretty easy to do some analysis and figure out why, or at least where.

We wanted to know three things:

  • How fast can people download from our website?
  • How fast can people download from a “control” website that’s not on our network?
  • What are people using for their internet provider?

We made an extremely simple test page that transfers 20MB of data from our server to the browser, then sends the user to run the same script on the control server, which we chose to host with Linode. (The Linode server is located in Fremont, CA, the closest we could find to us here in Portland.)

We tweeted the link out, and data started pouring in…

The Results

Here’s what we got back, comparing how fast our users could download from our control server through Linode, and from our own servers through Cogent:

Graph comparing transfer speeds between servers

(There are 1,645 samples in our target range, after filtering out TLDs with fewer than 10 occurrences, and we’ve done a box plot, which shows a spread of all the data points.)

Well, well, well. It doesn’t take statistical genius to see one glaring outlier — and that was Comcast, with download speeds often being as low as 300 kilobytes/second. And you’ll never guess what provider is used by virtually every Panic employee when they work from home? Yeah, Comcast. There is, in fact, no other cable ISP available to Portland residents.

But, before jumping to conclusions, there was something else that was weird with the Comcast data: a huge number of outliers, way more outliers than any other provider. See all those red dots on the graph, ranging from very slow to very fast?

The answer to that mystery was solved when we plotted out Comcast data across different times of the day…

Graph of Comcast transfer speeds in the morning versus the evening

Nuts. The problem reports we’d been hearing were indeed a real thing.

Our downloads really were slow — but seemingly only to Comcast users, and only during peak internet usage times. Something was up.

At first we thought, maybe Comcast bandwidth is just naturally more congested in the evening as people come home from work and begin streaming Netflix, etc. But that didn’t explain why the connections to our Linode control server from Comcast, during the exact same time windows for each tester, were downloading with good speeds.

We wondered, is Comcast intentionally “throttling” Cogent customers? And if so, why?

The Why

Peering.

Major internet pipes, like Cogent, have peering agreements with network providers, like Comcast. These companies need each other — Cogent can’t exist if their network doesn’t go all the way to the end user, and Comcast can’t exist if they can’t send their customer’s data all over the world. One core tenet of peering is that it is “settlement-free” — neither party pays the other party to exchange their traffic. Instead, each party generates revenue from their customers. Cogent generates revenue from us. Comcast generates revenue from us at home. Everyone wins, right?

After a quick Google session, I learned that Cogent and Comcast have quite a storied history. This history started when Cogent started delivering a great deal of video content to Comcast customers… content from Netflix. and suddenly, the “peering pipe” that connects Cogent and Comcast filled up and slowed dramatically down.

Normally when these peering pipes “fill up”, more capacity is added between the two companies. But, if you believe Cogent’s side of the story, Comcast simply decided not to play ball — and refused to add any additional bandwidth unless Cogent paid them. In other words, Comcast didn’t like being paid nothing to deliver Netflix traffic, which competes with its own TV and streaming offerings. This Ars Technica article covers it well. (How did Netflix solve this problem in 2014? Netflix entered into a business agreement to pay Comcast directly. And suddenly, more peering bandwidth opened up between Comcast and Cogent, like magic.)

We felt certain history was repeating itself: the peering connection between Comcast and Cogent was once again saturated. Cogent said their hands were tied. What now?

The Fix

There was only one last hope: get Comcast to fix it. I know, like we were somehow going to convince this 200 billion dollar corporation to add more capacity to their interconnection with Cogent. If I asked you to rate the possibility of that actually happening on a scale of “no” to “never”, you’d probably pick “come on man are you serious”, right?

But after a lifetime of being a “hey, it’s worth a shot” guy, I had to try. I did a real quick Google search for Comcast corporate contacts and found a person who seemed like they were involved in network operations PR, and I fired off a quick e-mail explaining the situation to Comcast.

And then, the craziest thing happened…

They wrote back quickly. Not only that, but they were on it. We set up a phone call. They took us seriously, they wanted to know the backstory, they wanted to know what our customers were seeing, and they were going to talk to the right people — they even e-mailed Cogent to connect with the right person in peering over there.

And pretty soon a call came back with a definitive-sounding statement: “Give us 1 to 2 weeks, and if you re-run your test I think you’ll be happy with the results.”

Sure enough, we waited two weeks, had our users re-run the speed test, and wouldn’t you know it…

Graph comparing transfer speeds of different ISPs

Graph comparing Comcast transfer speeds at different times of day

…the problem was essentially gone. Comcast really did fix it. We were now able to measure our Comcast download speeds in megabytes/second instead of kilobytes.

According to Comcast, two primary changes were made:

  1. Comcast added more capacity for Cogent traffic. (Exactly as we suspected, the pipe was full.)
  2. Cogent made some unspecified changes to their traffic engineering.

Here’s where I have to give Comcast credit where credit is due: they really did care about this problem, and they really did work quickly to make it go away.

(One weird thing, though: I was so prepared for a total Comcast dead-end, so sure that Comcast would never even reply, let alone help, that this incredibly positive outcome made me feel suspicious: why me? Why was I able to get this corrected with an e-mail when Cogent couldn’t?

It felt like there was no way this should have worked. If I had to guess, I’d say it’s simple: in the middle of a serious ongoing debate over net neutrality, the last thing Comcast wanted to look like was a network-throttling bad guy in this blog post. But then again, maybe I’m still being too cynical — maybe they just saw a problem they hadn’t noticed and fixed it. (But really, did they really not notice that pipe was full until I asked? Surely there are network monitoring tools?) Frankly, I have to stop thinking about it, because I’ll never know. But no matter the reason, I’m very grateful: thanks for listening to us, Comcast.)

What Does This All Mean

I’d summarize it as follows:

  • The internet is fragile — and that’s pretty scary.

And while this story amazingly had a happy ending, I’m not looking forward to the next time we’re stuck in the middle of a peering dispute between two companies. It feels absolutely inevitable, all the more so now that net neutrality is gone. Here’s hoping the next time it happens, the responsible party is as responsive as Comcast was this time.

Check Our Work

All of our data, our data analysis scripts, and more, is available at this GitHub repository. You can even click the button in the readme and it will take you to a running JupyterHub notebook where you can play with the data yourself, live in your browser. If you find any insights, or mistakes, please let us know.

The 2016 Panic Report

Tuesday, April 4th, 2017

Welcome to 2017… Panic’s 20th anniversary!!

No, your eyes do not deceive you. Some of you may not know that we founded our company in 1997, but it’s true. We’re older than Facebook, older than Twitter, older than Google, and somehow still kickin’.

Every year is a little different, and last year was for sure — a little bit quieter on the software front (at least publicly), and a whole lot louder on the launch-of-a-major-multi-platform-video-game front.

Yes, it’s time: here’s a look back at 2016, and look forward to 2017.

Releases

FirewatchFirewatch

2016 was clearly the Year of Firewatch for us. Thanks to Campo Santo’s heroic efforts, Firewatch shipped right on time on Mac, PC, and PlayStation 4. We later added an Xbox One port. I wrote a lot about the launch of Firewatch previously, and it’s still moderately interesting reading.

We’ve had a year to digest the whole (almost out-of-body) experience. I think the most rewarding part was something we don’t often get from apps: the e-mails, blog posts, YouTube videos, and forum discussions people had about Firewatch. How it reminded them of past loves, how it reinvigorated their fondness for the outdoors, how it spoke to life decisions past and present, how the ending was disappointing and/or absolutely perfect… it all made us feel like we created something a little bit more substantial than a lot of video games.

We got to support good friends in making something cool, we got to establish our name a little bit in a new industry, we got to push our marketing skills, and we learned a ton about what it takes to make and ship a game. Firewatch was also a financial success for us — a very solid return on our investment — which has created a nice cushion that I think will allow Panic to develop more software, take more risks, and try more crazy things in the future. That means Firewatch’s success is everyone’s gain. (Even you, the person who might be waiting for a new Coda!)

Since the game’s release:

  • Firewatch landed in a lot of year-end Top 10s, including Salon and Vulture and Polygon and The Independent (#2, right behind Uncharted 4!?). PC Gamer even said it had the best writing of any game in 2016.
  • It officially sold over one million copies.
  • We shipped on the Mac App Store (for people who don’t use Steam), which got featured by Apple.
  • We won some nice awards, including Best Debut and Best Narrative at the 2017 Game Developer Choice Awards.
  • And we lost a lot of awards, but one cool thing was consistent: our very first video game was right there nominated next to major franchises from massive studios. Amazing.
  • We’re now working to bring Firewatch to Japan, with localized subtitles. Here’s hoping we can pull it off.
  • And who could forget the story of the uncle that works for Nintendo?

We’ll always look back fondly at this particular time of our lives — from the initial crazy idea, to watching the team at Campo Santo actually make something of substance, on time, and for a ridiculous budget (well, as far as games go). I enjoyed updating the folks at Panic every week with what was going on, and watching our team pitch in in every way that they could, be it QA or marketing or what have you. It really felt like a team effort.

Thanks, Campo Santo, for taking us with you on this ride.

The team at GDC winning an award

FirewatchFirewatch Photos

We also launched and ran our fictitious photo printing company, Fotodome, to deliver people’s Firewatch memories on paper. All told, we — well, June, to be specific — shipped 1,500+ beautiful sets of video game photo prints around the world. And we’re now hosting over 45,000 separate “rolls” of photos on our servers — that’s over 534,000 photos taken in the Shoshone National Forest.

Fotodome was the goofy kind of thing Panic likes to do for fun, not for profit. It made Firewatch feel a little bit more special for the people who connected with it, and it still feels awesome every time a new order comes in — and there’s usually one or two every day even now!

Coda iOSCoda with Touch Bar

At the very tail end of 2016, Apple added the Touch Bar to the MacBook Pro, and we were fortunate enough to get in on the ground floor — we immediately thought it might be an interesting thing to support in Coda, an app where it’s really in your best interest to keep your hands on the keyboard as much as possible. Coda 2.6 with Touch Bar landed just a few weeks after MacBook Pro. It felt good to semi-quickly add a major new hardware feature to our app.

Updates

Other than working on new things, our team is constantly updating our apps. And I do mean constantly. Here’s a chart of all the bits we got out the door in 2016:

2.5.14 2.1.3 2.5 2.0.9 4.4.12 1.3.2
2.5.15 2.2 2.5.1 2.0.10 1.3.3
2.5.16 2.2.1 2.5.2 2.0.11 1.3.4
2.5.17 2.2.2 2.5.3 2.0.12 1.3.5
2.5.18 2.2.3 2.5.4 2.0.13
2.5.19 2.5.5 ☠️?
2.6 2.5.6
2.5.7
2.5.8
2.5.9

We shipped 34 software releases over the course of 52 weeks in 2016, and three of them were significant new-feature updates. Each one of them was fully tested and qualified by our expanded and improved QA team. This might be a new record for us!

It’s our goal to make sure that our software works well, constantly — that the app you paid for continues to deliver, every day.

Successes

A few things that are notable from 2016:

  • Our software quality is the best it’s ever been. In 2016, we moved Aaron over to join Ashur in QA, meaning we now have two, yes two!, people invested in full-time testing and release qualification of our apps. It has been a huge change from the early years of making a few educated spot-checks before pressing “deploy” and hoping for the best. I have great confidence that the software leaving our door is stable and polished. (As a case in point, the Transmit 5 beta may be our shortest ever, because we fixed so many bugs during development.)
  • We’ve upped our group skills. This is going to sound painfully obvious so please don’t laugh, but between conducting more regular status meetings and lengthy-but-helpful bug triage meetings, we’re doing a better job all working together to define our immediate goals clearly and make them happen.
  • Supporting an external project, like Firewatch, felt very worthwhile. We’d like to do more of it in the future. Does that mean we might want to support more games? If a good fit came our way, quite possibly.
  • We took the hiring process seriously. Driven mostly by Ashur and Heather, we approached hiring with new, more refined, structured process. We created a new recruitment page, and tried a lot of new things: blind resumes (James manually redacted all personally identifying information on each and every resume we got), outreach to underrepresented groups (not just me posting on Twitter), a fixed application window, focused deadlines for responses to keep applicants informed at all times, and more. It was a huge change for us, and it took a lot of work, but the results were worth it. Speaking of…
  • Our team is extremely good. I’m serious. 2016 welcomed both Jesus and Helen into our Support group, and I’m so glad they’re here. But truly every single person here at Panic continues to impress me every day with their skill, initiative, and unstoppable urge to make the best and coolest things possible. There’s a lot I can’t talk about yet, but it’s amazing to watch everyone find what they love and do their best at it. This is a world-class team, full stop.

Challenges

But not everything was super smooth:

  • iOS continues to haunt us. If you remember, 2016 was the year we killed Status Board, our very nice data visualization app. Now, a lot of it was our fault. But it was another blow to our heavy investment in pro-level iOS apps a couple years ago, a decision we’re still feeling the ramifications of today as we revert back to a deep focus on macOS. Trying to do macOS quality work on iOS cost us a lot of time for sadly not much payoff. We love iOS, we love our iPhones, and we love our iPads. But we remain convinced that it’s not — yet? — possible to make a living selling pro software on those platforms. Which is a real bummer!
  • Game development is tricky. We didn’t bear the brunt of this (thank you for everything always Ben!). But it turns out we’re a little bit spoiled in the Mac / iOS development world, what with our usually consistent tools like Xcode and mostly reliable platforms from Apple. Heck, even the App Store is blissful by comparison. Minor updates to Unity can break your game, hundreds of PC configurations make a smooth experience for all users a literal moving target, console submission processes are extremely complex, etc. This was often tough: we got so close to a Metal-powered Firewatch Mac, but Unity complexities got in the way. We’ll get it next game!
  • Defining roles is important. What happens when you’re truly a “flat” organization and you have a bunch of incredibly smart people that can all offer valuable input on almost every task happening at any one time? Things can actually slow down a little at times. You want the right people on the right tasks, and you want someone who can make tough decisions and process the possibilities. It’s possible we’ve outgrown complete flatness. We’ll be experimenting with this more into the future, although it’s so tricky — you don’t want people feeling excluded, and you don’t want to extinguish the passion of creating!

What’s Next

This is the part you probably care about. Here’s what we’re busy working on right now:

Transmit 5

Yeah, it’s 100% real. It’s been seven years (yes, really) since we last charged for a Transmit update. Currently in private beta testing, we’re getting tantalizingly close to the launch of Transmit 5! We don’t want to give it all away yet, but we think it’s a super solid update to this venerable and trustworthy file transfer app for macOS.

Coda

If you’re wondering what the long-term plans are for Coda, I can’t blame you! It’s been a while since Coda had a massive new release, as nice as adding that Touch Bar support was. So, what’s up with that?

The good news: we’ve been brainstorming a great deal about what it would mean to reboot Coda — tear it down to the studs, equip it for modern web development in 2017, and figure out what we can bring to that table that’s distinct and helpful. Can we make Coda leaner, faster, with more modern workflows for developing, building, and deploying web work, without completely alienating existing users who love the way it already works for them today? Can we do constant iteration instead of giant monolithic releases, and can we cook up a revenue model to support that? Can we carve out a unique identity in a universe of good (and often free!) competitors? These are the big questions. But we have a general plan, and the work is well underway.

The tougher news: this won’t happen overnight. This is a long road. This will take a while. You get the idea. I will post updates on Twitter or here on the blog when I have more to report.

To everyone who uses Coda, thank you so much for your support and your patience — this work is overdue, but we think it’ll set us up nicely for a future where Coda won’t get “stuck” for long periods of time again. (Also, feel free to e-mail us any time, and tell us where you’d like to see Coda go. We love your constructive feedback and always take the time to read and consider it.)

Misc.

It wouldn’t be Panic if we didn’t also have some crazy things in the works that may or may not see the light of day. Hopefully in 2017, our 20th year, we’ll be able to crank out something new.

Thanks

Sometimes it feels wildly improbable that we’re still here, but we’re still here.

Our good fortune is boundless. We’re fortunate to have been able to do this amazing job for 20 years straight. We’re fortunate to have found this solid group of people to work with. We’re fortunate to have the independence, opportunities, and means to try different things. We’re fortunate to have you as a customer and/or fan.

It’s been a beautiful 20 years. Let’s see where our fortune takes us next!