The Breakroom

Why Tapestry?

February 14, 2024

By Sean Heber

Playful cartoon of a guy smiling as he looks at his iPhone with data sources of Tapestry floating all around him.

Even in the early days of the Internet, finding and keeping track of the pages you wanted to read could be difficult. Back then, adventurous individuals created their own personal web pages to keep a public log of the latest things happening in their lives. These web logs (aka blogs) spread like wildfire, and soon there were hundreds for every topic you can imagine.

This led to a problem – there were too many of them, posting too often! Enterprising developers created a way to solve this: “Really Simple Syndication” or RSS. A blog that included support for RSS opened up a whole new possibility: apps could automatically check your blog bookmarks and let you know when one of them updated!

Suddenly it was easy to keep track of your friends, family, budding journalists, plucky pundits, and obscure hobbyists. All you needed was an RSS reader and your computer could do the rest for you. By the mid-2000s, this was a popular way to consume content on the web.

However, around this same time was the rise of what we might call the modern social networking era. Websites such as Facebook appeared that were, in a way, a blog of blogs. They made it easier to post updates and find the updates posted by your friends and family. Then came services like Twitter which, while looking a little different from Facebook, followed the same model: you can keep up with everyone as long as everyone comes here!

Soon there was a mass exodus from personal blogs to these centralized services. Companies, services, and individuals stopped posting on their own websites (if they even had one anymore) and started posting on social sites. Posts started disappearing from the web and got locked behind the doors of the giant companies.

While personal blogging never went away, it was greatly diminished as people began to rely on their Twitter timelines to find interesting news or posts. Following blogs or other online sources directly was rare.

And then Twitter imploded.

While plenty of people still use the service (now unfortunately named X), the company essentially closed its doors to outside access. Apps like Twitterrific were unceremoniously banned. Services and outside blogs that used to automatically post status updates were no longer allowed. Policy changes caused people to leave for other services, go back to their old websites, or just shut their Internet browsers never to return.

Almost overnight the online information landscape shattered and became more fragmented. Millions of people scattered in different directions. Links between friends, family, and random acquaintances were severed. It felt as if the hope for a single, convenient way to check for news, updates, and posts from friends on the web was forever doomed.

But we don’t believe the dream is dead.

RSS still exists and is widely deployed. Many other similar technologies and open protocols have joined the web publishing landscape. We can dust off some of the old ways, update them with modern capabilities, and rebuild what we used to have. We don’t need to go back to checking multiple websites or apps all day long – we have computers to help with that. And now it can all be done in your pocket.

Today, a growing number of people are taking back control of their social media presence by returning to blogging or moving away from the closed and centralized products of mega-corporations. Open platforms like Mastodon and Bluesky are popular destinations built on standards like ActivityPub and the AT Protocol. These services operate like small towns that communicate with their neighboring small towns to form a larger shared community that no one completely owns – just like the web itself.

Project Tapestry is our way of embracing the return of fragmentation and the messiness of a more open Internet. We’d like to create an app to help you weave a new fabric of diverse services and protocols together into a unified and chronological timeline, so you can see what you want when you want it. We believe that rather than demanding all of our friends and family move to the same gated neighborhoods, it would be better to visit them where they already are.

But, like any community, it’ll take everyone working together to make it great. Check out our Kickstarter for more details on what we’d like to build and how you can help. Pledge what you can and give us a hand spreading the word far and wide. Thanks!

Tapestry Unwoven

February 6, 2024

By Craig Hockenberry

It’s a bold claim to say you can make a universal timeline for the Internet.

But you can. And we have.

This post will explain the technology behind Project Tapestry and how we tested it as a prototype. We’ll keep this discussion at a fairly basic level: if you’re a web or app developer, you’ll have no problems following along.

And if you think I’m going to describe RSS feeds now, think again! We’ve come up with something completely new.

Overview

The key to this project was to use the same technologies as modern web development. Namely, the JSON data format and JavaScript for processing.

That is not to say that Project Tapestry is a web app. It is fully native and implemented with UIKit and SwiftUI.

Our insight was to use the web technologies as a way to extend Tapestry when it talks to the Internet. These plug-ins are built with JavaScript that is executed as needed by the native app. JSON files are used for metadata and configuration with the app.

