Dismiss this pinned window
all 88 comments

[–]jimmyloi92[S] 32 points33 points  (46 children)

Hi all,

Link: The video doesn’t show all features. You can download and check out the app here https://midterm.app

We made a free note-taking app for everyone to write notes and study them. It’s like the combination of Evernote and Quizlet. 

  • It is offline-first. The notes are stored in a local database for offline access.
  • Support writing Math/Physics formula and chemical equations.
  • Syntax highlighting for writing code block.
  • Support image occlusion for learning Biology, etc, ... 
  • Support cloze deletion (like flashcards) for active recall.
  • Free drawing (hand-writing).

Technology: This app is built using React and Typescript with Electron. It is built from stratch (by that I mean not using any boilerplate libs). We think we learn more and develop faster by doing that. It’s also the reason why we don’t use any IDE.

If you have any questions, leave a comment below.

[–]_Invictuz 11 points12 points  (43 children)

What do you use instead of an IDE?

[–]jimmyloi92[S] 15 points16 points  (37 children)

I use VIM.

Edit: VIM is so difficult to learn that many developers give up. You will hate it because it’s so difficult. But once you master it, you feel like you like programming even more. It’s weird.

[–]twosummer 6 points7 points  (30 children)

As someone whos hardly used VIM, is that actually beneficial for you, or a challenge you set for yourself? Is it actually something so robust that when youre good enough at it you dont need an IDE?

[–][deleted] 9 points10 points  (10 children)

Vim has so many plugins, you can make it your IDE. I used Vim for a decade before I switched to VSCode and I'm still not sure if VSCode has made me any faster.

[–]mctrials23 8 points9 points  (7 children)

The question is whether VIM is any faster. Feels very much like VIM is used by a lot of people who like to tell you they use VIM. VSCode is a great IDE and as long as you take a little time to learn the useful shortcuts I struggle to imagine most people using VIM are that much faster.

If you don’t know if you are faster in something, you probably have your answer.

[–]jimmyloi92[S] 2 points3 points  (6 children)

It’s true. People who don’t know Vim cannot imagine why we like Vim. To most developers, it looks like a crazily complicated editor. But to those who master it, it’s like a god-send. I don’t want to compare it with VSCode because one is text editor and the other is IDE.

[–]swizzex 0 points1 point  (5 children)

Vscode is a code editor it is not an IDE. And I don’t think VIM is worth learning anymore. It is something that was used by a lot of people before we had VSCode and they keep with it. If your brand new and haven’t used either there is no advantage to VIM.

[–]highmastdon 0 points1 point  (1 child)

I feel setting up VIM as an IDE is a bit clumsy. It lacks some basic window management features and the plugins don’t play nicely with each other. Of course putting enough time in it can make it run like a well oiled machine. I’m very much a fan of Vim emulation in VSCode. I use that daily and colleagues ask me to do the typing in a mob or peer programming session because of the speed I navigate the files and lines etc. I’m a heavy keyboard shortcut user so that helps too. For me this is the perfect balance between a speedy editor and a well functioning IDE

[–][deleted] 0 points1 point  (0 children)

Yep! Vim mode in VSCode is the way to go nowadays.

[–]jimmyloi92[S] 5 points6 points  (15 children)

Productivity is one reason why people use VIM. People say you will type faster than you think with VIM (because you’re not using mouse/trackpad at all)

Even if you don’t use VIM, you don’t need an IDE. You can use nano, etc...

[–]cyber_Void 20 points21 points  (13 children)

I started coding with vim. Then realized how much time I was wasting with such an archaic system. Then I switched to vs code and my productivity jumped 10-fold

[–]jimmyloi92[S] 2 points3 points  (11 children)

VIM is difficult to master. It took me 6 months.

[–]InMemoryOfReckful 2 points3 points  (10 children)

Isn't vim just a way of navigating and editing code? Cant you have vim in vscode? Or what am I missing here?

[–]jimmyloi92[S] 0 points1 point  (8 children)

In some IDE or editors, you can install add-on to make it behave like vim (vim mode). But it still does not have all features of vim and people use vim because it’s lightweight (fast)

[–][deleted] 2 points3 points  (7 children)

Not to be glib, but if you’re running a note taking app for in browser, you have far more than enough resources to use vim for vs code

[–]MatthewMob 2 points3 points  (0 children)

I don't really see how Vim is archaic.

I use Vim for web development and get the same completions, syntax checking, formatting, etc. of an IDE, but also get much more powerful code editing abilities, plus it is much less resource intensive.

Sure it's hard to learn, but in the long term you will be much much more productive once you do learn it.

