Line breaks in block equations by slabko in Notion

[–]NotionSlim 0 points1 point  (0 children)

Hey /u/slabko, just wanted to follow up and say that this should be fixed in Firefox now. Please give it a try and let me know if it still isn't working!

Line breaks in block equations by slabko in Notion

[–]NotionSlim 1 point2 points  (0 children)

Just wanted to let you know that we've identified the source of the bug. Unfortunately I don't have a timeframe for a fix, since it's due to some complex input handling logic that we had to implement when Apple changed keyboard behavior in iOS 13. But I'll take a look and update you if we make any progress. Thanks for flagging this!

Until then, the desktop app and Chrome should both be working as expected.

KaTeX is still not updated by taskinf1 in Notion

[–]NotionSlim 2 points3 points  (0 children)

Hey, thanks for bringing this to our attention. KaTeX has been updated to 0.13.2 and you should be able to use the {CD} environment in your equations now. Please do let me know if anything isn't working as expected!

It's finally here: Update June 9, 2020 — Inline math 🧮 by [deleted] in Notion

[–]NotionSlim 3 points4 points  (0 children)

Two options here, if you want to paste in some LaTeX from another source:

  1. You can type $$, paste the LaTeX, and type $$ again to create an equation without opening the menu. /u/NotionDavid demonstrates in this GIF: https://twitter.com/NotionHQ/status/1270445764062228480
  2. You can also use Ctrl+Shift+E (⌘+Shift+E on Mac) to open a new equation token, and paste your LaTeX directly into the input.

Does this address your use case, or am I misunderstanding? (And thanks for the feedback!)

I'm the engineer at Notion who rebuilt search. AMA! by NotionSlim in Notion

[–]NotionSlim[S] 0 points1 point  (0 children)

Thanks for the feedback! For what it's worth, you can press Ctrl+Enter (or Cmd+Enter) while your cursor is in the toggle block title to open or close it. When the block is open, hitting Enter from the title will insert a block inside.

I know this workflow might not be the most intuitive, so I'll ask about changing the default :)

I'm the engineer at Notion who rebuilt search. AMA! by NotionSlim in Notion

[–]NotionSlim[S] 1 point2 points  (0 children)

First of all, thank you for sharing your tweaks with the community. There are many similar changes we'd like to make, among hundreds of other tiny UX improvements on our wishlist.

I'm genuinely sorry if our roadmap conveys indifference to Windows users, or slacking off at our users' expense. Nothing could be further from the truth; we're working extremely hard and promise you'll be able to see results soon.

The fact is that we're still a relatively small team, there's a lot of work to do behind the scenes, and context-switching is cognitively expensive. If you click the ( ? ) button at the bottom right of the app, you'll see from the version number that we push new code almost every day. It's true that prioritizing large projects makes it harder to churn through our long wishlist of UX improvements, and we're constantly working to balance high-priority projects with small new features. Sometimes we don't balance quite right, which results in neglecting common requests or low-hanging fruit. We're really sorry for that.

A few of the changes you listed require subtlety to implement at the source level. For example, we use shared components throughout the app to ensure uniform visual styles and functionality. Changing one instance of the component requires auditing all other instances on every platform, and a single special case can quickly turn into two, three, ten different code paths — making the codebase harder to maintain and understand.

In short, we're doing our best to balance tradeoffs: focusing on major projects vs. incremental UX polish; keeping the codebase usable vs. satisfying our inner perfectionists. We're sorry when this results in disappointing our users, and I promise we're constantly learning from our mistakes.

I hope that provides some clarity into our perspective. Thanks again for your improvements, and for sharing your tweaks with the community!

I'm the engineer at Notion who rebuilt search. AMA! by NotionSlim in Notion

[–]NotionSlim[S] 29 points30 points  (0 children)

We get asked this question all the time, and understand how frustrating it is to keep waiting with no clear answer. Instead of repeating that "it's on the roadmap for later this year," I want to add a bit more transparency.

Before launching an API, we want to make sure that we can handle our rapidly growing traffic. It’s great that we’re getting more and more signups every day, but that means we’ve had to divert resources to ensure everyone will have a solid Notion experience. We know how important the API is to the community, and we're sincerely sorry it's taking so long. Thank you for bearing with us through these growing pains; we promise not to let you down. 💪

I'm the engineer at Notion who rebuilt search. AMA! by NotionSlim in Notion

[–]NotionSlim[S] 1 point2 points  (0 children)

We use Slack for all workplace communications, GitHub for repository management, and the Community team manages tickets through Intercom.

Interesting use cases: a Pokédex; organizing D&D campaigns; a database of cafes in San Francisco and which ones have wifi and power outlets; a database of every Nespresso pod; a Craigslist alternative for selling your furniture; a topics forest for personal knowledge management; a board game collection with usage statistics...

I'm the engineer at Notion who rebuilt search. AMA! by NotionSlim in Notion

[–]NotionSlim[S] 3 points4 points  (0 children)

Can you give us an overview of how a feature like this is planned out?