When you add a plug-in to Tapestry, you are creating a place where JavaScript can be executed. For example, there is only one plug-in for Mastodon, but each time you use that plug-in for an account, a JavaScript environment is created. This lets Tapestry support multiple accounts or use a single plug-in for multiple RSS feeds.

Our goal is to make an app that can gather any publicly available data: if it uses an IP address and HTTP, we feel confident that it can be woven into Tapestry’s timeline. If you have a Raspberry Pi in your garden that generates a CSV file with the current level of a water tank, it can be a part of your beautifully designed universal timeline.

Data

Tapestry does not communicate directly with the web. Instead, it asks a plug-in to fetch data and place it into JavaScript objects. There are three types of objects in our prototype:

Post: A unique piece of content gathered from the Internet. Its uniqueness is guaranteed by a Uniform Resource Identifier (URI). It must also have a timestamp so it can be displayed chronologically. The content of the post is text with HTML formatting. The formatting is lenient: we’re big fans of Postel’s Law.

Creator: The entity that created the post. For a social media post, it’s a person, but for a satellite image it would be the name of the spacecraft. This object also uses a URI to guarantee uniqueness. (John Doe on Mastodon will be different creator than John Doe on Bluesky). Each Post object has a single creator.

Attachment: A piece of media that can be displayed with a post. The only requirement for an attachment is that it contains a URL to display. It can optionally have accessibility text and a thumbnail image. A Post can have multiple attachments.

These JavaScript objects are just used to transfer data. The app itself uses Swift objects to display the timeline and eventually persist the data.

Security

This separation of data between an internal state (Swift) and an external state (JavaScript) has another important advantage:

The JavaScript code has no knowledge or access to login credentials or other data in the timeline.

Each plug-in calls a function named sendRequest which returns a JavaScript Promise. There is no Fetch API or XHR in the plug-in’s environment, so this is the only way the plug-in can access the Internet.

The sendRequest function is implemented by Tapestry and it adds any required authorization (either OAuth or JWT) before contacting the server. This makes it easier to develop plug-ins because the authorization dance is handled automatically as tokens are needed (including after expiration).

Data in the timeline is also protected by JavaScript’s strict sandbox. It’s just like one web page’s JavaScript not knowing about what’s going on in another page. The plug-ins only have enough information to perform their own tasks.

In Practice

JavaScript code turns out to be an excellent pre-processor for Tapestry’s universal timeline. It’s a natural environment to filter and massage JSON data coming from a URL. And by extending JavaScript’s built-in functions with a mechanism to convert XML to JSON, we can handle all modern structured data. (It’s how we handle Atom and RSS for blog feeds.)

To give you an idea of the effort involved: a plug-in to get recent earthquakes was implemented in about an hour. It was done with no prior knowledge of the API or data formats involved.

Supporting Bluesky took a bit longer: about a day including adding support for JSON Web Tokens (JWT).

There is a GitHub repository with full documentation of the JavaScript API and sample plug-ins. We think you’ll find that it’s a robust and extensible system, just like the web itself.

We’ve also created a developer tool called Tapestry Loom that lets you debug a plug-in using Safari’s Web Inspector. This Mac app makes it easy to inspect data coming from an endpoint and make sure the right objects are being created. You can download it, and experiment with the plug-ins, all from the project page.

Our long-term goal is to make these plug-ins user manageable. Something akin to installing Shortcuts on Apple devices. But while the plug-ins themselves may be easy to create, building a secure distribution system is not: it’s a stretch goal for our Kickstarter.

But Wait, There’s More!

Join me in a screencast that shows you all these pieces working together and expands on some of the concepts we’ve presented above. This 30 minute video will hopefully make our fellow developers as excited about Tapestry as we are!

So there you have it: the overall architecture of our universal timeline. With your support, we can make it a reality.

Kickstarting Project Tapestry

January 30, 2024

By Webmaster

It’s getting more and more difficult to stay up to date with friends and our favorite sources of news and information. There are so many different social networks and personal blogs these days that it’s a bit of a struggle keeping tabs on everyone and everything.

We think there’s a better way.