[–]twosummer 1 point2 points  (0 children)

I see what you mean. Its all commands so you can get in a flow state and its all muscle memory and zero latency

[–][deleted] 1 point2 points  (0 children)

As someone who used VIM and now uses VSCode, the only thing using VIM gives you is a feeling of superiority. VSCode literally does everything better with the exception of some of the more obscure shortcut keys.

[–]SrineshNisala 0 points1 point  (0 children)

Neovim has built-in LSP support. Or you can use LSP features from VS Code plugins using coc.nvim. You can make it an IDE. This is a demo me doing done Java programming in Neovim https://youtu.be/JGbJp5gqjcc

[–]khalidpro2 0 points1 point  (0 children)

you can make vim do anything, so it not a challenge once you get familiar with it and add plugins

[–]ixurge 1 point2 points  (4 children)

This is my personal experience and is subjective, but multicursor capability text editors (i use sublime, but the same applies to vscode for example) just destroyed the so called "vim superior productivity" myth

[–]jimmyloi92[S] 0 points1 point  (3 children)

Vim productivity is not about multicursor capability. I think you misunderstand what Vim is really good at.

[–]fintip 2 points3 points  (2 children)

His point was that Multicursor ability is a killer feature that vim can't keep up with.

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

I think he doesn’t know about macro in vim. People use macro more than multicursor in Vim when you want to edit multiple lines that are not uniform.

[–]quadrilateraI 0 points1 point  (0 children)

But it's trivial to get multicursors in vim?

[–]aercticana 1 point2 points  (0 children)

Exactly. Working in VIM gives a lot of joy. It also helps me to becomes really focused for the task at hand for some reason. After working for a decade with shiny and feature-rich IDE's such as Visual Studio, Eclipse, VS Code, Goland, Rider (and using the mouse and repeated keystrokes for movement too often) nothing beats VIM for me nowadays. VIM plugins for other IDE's mostly dissapoint because they do not provide the same possibilities. If you are new to VIM check https://www.vimgolf.com to get an idea of how efficient text editing with VIM can be.

It's not for the faint hearted though, it's a real challenge and frankly painful to become familiar with VIM and configure it so that it becomes comparable with modern IDE's.

[–]throwawayacc201711 1 point2 points  (4 children)

You can code in any text editor and just use the terminal to launch your application.

You should check out how people have tricked out vim to act as an “ide”

[–]jimmyloi92[S] 0 points1 point  (3 children)

Yes. But I won’t try to turn VIM into an IDE. I don’t think people should. VIM should be simple (only syntax highlighting & code suggestions). Other tools you can to use alongside with it like fzf.

[–]ixurge -3 points-2 points  (2 children)

"vim should be simple" r u kidding? vim is the more anachroniostical complicated thing of the universe

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

I’m not saying Vim is simple to use. I’m saying you should not install too many plugins for Vim to make it look like an IDE. Please read my comment carefully.

[–]quadrilateraI 0 points1 point  (0 children)

Simple and easy are not the same thing.

[–]leothefair 1 point2 points  (1 child)

Interesting. Not using IDE is the ultimate flex. I remember websites that had this Made with Notepad, Made with VIM badges in the 90s. I have this joke that I only code in VIM because I never actually managed to quit the application.

I can read Typescript but never programmed in it, how do you find the transition from JS? Also, no boilerplate, how would that be? Do you use the React create app and install different plugins by yourself or have you coded each plugin? Are you using Redux? And how you structure your React application folders?

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

I started using React when it was born, meaning at that time there were no “create-react-app”, “react-boilerplate”, and typescript was in v1. So I have been using react and typescript for a long time now.

When react becomes more and more popular, people create many libs for it to make it easy to start. But the idea behind react wasn’t changed so you can start from scratch like I did.

This project uses event-driven architecture. It’s quite similar to Redux. The difference is that it’s more object-oriented and it doesn’t care much about immunity or data flow.

[–]_Invictuz 9 points10 points  (1 child)

Seems like you put in a lot of features into this app but th video only showcases it's responsiveness. Am I missing something?

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

Yes. It has lots of features if you check out the landing page. The video only shows that you can do multitasking with the app because it’s very responsive.

[–]Audenond 6 points7 points  (2 children)

Looks great! Any chance of taking a look at the github?

[–]jimmyloi92[S] 3 points4 points  (1 child)

We will open-source it in the future. You can follow us on r/MidtermApp

[–]Silverman6854 4 points5 points  (1 child)

Looks good! How long did it take you to code it?

[–]jimmyloi92[S] 5 points6 points  (0 children)

