Brain Food | Flexibits https://flexibits.com/blog Blog Wed, 15 Nov 2023 03:51:06 +0000 en-US hourly 1 https://wordpress.org/?v=6.4.3 You’ve Just Crossed Over Into… the End of Time Zones? https://flexibits.com/blog/2023/10/youve-just-crossed-over-into-the-end-of-time-zones/ Tue, 31 Oct 2023 13:59:15 +0000 https://flexibits.com/blog/?p=4040 You unlock this door with a key of imagination. Beyond it is another dimension. You’re moving into a land where it’s the same exact time as it is on the other side of the globe.

You’ve just crossed over into… the end of time zones.

Okay — cut the spooky music. Today we’re talking time zones!

At Flexibits, we think a lot about how to perfect our users’ experience, and of course, we think a lot about calendars. It follows, then, that we spend quite a bit more time than your average office thinking about time zones.

Time zones feel like something of a necessary evil. In an era where people on opposite sides of the globe can connect easily and instantly, time zones can create a real headache when scheduling, coordinating, and… well, building awesome applications that have to account for time zones.

But how necessary are they, really? A straw poll of our team revealed that the majority of our employees agree with the statement: “I would happily get rid of time zones.”

“Time zones are evil.”

– Alex, Customer Support


Maybe time zones are evil! The question remains: are time zones necessary?

Since the dawn of civilization, people have been telling time by tracking the movement of the sun. Time as it relates to the position of the sun is called “solar time,” and technically, if every place were to observe their local solar time, they’d all be operating on slightly different time zones. Yikes.

In fact, before people had much of a reason or method to travel very far, there was essentially a different time zone in every decently-sized town — by 1883, there were over 144 local time zones observed in North America. In the U.S., a consolidation of time zones was initiated to keep trains running on time (and to keep them from crashing into each other). Not a bad reason to have time zones, and at least there aren’t 144 anymore.

It’s also important for our bodies to function at a rhythm that’s consistent with the movement of the sun. One way or another, we need systems that allow people to spend their waking hours working, learning, exercising, eating, socializing, etc. while the sun is out. The best system for our bodies is whatever keeps us closer to operating on our local solar time.

Lining up time zones with solar time is not trivial, and it can have wide-ranging effects on a society. Take Spain, for example, where the sun rises and sets about an hour later than the rest of the countries on CET (Central European Time), and puts them over two hours off of their local solar time. Researchers have found that this contributes to cultural norms of stretching work hours to 8PM or later, leaving Spaniards with much less free time and family time in the evening, and quite possibly contributing to the country’s abnormally high suicide rate and low fertility rate.

So… time zones are necessary? (And evil?)

We can all agree that we don’t want trains to crash and we like to be awake when the sun is out. But that doesn’t mean time zones should remain wholly untouched.

As it happens, the runner-up in our straw poll was not  “Leave the time zones alone, I like them,” but rather, “I don’t know, I have conflicted feelings.” (This is perhaps not that surprising when we consider the quotient of calendar nerds in our office — the more you understand a topic, the more complex and nuanced of a take you’ll probably have about a straw poll in the #random Slack channel.)

“I don’t think the problem is time zones as a concept as much as it is the worldwide implementation of them.”

– Jonathan, Engineering

Jonathan, you certainly have a point. While the core idea of time zones may be sensible enough, the actual implementation of time zones is often based on factors that are not optimized for ease of use or health of a populous, but rather economic drivers and even political allegiances. Spain’s inclusion in CET, for example, is actually a holdover from a decision made by Francisco Franco in 1940 to show solidarity with Nazi Germany.

Unsavory historical context notwithstanding, you just have to look at the time zone situation in countries like Australia or Nepal, where certain regions are 30 or 45 minutes off of the UTC hour mark, to start feeling a little confused about the global implementation of time zones.

Alright, let’s schedule the call for 4PM my time… 9:30AM your time?

“First let’s get rid of Daylight Savings Time. Then we’ll come for the zones.”

– Brian, Engineering

Ah yes, we could not talk about the iffy implementation of time zones around the globe without a solid rant about Daylight Savings Time!

Remember when we said that what’s best for our bodies is to operate as close as possible to our local solar time? Well, proponents of Daylight Savings Time disagree. The main idea behind Daylight Savings Time is to shift sunlight hours later in the day in summer months (originally to maximize daylight for farm laborers, but now just… for extra time to make it to the dog park after work?). Ultimately, even if you’re into the late night summer sun, it’s pretty indisputable that the biannual clock shift does create adverse health effects.

But we’re here to complain about time zones. What does DST have to do with that? Well, given the massive inconsistency of DST implementation across the globe, it creates another layer of chaos in the “What time is it?” cake. Not to pick on Australia, but…

This image is from a math problem set made for Australian 16-year-olds. That’s how confusing Australia’s time situation is.

“We haven’t seemed to have come up with anything better 😛

– Kent, Engineering

Good call, Kent. So what are the alternatives?

The simplest answer is to just have everyone all over the globe on UTC (Coordinated Universal Time). James Gleick puts it nicely in the New York Times: “Our biological clocks can stay with the sun, as they have from the dawn of history. Only the numerals will change, and they have always been arbitrary.”

He admits that this system would take some “mental adjustment,” but if we learned anything from the Spain example above, it may not be so simple. Keeping odd hours can have an odd effect on the day-to-day lives of people, as evidenced by the implementation of a unified time zone in India and China.

Probably the most thoughtful and well-known alternative to time zones as we know them is the Hanke-Henry Permanent Calendar: a proposal for updating the entire system we use to track calendar years to make them more consistent and accurate, including ending time zones altogether.

The Hanke-Henry Permanent Calendar doesn’t automatically solve the issues we’ve already discussed, but Steve Hanke suggests that the proper implementation of this calendar reform involves local areas having their own “work-zone time.” This allows local regions to stay in line with their solar time, while any coordination between distant locations can use UTC for simplicity. As for how local regions determine and implement these “work-zone times”…? Hey, the guy is busy trying to overturn the entire calendar, you can’t expect him to solve everything.

“Don’t worry, when we get more into space travel, we’ll drop time zones real quick.”

– Will, Engineering

What do you think? Are we ready for a world without time zones? Could we possibly shift to something better? Or should we just hurry up and get to Mars already?

Whatever happens, rest assured that we’ll keep making Fantastical as easy to use as possible, no matter what the future holds.

]]>
A Beginner’s Guide to Natural Language Processing https://flexibits.com/blog/2023/10/a-beginners-guide-to-natural-language-processing/ Tue, 03 Oct 2023 21:54:17 +0000 https://flexibits.com/blog/?p=3927