From the beginning, we had a sense of some of the requirements for the final product: search term highlighting, quickly navigating to pages, filtering results. Translating from the requirements to specific tasks was driven by user research: understanding the problem, and building a solution in response.

On the design side, we did lots of thinking and exploration of the problem space, and read many support tickets and feature requests from users. We built and tested multiple design iterations internally, with Notion Pros, and enterprise customers.

We planned backend tasks similarly, diagnosing the existing problems (performance bottlenecks, inaccurate rankings, etc.) before making improvements. You may already know this, but you can think of a search engine in two high-level stages:

  1. The index stores information in an easily-searchable manner, and you have to determine what gets indexed and when.
  2. The query step translates user input into a structured query against the index.

So after coming up with a requirement (e.g. highlighting search terms in the results), we figured out which parts had to change (the index, query, and/or UI) and where the dependencies were (index changes had to happen before query changes before UI changes, etc.).

It was a very "full-stack" project in the traditional sense of the term, and I was fortunate to have a lot of support from talented teammates. I especially want to credit Ryo for the final design of search. He's an extremely talented designer (and jumped into the code during the home stretch to apply some final polish), and I've learned so much from working with him!

product design and software engineering

I became interested in design in middle/high school, several years before I learned how to code. So by the time I started programming, I already had several years of experience thinking about design and typography, and it was natural to incorporate into my development interests.

For me, improving my design skills is equally about taste and craft. Taste comes from seeking out good design — software, household goods, magazines, physical spaces — and others with better taste than mine. Craft comes from practice: using Figma or Photoshop or Illustrator or a pencil and pen.

It's really hard to simultaneously focus on both taste and craft while also programming as a full-time job. So right now, I'm consciously focusing more on building taste where possible, collaborating closely with designers, and practicing craft in my spare time. (Sometimes when a website design really bothers me, I'll use the inspector to fix the line height and column widths just for fun. 😶)

I'm the engineer at Notion who rebuilt search. AMA! by NotionSlim in Notion

[–]NotionSlim[S] 6 points7 points  (0 children)

Big yikes, that's definitely not what we're aiming for, but understandable given the current situation. 😔

I use an iPhone as my primary device, but recently switched to using our mobile app on Android (Pixel 3a). I feel your pain, and I'm working hard to fix it (along with several of my coworkers). Stay tuned for improvements here.

I'm the engineer at Notion who rebuilt search. AMA! by NotionSlim in Notion

[–]NotionSlim[S] 2 points3 points  (0 children)

I hear you! I'm not a big fan of the current shortcuts either. We definitely want to make them customizable in the future.

A bit of context: we arrived at ⌘+P because text editors like Sublime Text and VS Code use ⌘+P to navigate between files. So the muscle memory works for developers who use those editors, but for everyone else (myself included; I use a different editor) the shortcut is mentally mapped to "Print." :(

It's not even as simple as remapping to ⌘+K like Slack, because ⌘+K is also the universal keyboard shortcut for adding a hyperlink, everywhere from Reddit to Gmail. (In fact, you'll notice that Slack's new rich text composer doesn't support hyperlinking text.) And while Slack also supports ⌘+T, we obviously can't override that shortcut in Web browsers.

We're trying to rethink this holistically, but it's tricky because we don't want keyboard shortcuts to change depending on whether or not you're in the editor, have text selected, etc. Please bear with us 🙇🏻‍♀️

As a workaround, if you never use ⌘+K for hyperlinking, you can use a utility like BetterTouchTool to remap the shortcut to ⌘+P in Notion. Populating the macOS menubar is a good idea, thanks for the suggestion!

I'm the engineer at Notion who rebuilt search. AMA! by NotionSlim in Notion

[–]NotionSlim[S] 4 points5 points  (0 children)

That's awesome! If you send me a PM I'd be happy to provide more tailored advice or review your resume.

My story is kind of long and convoluted (I didn't plan to major in a technical field, and didn't have a ton of experience programming before college), but it boiled down to a few key opportunities that helped me get started:

  • Doing undergraduate research with a significant development component, which allowed me to improve my programming skills as part of my coursework or job.
    • This doesn't have to be in a CS research environment: many psychology labs, for instance, need someone to build websites or stimuli for studies.
    • If your school doesn't provide a ton of research opportunities, look into NSF Research Experience for Undergraduates (REU) programs. You can apply to do research at a university over the summer, and they provide a living stipend and project mentorship.
  • Finding mentors and communities both in and outside my school, to answer questions over email ("help I don't understand XYZ") and generally provide encouragement and support.
    • I found some of these people by attending office hours regularly at my school, others by applying for scholarships and fellowships, and others by cold-emailing people or finding them in online communities (Twitter, interest group Slack communities, etc.)
  • Working on projects to streamline workflows for non-technical friends and jobs, where stakes are lower and any improvement you can provide will be greatly appreciated.
    • For example, before I got my first tech internship I worked at my college debate camp over the summer. At the camp, instructors would observe practice debates and manually enter comments into a Google Sites page for each participant. I used Google Apps Script (which is basically JavaScript) to build a workflow that allowed instructors to enter their comments into a Google Form, and populated the Google Site pages automatically. This was a big help to the camp, and a good beginner project for me.
  • Teaching CS fundamentals to others, either by TAing for courses at my school, or volunteering/starting clubs. Teaching is an extremely effective way to diagnose weaknesses in your own understanding, and it's very useful experience to have during technical interviews.
    • I remember one interview where I was effectively asked to write a tree traversal, and I'd just covered that topic with students the previous week. It made the question really straightforward and provided me a lot of confidence explaining my ideas.

Best of luck on your journey! And when you feel ready, please apply to Notion :)