Today we’re launching a Kickstarter campaign for Project Tapestry: A new iOS app that aims to gather your most important social media services, RSS feeds, and other sources into a single universal timeline. All updates and posts together in one place, in the order they’re created, with no algorithm deciding what you should see or when you should see it.

Our goal is to use public Internet standards to gather the information you care about, and present it to you in one place, without a middleman and on your own device. This means that not only can the app collect posts from social networks with open APIs such as Mastodon or Bluesky, it could also include webcomics, posts from blogs, the latest photos from NASA, headline news, or anything else with an accessible feed.

It’s important to us that this project is supported by a community. Social products that are funded with venture capital, even ones with altruistic goals, eventually lose their way trying to keep investors happy. We don’t need to do it that way.

Our plan is to ship the first version this fall, but we won’t be able to do it without your support. Head over to our Kickstarter page for more details, backer levels, rewards, stretch goals (with additional features!), and more.

With your help, we can work together to make Project Tapestry a reality!

Developers, Developers, Develop!

January 12, 2024

By Craig Hockenberry

Two of our most popular developer tools were updated this week. It’s not just our website that’s getting the love!

xScope

Our primary focus with xScope version 4.7 was to update the screen recording code. Alerts in the Sonoma beta gave us pause and we noticed an increase in crashes with the older APIs. There were even significant bumps as we replaced code.

Most tools use the current screen image in one way or another: the Loupe to magnify the pixels and sample colors, Dimensions to determine the distance between interface elements, and even things like the Crosshair automatically adjust contrast depending on where your mouse is located.

This modernization effort wasn’t easy, but we were able to increase the speed of the tools and the app got more reliable. And that inspired us to keep going!

Measuring the screen with Dimensions was redesigned with a new algorithm that takes color perception into account. Detection on subtle patterns, gradients, materials, and other modern UI design is much better now and and it’s sensitivity is much easier to tweak with a new Settings UI.

We also spent time improving support for Dark Mode, adding new reticle modes for the Loupe, making it possible to delete Guides with a shortcut, and much more.

All-in-all, it’s a great update to an app that just had it’s 20th birthday!

WorldWideWeb

Our newest developer tool also got an important update.

We use WorldWideWeb for all our HTML/CSS/JavaScript development. Whether it’s a static page or something dynamically generated with PHP and Rails, automatic refresh saves everyone time as we implement and tune a site.

With a major redesign of our home page, we used WorldWideWeb a lot. And that’s when we started noticing a crash every few hours. There seemed to be no rhyme or reason to these failures, except that they all happened on the web server’s background threads.

So we started running the app with Xcode’s thread sanitizer enabled. And within a couple of hours, we identified several data races between the main UI thread and the web server’s background work. If you haven’t run your app with this tool, you’re probably missing some bugs that are notoriously hard to track down, but relatively easy to fix.

Both updates are FREE. If you’re not familiar with either app, a free trial of xScope can be downloaded from the website and free versions of WorldWideWeb are available on the iOS and Mac App Stores. Give them a try today!

Welcome to the New Iconfactory.com

January 9, 2024

By Webmaster

We are terrible at tooting our own horn.

Someone recently was excited to learn we offered design services to clients – something we’ve been doing for over 25 years and is a significant part of our business. It was clearly time for a refresh of iconfactory.com so we could highlight that aspect of our work. 

In tackling the redesign, we started with the very same process we use with clients and our own apps – design first, code later. This approach lets us experiment with the design quickly and easily before a single line of code is written. Throughout the entire process we kept in mind that the site needed to be responsive and work well on a wide range of devices.

The new Iconfactory has a singular focus. We’ve been leaders in the design industry for decades and the new site puts our attention to detail, our award-winning apps, and our extensive development services at center stage. In short, we want to help you build the best apps you can, and whether you’re a Fortune 500 company, or an indie developer like us, we’re here for you. The new site explains why we’re the ones you should call on, and it does it with plain language and gorgeous examples.

We can’t wait to help you ship your amazing app, develop a memorable brand, or even create striking graphics for an App Store feature with a tight deadline.

So, this is us, tooting our own horn. We invite you to explore the all-new Iconfactory.com and see what we have to offer. No other company has been helping designers and developers as long we have. Isn’t it time we worked together?

Unlock A World of Stunning Wallpapers with Wallaroo’s Anniversary Sale