You’ve almost certainly used the Flexibits parser at some point: the natural language engine that allows Fantastical and Cardhop to take a certain action based on your text input.

It looks like magic… but how does Fantastical know what to do when you’re typing out the information for your next dentist appointment?

Enter natural language processing!

What is natural language processing?

Broadly speaking, natural language processing (often abbreviated as NLP) is a set of tools and techniques for helping computers use and understand “natural” language; that is, language the way humans naturally use it.

NLP methods can be split into two fields: helping computers interpret natural language inputs, and allowing computers to generate natural language as an output.

NLP methodologies can also be categorized into dealing with text or speech, either as inputs or outputs. Here are some examples you’re probably familiar with:

  • Automatic captioning services interpret spoken input from a video clip, then generate text output that matches what’s being said.
  • Customer service chatbots interpret a customer’s text input (at least, they try to…), then generate text output to help them solve a problem.
  • Voice assistants interpret your spoken input, then generate spoken output (sometimes along with text output) to answer your question or confirm that they’ve performed some task.

There’s an amazing amount of different techniques being developed to tackle each of these specific NLP applications in fields ranging from data science to computational linguistics to spectrographic analysis.

In particular, the problem of helping computers understand and use speech requires pretty sophisticated science, since the way humans talk varies widely from person to person and is hard for computers to replicate.

Computers are generally better equipped to deal with text, rather than speech — text is easier to turn into structured data because there are less factors like pronunciation, inflection, and emotions affecting how language is represented in text.

At Flexibits, we get to focus on doing the best possible job of getting a computer to understand your text-based input. We don’t need Fantastical or Cardhop to talk back to you (yet…?), we just want them to take the correct action based on what you type into the parser.

Even though we do have some shortcuts like task and /calendarname, our goal is to make sure you can use as natural language as possible when typing in your commands. There’s a reason it’s called “natural” language processing!

💡 Did you know?

On Fantastical, you can use the /calendarname shortcut to add an event to a specific calendar, and the task shortcut to quickly add a task.

🧠 Tips & Tricks

Check out this support article for even more tips and tricks about how to get the most out of our natural language engine.

How do we teach computers to understand language?

We can teach a computer to understand natural language by building a language model that dictates how a computer should attempt to understand language inputs.

Rules-based models are, as you’d imagine, taught all of the rules of a language. Definitions of words, grammatical rules, conventions, and more can all be directly programmed into a language model.

  • Pro: The programmers have a lot of control over how the model behaves.
  • Con: Programming all of the rules of a language directly into a model can be an unwieldy, time-consuming task that doesn’t account for nuance.

Machine learning models are built by giving a model a ton of data, and then it learns (either with help from the programmers or completely on its own) how to understand language based on that data.

  • Pro: A model that is well-trained on high-quality data will perform much more naturally than a rules-based model would.
  • Con: Sometimes, programmers don’t actually know why machine learning models work well, which can make it difficult to tweak the performance of the model if they need to.