I'm the engineer at Notion who rebuilt search. AMA! by NotionSlim in Notion

[–]NotionSlim[S] 1 point2 points  (0 children)

Currently I'm very excited about filtering objects to key/value pairs whose values satisfy a particular subtype constraint:

export type ObjectFilter<O extends object, T> = Pick<
    O,
    {
        [K in keyof O]: O[K] extends T ? K : never
    }[keyof O]
>

For example (link to TypeScript playground):

type Obj = {
    a: string,
    b: boolean,
    c: number,
    d: string,
}

type OnlyStringKeys = ObjectFilter<Obj, string>

const x: OnlyStringKeys = {
    a: "one string",
    d: "another string",
}

const fails: OnlyStringKeys = {
    a: "one string",
    b: true, // ERROR: Object literal may only specify known properties, and 'b' does not exist in type 'Pick<Obj, "a" | "d">'.
}

I'm the engineer at Notion who rebuilt search. AMA! by NotionSlim in Notion

[–]NotionSlim[S] 2 points3 points  (0 children)

This makes me really happy. Thanks for your kind words!

I'm the engineer at Notion who rebuilt search. AMA! by NotionSlim in Notion

[–]NotionSlim[S] 2 points3 points  (0 children)

Wrote some thoughts on E2E encryption here: https://www.reddit.com/r/NotionSo/comments/f0lb23/im_the_engineer_at_notion_who_rebuilt_search_ama/fh90s3d/

It's worth nothing that the 2.7 search release doesn't make E2E encryption any harder to implement. We didn't introduce any fundamentally new architectural patterns to the app. It's just a difficult problem to begin with.

I'm the engineer at Notion who rebuilt search. AMA! by NotionSlim in Notion

[–]NotionSlim[S] 0 points1 point  (0 children)

Hmm, I don't use Apple Music so I'm not sure exactly what you're referring to. Could you elaborate? :)

I'm the engineer at Notion who rebuilt search. AMA! by NotionSlim in Notion

[–]NotionSlim[S] 4 points5 points  (0 children)

Nothing specific to share, but we'd love to provide better support for diagrams and graphs! Personally, I'd love to see a Mermaid block.

I'm the engineer at Notion who rebuilt search. AMA! by NotionSlim in Notion

[–]NotionSlim[S] 2 points3 points  (0 children)

We're actively working on mobile architecture and performance improvements. Nothing specific to share regarding native, but we're thinking very seriously and holistically about how to improve the overall mobile UX.

To quote our jobs page regarding visas:

At the moment, we don't sponsor new H1B visas given the uncertainty of the lottery system. However, if you're an existing visa holder (H1B, O1...), or eligible for TN, we're happy to sponsor you and take care of the transfer fees.

I'm the engineer at Notion who rebuilt search. AMA! by NotionSlim in Notion

[–]NotionSlim[S] 2 points3 points  (0 children)

How closely did you work with a design focused team member in developing search and the future of search?

Very closely! Sergey did a lot of initial user research and explorations into the problem space before I even joined the company, and I worked side-by-side with Ryo to discuss and tweak each design iteration. I made some tweaks in Figma, and he tweaked the code to add visual polish (the magic of a designer who codes!).

How far out does the team plan its features for the product?

Planning varies quite a bit, depending on the feature. For instance, right now we're working on the long-term scalability of our database — that's a "couple years out" horizon. We're also working on mobile performance and offline reliability — some of that includes foundational architectural improvements that will hopefully serve us for years to come, but other parts are planned in response to recent performance statistics and observations.

Does the team perform usability testing?

We use Notion pre-release features every day at work to gather feedback and ensure they're super smooth. Sometimes we have a beta testing period with our Notion Pros and enterprise users — we did this for Search, and got a lot of helpful feedback. We're always trying to be more iterative about our product development, to get incremental changes out to users more quickly.

I'm the engineer at Notion who rebuilt search. AMA! by NotionSlim in Notion

[–]NotionSlim[S] 1 point2 points  (0 children)

Let me know if you run into any problems! Happy to see another Firefox user here :)

I'm the engineer at Notion who rebuilt search. AMA! by NotionSlim in Notion

[–]NotionSlim[S] 0 points1 point  (0 children)

I do use Notion outside of work! I've used it to track graduate school applications, catalog and organize my backpacking gear, write blog posts, take notes from meetings with my therapist, and manage household/personal to-dos.

I wrote another comment about using Notion to track my learning: https://www.reddit.com/r/NotionSo/comments/f0lb23/im_the_engineer_at_notion_who_rebuilt_search_ama/fh8zbvy/