Adam Lynch

I'm Adam Lynch. I like to code, write, and dabble in design. I'm co-founder & CTO of ToDesktop.

  1. I've left Teamwork to chase the startup dream

    I feel like I should document a major change in my career and life. I've left my job at Teamwork to chase the dream in San Francisco.

    Teamwork has been a massive part of my life. It has been a fantastic 6.5 years. I wasn't looking for another job or anything like that; it has taken a once-in-a-lifetime opportunity to drag me away. I would hope everyone who worked with me closely already knows how much Teamwork means to me and how all-in I was.

       Read more
  2. What to consider before adding Markdown to your app

    I use Markdown daily. This article was written in it. I've built it into products. I personally like Markdown, but it doesn't belong in every app. If you are considering adding Markdown to your app, I'd like to let you in on the many things you need to think about, spanning UX, performance, security, product, and more.

    You might think I am over-thinking in places; that's OK, your mileage may vary. It all depends on your app and context. A key experience for me was building Teamwork Chat in which Markdown is featured front and centre. I took a lot of lessons from that, as well as from apps I've used personally which have perfected some bits and rightly messed up others.

       Read more
  3. Why empathy isn't a shortcut to great product design

    Cennydd Bowles wrote an absolutely fantastic book called Future Ethics which covers... well, yeah... ethics. Aside from teaching essential ethics theory like utilitarianism, deontological, and virtue ethics, it challenges us to build a fairer future. Is it OK to do X as long as no one knows? Or as long as it's done in good faith? What if everyone else is doing it? Or if it's for "the greater good"? Interestingly, no one approach to ethics is right, or wrong, all of the time.

       Read more
  4. Flexible data tables with CSS Grid

    Now that we've launched, I can finally talk about the secret project I've been working on for the last two years. One interesting piece of the Teamwork CRM puzzle was the "list view".

    It's a powerful page component which exists seven times in the app — a table on steroids essentially. I could talk about it for days but I won't bore you. I'll focus on how we added a lot of flexibility with a few lines of CSS (Grid). Namely, how we lay out data-heavy tables, how we support resizing of columns, and more.

       Read more
  5. How I made the @randomOpenAPI Twitter bot in 42 minutes-ish

    I love APIs. Especially open APIs. I wish there were way more of them. There's a lot of data out there we can't get our hands on. Imagine all of the unborn apps, studies, and infographics.

    The natural conclusion was to create a Twitter bot. Have you ever seen Stefan Judis' @randomMDN? It tweets a random article from MDN multiple times a day. I decided to create one of my own to raise awareness about open APIs. Plus it's an excuse for a small fun project.

       Read more
  6. Lessons learned leading teams

    I've been thinking about team leading a lot lately. When revisiting advice a friend asked for when transitioning to a team lead position, I decided to flesh it out and put it online. Most of the following will hopefully be helpful to anyone leading a team or any manager, although some will be more relevant to leaders of developers and developers transitioning into leadership roles. If it helps anyone, great. It will be a good reference for me at least. Alright, let's get to it.

       Read more
  7. 10 pro tips: how to work with production databases

    The goal here is get what you need done as quickly as possible and keep rolling. "Move fast and break things. Unless you are breaking stuff, you are not moving fast enough." - Mark Zuckerberg. 1. Connect to your production databases using the same tool you use for development. There's no need to...

       Read more
  8. How to improve your permissions UX

    "Welcome to Costco, can I have your phone number?" Most people would refuse, right? Well I suppose some might oblige, but that depends on a host of factors. This is what permissions requests are like on the web. Let's take a look at how we can do better, before it's too late. Side note: a phone number is like a SnapChat username to your parents.

       Read more
  9. Static site regeneration and focusing on what's important

    I've had my own site for years now but I haven't used it for much. A refresh was needed. I was focusing on the wrong things, trying to do everything, and getting nowhere slowly. It hasn't changed much in appearance, but that's just the tip of the iceberg. It has been completely redone beneath the surface.

       Read more
  10. Beyond The Browser: From Web Apps To Desktop Apps

    I started out as a web developer, and that’s now one part of what I do as a full-stack developer, but never had I imagined I’d create things for the desktop. I love the web. I love how altruistic our community is, how it embraces open-source, testing and pushing the envelope. I love discovering beautiful websites and powerful apps. When I was first tasked with creating a desktop app, I was apprehensive and intimidated. It seemed like it would be difficult, or at least… different.

       Read more
  11. Developing an Electron Edge (Book)

    Electron combines Chromium and Node.js, empowering you to create real desktop apps with HTML, CSS, and JavaScript, which integrate tightly into the desktop environment. In Developing an Electron Edge, we cover all things Electron. We breakdown what Electron is and what you can achieve with it over a typical desktop or Web app. Not only will we cover the complete development process from beginning to end, but the packaging and delivery of your app as well. You’ll discover some platform specific issues, learn how to deploy automatic updates, and even take a look at using one codebase for the desktop and the Web.

       Get the book
  12. Under the hood of a hybrid (app)

    It has been about a year since we had A peek under the hood of Teamwork Chat. Since then, we’ve added a few nice features, fixed some bugs, and introduced a couple. You know how it goes. More...

       Read more
  13. Resurrecting Clippy

    Remember Clippy? First shipped with Windows 97, Clippy was a “smart” assistant for Microsoft Office. A selfless shape-shifting paperclip who would appear out of nowhere to help you in any way it could. And how did you treat...

       Read more
  14. Transparency and NW.js

    Yes, NW.js does support transparency, albeit it is disabled by default. One way to enable transparency is to use the transparency property to your application's manifest like this...

       Read more
  15. Platform detection in your NW.js app

    There are various reasons why you might want to detect which platform or operating system your app is currently being ran on. Your keyboard shortcuts or UI may differ per platform, you might want to store files in platform-specific directories on disk, etc. Thanks to node's os module, it isn't too difficult.

       Read more
  16. NW.js: The App and Shortcut APIs

    The NW.js GUI library provides an "App" API, which contains a variety of methods and properties, some of which are essential to pretty much any app, and some have more obscure use cases. You can access the API as follows...

       Read more
  17. Installing your NW.js app on Windows

    NW.js is great for creating desktop applications using Web app technologies. If you're not familiar with NW.js, I'd advise you to read an introductory article like Creating Your First Desktop App With HTML, JS and Node-WebKit to get a good base first. This is a slightly more advanced article intended for anyone interested into distributing their NW.js app to Windows users.

       Read more
  18. npm and distribution path length problems

    NW.js is great for creating desktop applications using Web app technologies. If you're not familiar with NW.js, I'd advise you to read an introductory article like Creating Your First Desktop App With HTML, JS and Node-WebKit to get a good base first. This is a slightly more advanced article intended for anyone interested into distributing their NW.js app to Windows users.

       Read more
  19. 10 things to know about Gulp

    NW.js is great for creating desktop applications using Web app technologies. If you're not familiar with NW.js, I'd advise you to read an introductory article like Creating Your First Desktop App With HTML, JS and Node-WebKit to get a good base first. This is a slightly more advanced article intended for anyone interested into distributing their NW.js app to Windows users.

       Read more
  20. Building Your App: Creating Executables for NW.js

    NW.js is great for creating desktop applications using Web app technologies. If you're not familiar with NW.js, I'd advise you to read an introductory article like Creating Your First Desktop App With HTML, JS and Node-WebKit to get a good base first. This is a slightly more advanced article intended for anyone interested into distributing their NW.js app to Windows users.

       Read more
  21. Olc: Ruin someone’s day with homoglyphs

    You might have seen Ben Johnson’s tweet. I’m sorry everyone, I’ve made a module which makes this a lot easier to do. It’s called Olc. “Olc” is the Irish word for “bad” and is inconspicious enough to go…

       Read more
  22. Dealing with long paths

    You might have been unfortunate enough to learn that Windows has a 256-character limit on file paths. You could’ve run into this problem locally or on end users’ machines. We’ve created a simple little module called gulp-path-length to…

       Read more
  23. A peek under the hood of Teamwork Chat

    The idea was to build a chat application of our own. A whole new standalone product to raise the bar for team communication and collaboration. From the beginning, Teamwork Chat was intended to tie our whole suite of…

       Read more
  24. CoffeeScript at Teamwork

    The first project at Teamwork to use CoffeeScript was the Teamwork.com iPad app. Fast forward two years. We now have web, mobile and even desktop apps built with CoffeeScript. If you need a primer, there’s no better place…

       Read more
  25. Hassle-free third-party dependencies

    How do you manage your third-party assets? With my simple setup, all I have to do is run one command and reload the page. Lets take a look at managing our third-party dependencies with Bower and preprocessing them…

       Read more