Given the enormous quantities of data that we generate on the internet every day, many language models in use today are what’s known as large language models (LLMs), where the “large” refers to the quantity of data used to train them. Most of the predictive language models you encounter on a daily basis are LLMs — like when a search bar tries to guess the rest of your query, or your phone tries to finish your text for you.

As for the natural language engine powering the Flexibits parser, we think it’s the best of both worlds: it’s a machine learning model with additional rules on top of it.

Our natural language engine does not do any predicting or contextual guessing like an LLM would. That’s because building an LLM with predictive capabilities often requires collecting a ton of data from your users, and as you probably know, we like to collect as little of your data as possible.

LLMs also rely on huge servers for their natural language processing tasks. By contrast, the Flexibits parser is able to run directly on your device, meaning any data you enter into Fantastical or Cardhop stays completely private — and it usually means our parser is able to work a little faster than an LLM, too. 

How does natural language processing work?

Here’s a very basic breakdown of natural language processing as it applies to our use case here at Flexibits.

Step 1: Processing the input

The text input is broken down into small chunks of data that a computer can understand.

This is where the computer starts to separate out which words contain key information (Drinks, Lila, Thurs), and which are referential clues (with, on, at).

Step 2: Analyzing the Input

Using its understanding of natural language, the model will now attempt to interpret the information contained in the input.

As you can see, a model’s understanding of grammar comes in handy here. The word “with” is a good indicator that the next input is a person; the word “at” typically will be followed by a time or a place.

Note that you wouldn’t need to type out all of “Thursday” or “PM” for the parser to know what you mean thanks to the flexibility of the natural language engine!

Step 3: Performing the Action

Now that the model understands the input, the program can do what it believes you are telling it to do.

When you use the parser in Fantastical and Cardhop, you can watch the action being teed up while you enter words in the parser, which is a helpful way to make sure you and the computer are on the same page. 🤖✅

More complicated examples

“Drinks with Lila on Thurs at 7P” is a pretty simple example, but the parser is able to understand more complex commands as well.

Adding a repeating event:

“Book Club every Thursday at 6:30PM from October 5 to December 21″

The parser can understand words like “every,” “from,” and “to” to add repeating events to your calendar.

Adding an event that starts and ends in different time zones:

“Flight from 9:35A PT to 5:41P ET

Time zones are a good examples of something that can be frustrating to communicate between humans, but that computers have no problem with.

Is NLP a form of artificial intelligence?

Yes and no. The term “artificial intelligence” is hard to pin down in the first place, and natural language processing consists of a lot of different methods and applications, as we’ve seen.

Researchers often distinguish between two types of artificial intelligence.

  • Artificial general intelligence (AGI) is what people usually picture when they think of AI in the sci-fi sense: a machine that is near-human in the way that it thinks, speaks, and behaves. This level of AI has not yet been achieved, but if it were to come to fruition, there’s no doubt that NLP would be a huge part of how an AGI could pass as “human-like.”
  • Artificial narrow intelligence (ANI) is what’s actually powering most of the “artificial intelligence” we use every day — models that are built to be very proficient at a narrow range of tasks. AlphaGo may be incredibly good at playing Go, but that won’t help it cook a soufflé.

These are not hard and fast boundaries, of course. SmarterChild was a decent example of an ANI for text-based language in 2000, but ChatGPT, while technically also an ANI, has come leaps and bounds closer to being “generally” intelligent in that field.

On to the question on everyone’s mind — is the Flexibits parser a form of artificial intelligence?

Believe it or not, there’s debate on that question even within our own offices. Ultimately, the answer depends on how you define artificial intelligence. It’s pertinent to note that the definition of “artificial intelligence” has evolved alongside the technologies the term is meant to describe.

If you define artificial intelligence as a machine that is able to problem-solve completely on its own, then you’d fall in the “no, our parser is not artificial intelligence” camp. It simply does what you tell it to do when you type in your commands in the parser.

Or, you could take a broader definition of artificial intelligence: a machine that performs tasks that a human would typically perform. By this definition, you might say that we’ve been pioneering artificial intelligence since way back in 2010 — before it was cool. 😎

However you define it, rest assured that the parser is smart enough and flexible enough to understand your natural language input, even when you type complex commands. So keep typing in your natural human way, let us know if you ever have trouble with the parser, and don’t worry about our natural language engine taking over the world anytime soon!

]]>
Signing In Smoothly and Securely https://flexibits.com/blog/2023/08/signing-in-smoothly-and-securely/ Thu, 31 Aug 2023 18:32:16 +0000 https://flexibits.com/blog/?p=3667 What’s everyone’s favorite part of using any app or website? Why, signing in, of course!

Just kidding.

Signing in is a necessary evil; we want it to create as little friction as possible, but it does carry important security and password management implications. How can you make sure your sign in process is both smooth and secure?