January 3, 2024

By Ged Maheux

It’s been a little over a year since we launched Wallaroo and to celebrate we’re offering a special discount for new customers. Taking advantage of this sale is easy. Just head to the App Store by opening this link on your iPhone or iPad to receive a 35% discount off the annual subscription price. And don’t wait – this offer is only good until January 19th!

In 2023, Wallaroo subscribers received hundreds of new wallpapers, each designed specifically for iPhone, iPad, and macOS. These joined hundreds of others from previous years with no ads or sketchy schemes – just great wallpapers.

There’s never been a better way to customize your screens than Wallaroo. We hope you’ll discover the fun as we bring new and exciting wallpapers to screens near you throughout 2024!

The Year In Review for 2023

December 13, 2023

By Ged Maheux

A red car travels down a long road over green hills driven by Twitterrific's blue bird Ollie. DoBot from Frenzic is the passenger with Wally from Wallaroo and InfoBot in the backseats.

What a year! Right off the bat, we could tell that the new year wouldn’t be pulling any punches as one of our most beloved and important applications, Twitterrific, was forced into early retirement by Elon Musk. Last January seems like a lifetime ago, but the sting of having to shutter Ollie, and the revenue that sustained our company, still hurts to this day. Perhaps the only thing worse than discontinuing the app has been watching helplessly as Twitter, or rather X, has mutated into a dark shadow of its former self.

Focusing On the Future

Early in 2023 we decided to no longer be an active part of Twitter, and made the move to Mastodon for connecting with our fans and clients. That was a great decision and we’ve enjoyed watching the community on Mastodon grow and flourish. We invite you to follow us on Mastodon, but we also have a presence on Threads as well. Needless to say you can also find us on Facebook, YouTube, Instagram, LinkedIn and Patreon

Of course, we couldn’t let all that drama distract us from bringing fun goodies to your screens this year. Here’s what else we’ve been up to:

Linea Love

Let’s start with Linea, our pick-up-and-draw digital sketchbook for the iPad. In January we released v4.2, offering fun new features like Organic Ink to give your drawings a more rustic appearance. We followed that up with the more recent v4.3 update that added easy textures, custom thumbnails, and more.

The year also brought new Linea Sketch videos, including Ged’s pixel-clicking tutorial to help you get your feet wet creating retro pixel-clicked icons and artwork. Head over to Linea’s YouTube channel to check them out and subscribe for future videos.

The Name of the Game

Back in May, we treated fans of our fast-paced puzzler Frenzic: Overtime to a chapter filled with all-new challenges and strategies while (once again) attempting to save the world for human and robot kind. We’re currently working on the final installment on Apple Arcade, and boy you won’t want to miss this one!

Frenzic wasn’t the only game in town this year. In August we released Ollie’s Arcade, a collection of retro-inspired hand-held games that charmed players with its seriously mindless fun.

The app comes with Ollie Soars as a free-to-play game, with Snake and Tranquility Touchdown as one-time purchases. There are no subscriptions, no ads, and no in-game coins to buy. We hope to add new games to Ollie’s Arcade in the future, so be sure to show your support and download on the App Store today!

Triode Gets A Tune-Up

September’s release of Triode 2 was a great update to our easy-to-use cross-platform Internet radio app. We introduced a host of new OS features including interactive widgets to control the app from your Home Screen, support for Standby Mode, full support for Shortcuts, improved integration with Apple Music, a convenient sleep timer, and more.

Using Triode with CarPlay is now easier than ever.

The release’s visual improvements were notable and included new music category icons, a richer and more vibrant appearance, improved CarPlay layout, and controls to identify steaming music with Shazam. If you love music, be sure to get the free download of Triode on your platform of choice and see what everyone’s been listening to.

Of Widgets and Wallpapers

Wallaroo 1.4 launched in September with cool and customizable Home Screen widgets. We also improved Wallaroo’s handy shortcut for setting wallpapers to work without muss or fuss.

App Store and Patreon subscribers have enjoyed tons of amazing new wallpapers every week in 2023. Some highlights include Indiana Jones and the Dial of Destiny and Mercury by Anthony Piraino, Sprout by guest artist Max Rudberg, and the iMac 25th Anniversary icon set from Talos Tsui. 

