Is this meant to be a cool tech demo, or a real product? I noticed the author mentioned adding new features and a premium version in another comment. This leads me to believe it's intended to be a real product.
With that in mind, I have a few questions:
1. If this is inspired by Notational Velocity, a very popular and real product, why is this also named Notational? I understand if you're doing a cool tech demo that it's not a big deal, but if you plan to charge money for this you probably shouldn't copy their name.
2. Was "Notational Velocity but real-time" your hypothesis of what would make this something people want to use/buy? If so, what about all the other very standard features that note-taking and thought storage apps have? Do you plan to hit baseline with those?
3. How do you compete with the larger companies who offer these apps for free to their users? Google Keep, Apple Notes, etc.
4. Is the real-time feature the only way you plan to make this different/better than the others?
I'm not trying to be a downer here, but I feel like I see "X app but real-time" posted to HN on a weekly basis now, like it being real-time is going to be the differentiator that makes it wildly popular. Those products then go on to ignore half the reasons why the others have users. Even if they reach feature parity, their one differentiator is "well, it's real-time". I'm not sure that's enough.
If this is just meant to be a cool demo of Vue.js (with an awesome homepage), well done, ignore my comments =)
1. The name was something I came up with quickly so I could focus more on making the product. It stuck and I haven't had time to think of a new one. The creator of NV opened up an issue on GitHub (https://github.com/tmm/notational/issues/2), which I am addressing.
2. My hypothesis was "NV plus web." I needed something I could use at home (on my Mac) and at work (on Windows). The plan is to keep it simple so you can create/retrieve notes really quickly. Users have suggested markdown, etc. which I think makes sense., bu it's never going to be a general purpose notes app for everyone.
3. I'm not going to actively compete. Even if no one else uses it, I still will. I would rather have a small number of users that love it than try to appeal to a huge audience that's sort of indifferent.
4. Speed and minimalism are the main differentiators (whether it's creating a new note or trying to find an old one). There are some other cool things (like quick note sharing and dark mode) that make it a joy to use (but hey, I made the thing).
I work for a networking company in bay area and a pretty complex major dashboard is built entirely with Vue. I have only heard good things about it from the developers.
Which in turn made me use Vuejs for this hackernews search that I have been building (http://searchhn.com/).
The documentation is excellent and Vue is well designed, it took a few hours from scratch to learn and build the demo (PS: Not a web developer)
Vue is awesome. I belive it will stick around - for one - they have seminars and well attended events. It's not a one-man project anymore.
It has gained big popularity in the PHP/Laravel world.
On the other hand, we have a somewhat large production vue 1.0 app that we just can't justify quickly upgrading to vue 2.x. I hope to get some more LTS version information from Vue team so we don't have to upgrade to Vue 3 in 2018...
I've used Vue for a couple projects now and it's my favorite SPA framework by far. But I liked Knockout too, and now that feels abandoned, and I'm afraid Vue will suffer the same fate. Will it really stick around in the face of React, Angular, and Ember? I feel like there is only room for so many frameworks. So I'm a little nervous to recommend Vue for really large projects. Can anyone offer a good reason why I should stop worrying?
Btw one thing I like about Vue is how easy it is to build a traditional server-rendered app but use Vue only on pages that really need it. Not saying you can't do this elsewhere, but with Vue it is so easy!
> Can anyone offer a good reason why I should stop worrying?
There will always be a shiny new tool, no matter which one you choose. Good products can be built in any of them (even Knockout which I loved too). Most of the frontend fatigue is just paradox of choice. For me what works to reduce paradox of choice is knowing that good architecture and clean code is much more important than the selected framework. Most of them have a lot of documentation, examples, so we should focus on creating good products, and again, most of them can be used to created high quality web apps.
Just my intuitive impression: The VueJS community is already so big that I think its reached escape velocity. It's bigger than Knockout ever was. By now, there's enough invested in vue-based apps that if anything were to happen to the core team, multiple parties would come out of the woodwork to keep it going - it's already too valuable to allow it to die.
I have been required to use Vue.js in a current project (a semi complex app with lots of forms). It's the perfect way for clueless js fanboys to write unmaintainable spaghetti code. It's nothing less than a poorly designed view layer with no kind of architecture or tooling. It's naive and harmful (because of the way it is being marketed). It's a hobby project by someone that think they know what they are doing, but are really just mindlessly copying features that sound cool from real projects without understanding the underlying complexities or real world challanges. I've worked on large code bases on many different projects, both front-end and backend, with many different frameworks and architectures (including most of the popular js frameworks). Vue.js is the single most stupid and pointless "application framework" I have ever used.
World's leading Clueless JS Fanboi here: I have literally no idea how you justify anything you just said with facts. If your statements actually had any basis in reality, you should do a write up, because I'm sure this information would be useful.
Every framework enables spaghetti code, why should Vue be any different? Heck, any beginner programmer is bound to make spaghetti code.
I'm not going to go into details why Vue is awesome (see all the other comments for that.), but I don't see you bringing any valid arguments for your statements. Sounds like a new framework has been pushed down your throat, and that hurts. I get it :)
Vue.js is basically just a js object wrapping a DOM node. It's claiming to be the equivalent to a full fledged MVC framework (or similar). But it only supplies the V and completely ignores the C and M. Leaving it up to you to invent your own framework on top of it. The parts that Vue.js do supply are not well thought out (Vuex is a nightmare). The parts that do work and are nice are simply straight out copied from other frameworks like Angular. When you give an average developer Vue.js as the only tool you end up with the same kind of code you get when trying to write a complex SPA with jquery: a Single-Pile-of-shit-App.
I'm curious about where you saw claims of Vue.js being a fully fledged MVC framework. Asking because I've always thought that Vue did a decent job of being forward about exactly what it is. Just reading the first paragraph of the guide (https://vuejs.org/v2/guide/):
"The core library is focused on the view layer only"
It seems to be pretty clear that it's meant to be a simple, easy to deploy, view layer only. I think it accomplishes that purpose pretty well. There are additional libraries (Vuex, VueRouter) which extend this core library into something coming close to a full MVVM framework, but those libraries are all maintained separately and not part of the core.
I'm a senior developer and sometimes I write spaghetti code using React/Redux. I always refactor later but the point is that you can replace instances of "Vue.js" in your comment with the name of _any_ framework and it could be true.
What are your favourite libraries/extensions (for want of a better term) to use with it? I'm on my first VueJS 2 project, and found a number which are abandoned...
I would also encourage _not_ to use anything else beside Vue-Router and Vuex at first. Most Vue components found on Github are just simple wrappers for already existing modules. In my experience, most components look easy at first but end up being a hassle when you try to get it right in the details (looking at pretty much every JS framework Bootstrap wrapper here). Try writing your own directive or component, it's not hard, you'll learn a lot and I think you'll even be faster.
Vuex is really nice. I had always been afraid of Redux, Mobx and other flux-like implementations, but after porting a project from using internalized state in each component to one store in vuex this weekend, it ended up being refreshingly simple.
I'd recommend checking out Vue CLI for structured Vue apps (https://github.com/vuejs/vue-cli). There are plenty of tutorials on using vue-router and vuex with it. Addy Osmani mentioned a progressive web app template at Google IO recently (https://github.com/vuejs-templates/pwa) which gives you things like Service Worker etc
Well, actually the best implementation of Material Design would be callem'all's http://material-ui.com/. Really mature and full-featured.
vuematerial is slightly behind in the no. of components. After some more research I have settled on using http://www.muse-ui.org/#/index. It has full parity with callem'all's component set. In fact, the website is nearly a full clone of that. And the developer is pretty active.
I work on an Open Source alternative, which isn't capped (and has an easy 1 click deploy to Heroku), hopefully this will be helpful for people maxing out connections: https://github.com/amark/gun .
I never used Notational Velocity, but this seems like an awesome UI to use for Notes. As long as you have powerful search you can always find your notes by their content and create new ones when the ones you find aren't relevant.
How many times I've created a new note related to something I wrote about before, but didn't want to search for. Now I'd basically be forced to search for it when I tried to create the new note and I'd assume this would help keep all those thoughts and ideas at least somewhat related to each other.
It really is great, I've been using it for years -- and all my notes are stored as plain-text (markdown) files. Only downside is images really. If you want to try it, check out this more-recently-updated fork. The creator of the fork is apparently working on a replacement that I'm rather looking forward to trying.
nvNotes[1] was great, but the latest version removed Dropbox syncing (because the developer was using an older API that is being deprecated) and now it's... no so useful. Combined with nvALT[2] on the Mac, this used to be a great combo.
Semi-related: I've been using Vue along with Phoenix on the server, and the stack is simply incredible in terms of productivity and ease-of-use. I'm tentatively planning on writing a book that teaches how to use the two together (I call the stack "Vuenix"). Would people here be interested in that?
I've been hearing a lot of good things about Phoenix. I do web application development for a living, so I'm interested in learning more about it.
I decided to take a look at the official getting started guide. Looks pretty good. I like how rigidly everything is organized. Though, there are some things that put me off a bit:
* There are a lot of dependencies just to get a simple hello world app running.
* I need to have a Db installed even though the application doesn't touch a the Db? Does that mean the Phoenix stores its configuration in a Db? I don't like that. I try to keep config in file format.
* Honestly, working with ecto outside of initial model creation looks kind of nasty. I could be looking at this wrong though.
* I've never been a fan of functional languages for one reason: Too many damn symbols in the syntax! It appears that Elixir definitely does a better job having an understandable syntax compared to say, Haskell. That said, the one operator that always gets me is `|>`. I understand what it does, it's just difficult to type and I always felt like a simple `>>` would make sense as well as be easier to type. This is rather nit-picky, but I write a lot of code, so ease of syntax is actually a very important consideration for me.
* There seems to be a lot of lock-in if you want to use the CLI tools. What I mean by this is that the CLI tools, specifically `mix` seem awesome. However, it seems like that in order to use them, you need to use a very specific set of libraries. This isn't necessarily a bad thing, but I wonder if this would effect long-term flexibility.
* Did I mention the dependencies? It seems like every CLI command requires dependencies to be installed. This could be my own misunderstanding or a failing of the guide.
>>I need to have a Db installed even though the application doesn't touch a the Db?
No. You can use an in-memory repo, or a flat file. Phoenix's initial configuration assumes you'll be using Postgres, but that's easy to change/remove.
>>Honestly, working with ecto outside of initial model creation looks kind of nasty. I could be looking at this wrong though.
Ecto is interesting. Coming from Rail's ActiveRecord, it definitely gave me a bit of trouble at first. But then I realized that was because I was thinking of it as an ORM, whereas in reality it's more like a library that maps the data in your database into data structures in your app (I say "data structures" because there are no objects in Elixir, remember). What that means is that it's functionality is not as tightly coupled to your data. Here's a more in-depth explanation (I'm not the author): https://www.amberbit.com/blog/2016/2/24/how-elixirs-ecto-dif...
Over time I've come to appreciate Ecto, because it forces me to think more explicitly about what data I want to fetch/insert and how. It also makes the code easier to reason about.
RE: Dependencies, it's hard for me to say. I can tell you that compared to Ruby and Rails, Elixir and Phoenix are very lightweight. It's true that you need to install some of the underlying language tools such as Mix, but at the end of the day Phoenix follows a more a-la-carte approach compared to Rail's "everything and the kitchen sink" approach.
Phoenix is great because it gives you the same productivity benefits that Rails does, but it doesn't have any of the crazy "magic", which makes it both fast and also easy to understand. When you want to learn about how something works you can pop the hood and read the source code, and it's both well-documented and easy to understand. Elixir is also functional as opposed to object-oriented, which means no leaky abstractions!
I like Vue because it's easy to pick up and it gets out of your way. It's not as complex as React, but still very powerful and extensible. Vue's browser extension is also top-notch.
I like working with them as a stack because they are both very transparent, which makes it easy to reason about when you're passing data back and forth between the server and the client. The only way I can describe it is that it feels very "natural".
Time-wise, it's hard to say. I went through Saša Jurić's Elixir in Action[1] before diving into Phoenix. But that's because I was coming from an object-oriented background (Ruby, some C#) and wanted a bit more exposure to functional programming.
Elixir is a fairly deep language, but you don't need to know it inside out to become productive with Phoenix. Obviously it depends on what type of app you want to develop, but you can probably piece together a simple CRUD app just by reading the official Phoenix guides. Everyone has a different style of learning though so it's hard to say beyond that. Ultimately, just like with Rails, knowing the language itself (i.e. Ruby) will be very helpful once you get beyond the basics.
Specifically, there were a few things that took a while for me to fully wrap my mind around. For example, data is immutable, so loops are written differently. Instead of a traditional for loop to loop over a collection, you would instead use recursion. So if you're like me and are used to reaching for a for loop or a while loop to iterate over collections, you'll need a bit of time to get used to some of Elixir's mechanisms.
Awesome. Thanks for the reply. I'm comfortable with full-stack development when I'm on MEAN but I've definitely been looking to branch out. I think you convinced me to try Phoenix.
The app looks really well put together. I went as far as creating an account until I realized it unusable on mobile--I need to hit control + enter to create a note.
Haven't tried it out yet, but Weex (https://weex.apache.org/) looks really promising. I think this will be table stakes for most frameworks moving forward.
Love seeing examples like this. If anyone is interested in more in-depth Vue examples and back and forth, check out the VueJS subreddit here: https://www.reddit.com/r/vuejs/.
NV is an awesome app, glad to see it now as a webapp too. The only thing I'd ask for is the short key for creating a new note to be cmd + enter for us mac people.
I don't think this comment should be dead - adamcccc's confusion illustrates the interesting naming used for this product and how it can cause confusion. Looks like NV[0] has seen and approved of it, but it still seems like an odd choice.
For firebase one has to include the API keys and other info in the JS itself.
I think that this is just another mongo DB like hack waiting to happen. Becuase a lot of developers might not know how to configure firebase read, write access rules properly. So as far as I understand anybody determined enough should be able to read the JS and read and write(!!) to other people's data.
If you are moving onto an old jquery style codebase (via inheriting/changing job) Vue.js can be used as a straight drop in library via a script tag and you can start unsouping that jquery mess.
It also reminds me a lot of a spiritual successor to KnockoutJS (which was/is my favourite JS clientside tool still).
I'm using it with nuxtjs to achieve server side rendering, the benefits of that being faster pageloads on first arrival and faster pageloads for SEO ranking.
React.js is probably the most similar popular framework because of its one-way data binding. Vue's creator (Evan You) wrote a Comparison with Other Frameworks (http://vuejs.org/v2/guide/comparison.html) that's worth reading. Dan Abramov, co-author of Redux, helped keep the comparison with React grounded.
Vue is a reactive JS framework, similar to React or Angular. It's lighter weight, but comes with less built in. It's a very nice framework to work with, easy to get up and running, but powerful enough to build a full featured web app.
It is probably a question of generation, but young people do not want to use the keyboard and do not value the agility that can be achieved.
Not so long ago, I spent some time adding keyboard shortcuts to an ERP written in Angular, just to realize that only ~ 30% of users (those who had used the old DOS-based ERP) saw value in that requirement.
While I get you on the under-appreciation of keyboard shortcuts, I think in this case there is some overlap as a selling feature with both user types since the actual application itself (vs navigation) is a text note-taking application...
I use the keyboard for everything - but would probably ignore your shortcuts because I already have extensions that let me use the keyboard efficiently in the browser environment.
Not working for me, I'm guessing it's due to this?
FIREBASE WARNING: The Firebase database you are trying to
use has reached its peak connections limit. If you are the
Firebase owner, consider upgrading. (https://notational-
velocity.firebaseio.com)
FF 53.0.2 on macOS, uBlock Origin isn't showing anything as blocked
Quick question - How are you using firebase for search ? I am building a forum app using vuejs and firebase, and I dont have a elegant solution for search.
Btw - the codebase looks neat and very well-maintained !
Hey just wanted to say I really like the UI work. I thought "dang, what CSS framework is this dude using". Check the github and its just all you, so kudos :)
Search is currently client-side only (using string_score https://github.com/joshaven/string_score). Eventually it could move to the server. Thinking about something like Elasticsearch.
Ctrl + Enter not working is strange. I tested on a variety of browsers and OSs. Can you message me at tom@meagher.co?
vuex is pretty amazing ! After seeing flux and redux, I thought well here we go again, another of those complex state management architectures with reducers, flow management and all.
Turns out its just a plain and simple reactive global store ! And the documentation is simply stellar.
Have trolls taken over the comment forums here? This example is hardly anything more than any other TODO example provided by React, Ember, Angular or anything else for that matter. I must be missing something clearly an app such as this couldn't cause such excitement among the HackerNews community?
Hey! I made the thing and am just as surprised as you!
It is simple, but contains more than just your average TODO example (also it's for notes). There are share-able links, auto-save, dark/light modes, and almost everything can be done with the keyboard.
Chris, I see what you're saying but I think that take is a bit cynical.
To me it always feels legit when someone creates a side project as an exploration and wants to share it here no matter how sophisticated or innovative it turns out to be.
I like to think that we all share at least some bond where we can be open and honest with our creativity, and not really care about making money or other metrics that we have to care about in real life.
I called you cynical, maybe my thought is too idealistic, I understand that. Just a thought
Is this meant to be a cool tech demo, or a real product? I noticed the author mentioned adding new features and a premium version in another comment. This leads me to believe it's intended to be a real product.
With that in mind, I have a few questions:
1. If this is inspired by Notational Velocity, a very popular and real product, why is this also named Notational? I understand if you're doing a cool tech demo that it's not a big deal, but if you plan to charge money for this you probably shouldn't copy their name.
2. Was "Notational Velocity but real-time" your hypothesis of what would make this something people want to use/buy? If so, what about all the other very standard features that note-taking and thought storage apps have? Do you plan to hit baseline with those?
3. How do you compete with the larger companies who offer these apps for free to their users? Google Keep, Apple Notes, etc.
4. Is the real-time feature the only way you plan to make this different/better than the others?
I'm not trying to be a downer here, but I feel like I see "X app but real-time" posted to HN on a weekly basis now, like it being real-time is going to be the differentiator that makes it wildly popular. Those products then go on to ignore half the reasons why the others have users. Even if they reach feature parity, their one differentiator is "well, it's real-time". I'm not sure that's enough.
If this is just meant to be a cool demo of Vue.js (with an awesome homepage), well done, ignore my comments =)