Smooth Sign In on Flexibits

We recently released an update that makes your signing in to your Flexibits account much easier. You’ve got three options for sign in: you can sign in with Google, with Apple, or you can sign in directly with your email and password. You can find all three options in the Security & Devices section of your Flexibits Account hub.

Check our support article for a detailed walkthrough.

Where previously, it was a little tricky to change your sign in method after you’d signed up, it’s now much simpler to change your password or your sign in method whenever you need. Just head to Security & Devices and update your settings in the Sign In Methods section. You can also activate multiple sign-in methods to maximize overall convenience.

Why might you go with one sign in method over another? There are a lot of factors to consider, and everyone’s preferences vary. (Note: this is not official medical, legal, financial, or relationship advice. Contact your doctor if — err, contact our Support team if you have any specific questions. 😊)

What is the benefit of signing in with Google or Apple?

Signing in with Google or Apple, also called “third party login” or SSO (single sign-on), is a great option for convenience.

If you’re already logged in to a Google or Apple account on a given browser or device, signing in with Google or Apple gets you in with just a few quick taps. It’s as close as we can get to the minimal friction dream (until the entire internet is equipped with fancy biometric security and we’re all basically Tom Cruise in Minority Report, of course).

“Zoom. Enhance. Sign in using my unique eyebrow whorls.”

Don’t worry — the convenience of third party login does not come at the expense of security. All apps and websites that use third party login follow a set of industry standards around OAuth 2.0, which basically just allow the third party to sign in on your behalf. The site or app you’re signing in to never sees your third party credentials — instead, the third party creates an encrypted key called an OAuth token, and the app or site stores that instead.

Ultimately, your comfort with the security of third party login comes down to your comfort with the security practices of the third party itself. With Google and Apple being the large and well-established companies that they are, they’ve obviously got very sophisticated security systems and huge teams dedicated to preserving that security.

That said, if a true Mr. Robot style team of hackers ever wanted to pull a full Fight Club, they’d target large companies like Google and Apple first. (Clearly cybersecurity’s got us in a sci-fi mood. 😎)

Google has a ubiquity and ease of use that is attractive to many users, but comes under criticism for the amount of data collection and tracking it does. If you don’t want Google to know more than they need to about what apps you use and when, you might consider avoiding Google as your third party login provider.

Apple is well known for prioritizing privacy, but sometimes at the expense of compatibility with anything outside the Apple ecosystem. Their new Hide My Email feature is a great privacy option: it generates a random, unique email address for each app or website you sign in to, then forwards any mail it gets to your primary email address.

Keep in mind that if you ever delete or get suspended from your Google or Apple account, you’d need to reconfigure any accounts for which you were signing in via Google or Apple.

What is the benefit of logging in directly with an email and password?

The standard sign in method, where you log directly into a service with your email (or username) and password, is a good option for those that are looking for maximal security on their own terms. Plus, if you have a password manager that you like, signing in with an email and password can be just as convenient as third party login. 1Password, LastPass, and Dashlane are all great options.

Here are a few quick notes on what NOT to do when it comes to standard sign in:

🔄 Don’t use the same password for multiple apps or websites — if one of those sites gets hacked, all of the accounts for which you used that password can be compromised.

🧠 Don’t rely on your memory as a password manager — there are simply too many things to sign in to these days. Our brains are powerful, but not that powerful. Plus, they’re not really built for memorizing long lists of specific information anyways.

❎ Don’t use easy-to-crack passwords like…

  • buttercup1964 — Passwords with names and dates are easy to socially engineer.
  • skh85!netflix, skh85!hulu, skh85!hbo, etc.  — Using passwords that follow a predictable pattern may help you remember them, but it’s not much better than just using the same password for everything.
  • k8wd*9 — Short strings of random symbols and letters are harder for you to remember, and easier for brute force systems to crack.
h/t xkcd

Of course, just as with third party login, the security of standard sign in is only as secure as the company you’re signing in to. If you’re worried that a company has subpar privacy or security practices, you may want to opt for a trusted third party login method instead.

Luckily, as far as Flexibits is concerned, you have nothing to worry about on the privacy front. All passwords and OAuth tokens are stored only on your devices, not on our servers, meaning we couldn’t even access your password if we wanted to (and thus, neither could hackers).

Signing in to your Flexibits account vs. Adding accounts to Fantastical

Word to the wise — signing in to your Flexibits account is different from signing in to add accounts to Fantastical.

With Fantastical open, head to Settings > Accounts to add any of the accounts below:

When you select the account you want to add, you’ll be redirected to sign in to that account (maybe even via third party login!). Once you’ve signed in, you can add calendars from that account, attach Zoom meetings or Webex meetings to your events, integrate tasks from Todoist, and more.

That’s all from us today! Signing off for now (since it’ll be a breeze to sign back in again anyways 😉).

]]>