We lovingly create every wallpaper by hand, fine tune them for each platform, and often create multiple variants. Subscribe to Wallaroo to join in on fun, or even better, join our Patreon for bonus wallpapers, sneak peeks, Discord access, and more exclusive goodies!

The Next Adventure

The year ahead promises to bring some amazing new offerings.

We’re putting the finishing touches on an all new version of the Iconfactory website, with a focus on our design and development services. The new site is the latest in a long line that will bolster the services side of our business and introduce us to new clients.

A Kickstarter is also in the works for an innovative new product that we hope will surprise and delight you. We can’t say much yet, but with your support, we hope it becomes our next big thing. Be sure to follow us here and on social media for a heads up when it launches early in 2024!

In the meantime, we’re off to rest up and recharge our batteries. We’ll be spending time with family and friends, watching our favorite movies and TV shows, and wishing all of you the best this life has to offer. We’ve been blessed and honored to serve you all for over 25 years and we honestly wouldn’t have it any other way. Stay tuned, be safe, and Happy Holidays!

Happy Anniversary, xScope!

November 14, 2023

By Webmaster

xScope 20 years!

Twenty years ago today, we released a new product.

To say that product has been a success would be an understatement. It’s been an essential part of a workflow for tens of thousands of folks. It’s also an app that has evolved with our desktop environments over the years: it predates responsive web design, Retina displays, deep color spaces, and even the iPhone with mobile design. A lot has changed over the years.

Back in 2002, the Iconfactory was a huge fan of Wolfgang Ante’s Screen Tools. As people who fretted over pixel level details, we relied heavily on this suite of utilities. And, of course, we wanted the tools to do more. It made sense for us to combine forces and come up with a new product: we entered into a partnership where ARTIS Software would handle the development and the Iconfactory would do the design, documentation, and marketing.

ARTIS Software got to work during the winter of 2003 in a beautiful place: a sunny apartment in the south of France where the balcony door was always open. Yes, it was Nice.

Wolfgang was joined by his brother Joachim who was building a game engine for a new Mac OS X title. The Ante brothers worked side-by-side on their respective projects while collaborating with colleagues in Copenhagen, Iceland, California, and North Carolina. An early example of how remote work changed everything.

It also turned out that both of them were working on tools for designers and developers, because that winter’s work produced a tool called Unity in addition to xScope.

xScope blossomed in this creative environment. These screenshots of the Loupe show the transformation that took place during 2003:

xScope Loupe in January (left) and November (right) of 2003.

The pinstripes were gone and replaced by a sleek new interface. It’s not often that you revisit a design from the distant past and think it looks good and modern. We are all still extremely proud of this work.

The next step was to give this new product a name. After several weeks of trial and error we landed on “xScope”. The “X” worked for both the operating system and the “examination” done by the tool. All the assets and websites were put in place and we got ready to launch with our unique tool with a unique name.

And then this little company from Cupertino decided to rename their Project Builder tool. Our unique name wasn’t so unique anymore: at least we used a lowercase “x”!

The Loupe tool from xScope v4 running on macOS Sonoma's desktop  - magnifying the xScope App icon
xScope Loupe running on macOS Sonoma in 2023.

As we mentioned above the functionality of xScope has evolved over the years. The screenshot above shows what the Loupe looks like in the version we’re currently working on (with improvements for macOS Sonoma and beyond).

The app’s icon has also changed considerably. Many of these variations were driven by the desktop’s own evolution. xScope has been through macOS’s pinstripe, brushed metal, translucency, and flat phases. You can probably guess the era for each one shown below:

The evolution of the xScope icon on the desktop from a bulbous white X to a sleek silver metallic form to two pieces of bacon and a fried egg to arrive at the current version, a sleek, light X in white and blue
xScope icons for versions 1.0 through 4.0, and a tasty breakfast.

And if you’re having trouble picking the era for “Eggscope”, don’t worry, you didn’t miss macOS’s awkward teenage years. It’s a long-time Easter egg (hold down the Option key until the Preferences Settings window opens, then pick EGGSCOPE DUH).

To celebrate this anniversary, we’re putting xScope on sale for a week. Use the promo code 20FOR20 to get the app for only $20 (a whopping 60% discount!). If you’re a professional developer or designer, and don’t have these tools at your disposal, now’s the perfect time to fix that!