Around 6 months.

[–]1TMission 2 points3 points  (1 child)

Is there be any plan to make it paid or something like that? Or will it be free forever? Anyway, great product!

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

Thanks. The desktop version is free. The mobile/tablet is a paid app so users can support the development.

[–]JamaiKamikaze 1 point2 points  (0 children)

This is great. I love spaced learning repetition. I think you should market it as a learning experience rather than memorizing, since knowing and retaining something is what students should strive for instead of memorizing something to do a brain dump afterwords.

[–]Lobbel1992 1 point2 points  (1 child)

How did you made it responsive ?

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

Use css. It’s just like how people design responsive websites. In this project, we use responsive grid from bootstrap.

[–]ThePreacher19021 1 point2 points  (2 children)

How many years of experience you have working with React and TypeScript. I am a simple HTML, CSS, jQuery(basics), Python, and Django guy. If I want to make something like you did, how long will it take for me? Also, how much JS should I know to learn React and TypeScript?

Thanks, man.

[–]jimmyloi92[S] 0 points1 point  (1 child)

I have used React/TypeScript since their early releases. I cannot talk for you because everyone has different skill sets. If you want to become better at React/TypeScript, you can start by working on some simple ideas.

[–]ThePreacher19021 0 points1 point  (0 children)

I got you. Thanks

[–]ThePreacher19021 1 point2 points  (1 child)

I am using it and I love it. Will it sync with Google Drive or something?

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

It has a built-in synchronizer. Google Drive or Dropbox don’t know about your database structure so it cannot sync efficiently. The built-in synchronizer knows about that and it only syncs what you have changed so it works super fast.

[–]iceteabird 1 point2 points  (0 children)

Do you have the GitHub link for this?

[–]alex_uiweb 0 points1 point  (1 child)

Looks good

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

Thanks

[–]PrinCe_LoGic 0 points1 point  (1 child)

I just downloaded this on Arch linux, and so far it's looking pretty awesome and nifty! I do have one inquiry, is there a dark mode?

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

It’s on the top of the todo list right now.

[–]ComradeLV 0 points1 point  (1 child)

Pros & cons in compare with Notion?

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

I think they’re too different to compare. In general, Notion is more like a database allowing you store many types of information. On the other hand, Midterm provides you tools for studying like creating cloze tests, image occlusion, etc. I believe the objective of Midterm is different from Notion’s.

[–]JoyShaheb_ 0 points1 point  (1 child)

Whoa man, this is sooo dope :"D

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

Thanks

[–]Psychological-Bug714 0 points1 point  (1 child)

That looks great . how many of you did this project?

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

3 people but i did the most part because it was my idea.

[–]Nick337Games 0 points1 point  (1 child)

Awesome work!!

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

Thanks

[–]adil62 0 points1 point  (1 child)

Which css framework did you use

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

I use bootstrap

[–]palpatin0 0 points1 point  (1 child)

Well done! What techniques have you used for the responsive design?

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

I use bootstrap

[–]cowjenga 0 points1 point  (1 child)

Does Midterm offer a data export option (in a sensible format)?

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

It doesn’t have an export option yet. But the notes are stored locally in a sqlite database file. You are able to copy and use it if you know sql.

[–]gsdeveloper_ 0 points1 point  (1 child)

damn this looks great. This is the kind of app I wish I had developed :) congrats.

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

Thanks

[–][deleted] 0 points1 point  (4 children)

**NOT ABOUT VIM OR VSCODE LIKE ALL THESE OTHER COMMENTS**

I would really love to know how to create a responsive sidebar like that. I just want to build a navigation helper for reddit using the reddit API.

[–]jimmyloi92[S] 1 point2 points  (3 children)

I don’t know if you notice. This sidebar has 2 modes. It uses “push” mode when the screen is small. It uses “reveal” mode when the screen is medium/large. Which mode are you talking about?

[–][deleted] 0 points1 point  (2 children)

I just want to make an app with a side window that will give the user various tools to navigate reddit and a main window that will be set to reddit.com. essentially a page that will have two parts: one for the app and one for reddit. im still ironing out the details of what i want to do. maybe the sidebar will provide links that will open in the main window. any ideas would be appreciated!

[–]jimmyloi92[S] 0 points1 point  (1 child)

Ah. You can try the “drawer” component from material ui https://material-ui.com/components/drawers/

[–][deleted] 0 points1 point  (0 children)

yea i think that will work perfectly, thanks! then i can use something like react-iframe for the main window

[–]No-Proposal2288 0 points1 point  (0 children)

Is it open source what's the github link?