If there’s still a macOS desktop in 2043, we all hope that xScope will be running on it. Here’s to the future! 🍻

Announcing Linea Sketch 4.3

November 7, 2023

By Ged Maheux

The latest update to Linea Sketch is now available! From textures to thumbnail cropping, version 4.3 is packed with clever new features to make sketching on your iPad easier and more fun than ever.

Textures Have Never Been Easier

We’ve created a variety of pre-defined seamless textures to let you quickly add visual interest and depth to your artwork. Open the options panel on any layer and tap the Textures icon to get going. Select from a range of choices including abstract patterns, architectural materials, crosshatching, and more. Then simply draw or paint a color into the layer with any tool. It’s as easy as that.

Side-shade a texture with the Pencil Tool or use the Watercolor Brush for weathered, rustic effects. Or use Clear Ink to erase the selected texture from your artwork. The Textures feature is super flexible and even works with Transparency Masking or the Fill Tool.

If you want to learn more about how to use textures in Linea Sketch, be sure to head on over to our YouTube channel. We’ve created a Textures Basics tutorial that gets you up and running quickly with Textures in Linea and covers what kinds of things are possible with this great new feature. Don’t forget to subscribe to our channel while you’re there!

Canvas Resizing

You can now change the overall size and aspect ratio of existing sketches. Open any sketch, then tap More Actions (⋯) and Edit Canvas Size. Adjust the canvas based on screen size, aspect ratio, or use a custom setting to set whatever proportions you need. This comes in really handy when you want to continue working on a sketch on the iPad that was originally created on iPhone or vice versa.

Thumbnail Framing

With Linea Sketch 4.3 you’re no longer stuck with a thumbnail of your entire sketch. Now you can easily customize each sketch’s appearance in the Project view. Simply open a sketch and zoom into the portion of the drawing you want to focus on. Once you close the sketch, the thumbnail in the Project View will reflect this new framing for the sketch. It’s great for showing detail or highlighting a particular portion of a sketch in the Project View. Creating custom thumbnails enables you to decide how your work should appear and let’s you highlight the parts that are important.

Get Linea and Get Sketching!

Linea Sketch 4.3 includes many other improvements and fixes, including smoother results with the Blending Tool, improved autosave functionality, and more. Visit Linea’s version history page for the complete list of what’s new, and then head on over to the App Store and grab the FREE download of Linea Sketch. It’s where your ideas begin!

Beware: xScope & macOS Sonoma

November 1, 2023

By Craig Hockenberry

We’ve been working on a compatibility update for xScope on macOS Sonoma for the past few weeks. The current version has been fine through the beta release, so we’ve been making minor tweaks and adding some performance improvements – certainly nothing urgent.

With last week’s release of macOS Sonoma 14.1 (on October 25th) things changed significantly. A new bug in the window server causes clicks in some of xScope’s tools to be “flipped”. This affects the Rulers, Guides, and Frames tools.

For example, when you click on the measurement arm of the Ruler, nothing is reported to xScope. Only clicking in the empty space below the arm will generate events. And since these events are “in the void” the app doesn’t know what to do with them.

Unfortunately, there doesn’t appear to be a workaround for this issue. It’s a low-level bug and window server optimizations aren’t telling us about the clicks because it thinks we don’t need them.

If you are currently running macOS 14.0 or earlier (including Ventura), things are fine. If xScope is an important part of your workflow, DO NOT UPDATE to macOS Sonoma 14.1. (See below.)

If you have already updated, the only thing you can do at the moment is wait it out. We have submitted a bug report (FB13320473) with a sample project that should help Apple’s engineers get to the bottom of the problem quickly.

We’ll update this blog post as we learn more.

Please help us spread the word about this issue. If you know someone else who uses xScope, please give them the heads up. Thanks!

Updated November 1, 2023: This bug also affects Photoshop. If you turn off the application frame, clicks go through the toolbar. This video shows the behavior. Developers at Adobe are aware of the issue.

Updated November 8, 2023: The bug is fixed in the macOS Sonoma 14.1.1 release. All tools in xScope are fully functional and the issues in Photoshop have been resolved.