Evernote

Hey all, first time here!

I'm trying to work out how evernote roughly works. Could anyone shed some light on whether I'm on the right track here.

From what I understand they have a central database (not sure what this is coded in), a website applet (Java?) an app for android and iOS, as well as desktop program's for PC (written in c++?) and one for Mac (objective c?). These clients constantly sync with the head database so that the most recent version of any file is displayed on all clients that are open at any one time.

With each application that the user interacts with (be it mobile or desktop) would it be accurate in saying it doesn't really matter what code they're written in as long as they can read the central database? In addition to this - what would that central database be written in?

Any thoughts would be great.
would it be accurate in saying it doesn't really matter what code they're written in as long as they can read the central database?


Yup. How else would the Internet work? There's not some "Internet programming language" out there. Just protocols which you have to conform to. You can use whatever language you want, so long as you conform to the standards. Evernote has a standard that they use for communication. Their various apps just all conform to that standard.

In addition to this - what would that central database be written in?

The database? Most likely C. Though I've heard of some written in Java. This is for relational databases, no idea on non-relational. But application developers don't "write" the database. They just use a DBMS, and create their database.
There's not some "Internet programming language" out there. Just protocols which you have to conform to.

well... there are web-based programming languages that are meant for writing web applications, like php, javascript, css, and dart. protocols only come into play when you need to send data from one machine to another.

some good examples of databases are sql, mysql, squirrel, and nosql
protocols only come into play when you need to send data from one machine to another.


What do you think the internet is ;p.
the internet is a network. the browser is what is managing the protocols though. you can write a website without knowing anything about protocols
the internet is a network.

Yes and to communicate over a network you need protocols. So the internet is really just a bunch of computers connected and protocols control how to communicate with them computers. So really there is no internet programming language there is just protocols like Resident said.

Sure there is languages that are built for the internet like Javascript but it still doesn't matter which language you use if you can conform to the protocols in place you can use whatever language you want.

the browser is what is managing the protocols though. you can write a website without knowing anything about protocols

That has nothing at all to do with the subject at hand though... We are talking about how a application communicates "over the internet" to sync multiple devices on a Evernote account with each other.
i said there are web-based meant for the internet that have nothing to do with protocols... and i know, i was just adressing something rb since he answered ops question
Thanks for the replies!

So if companies use DBMS (database management systems?) I'm assuming there'd be a few program's out there that can do this. Any in particular you'd suggest?

Also, I understand MySQL is another language like C is a language but how do they'd differ in terms of their database capabilities?

I'm looking to write something similar (hence all the questions) and have the intention of using c++ instead of C.
MySQL is a DBMS, not a language. SQL is a language.

I'm really sorry, but it appears your knowledge in the given areas is just way lacking right now.

EDIT:

Little Bobby Tales wrote:
some good examples of databases are sql, mysql, squirrel, and nosql

SQL is a language. MySQL is a DBMS. Squirrel is a client. NoSQL is a type of database (non-relational). None of these are databases. They are just simply related to databases.

Little Bobby Tales wrote:
protocols only come into play when you need to send data from one machine to another.

Which is exactly what the Internet is, and is exactly what OP is wanting to do. Even creating a web server on your local machine requires you to conform to the standards of the Internet. You just don't see it as much.

Little Bobby Tales wrote:
the browser is what is managing the protocols though

The browser's primary job is to display web pages. At its core, a browser deals with one protocol, HTTP/S. The browser does not "manage the protocols", whatever that means. And OP made zero mention of browers anyway. The Web != the Internet.

Little Bobby Tales wrote:
i said there are web-based [languages] meant for the internet that have nothing to do with protocols

They have everything to do with network protocols. How else could they be meant for the Internet?
Last edited on
MySQL is a DBMS, not a language. SQL is a language.

I'm really sorry, but it appears your knowledge in the given areas is just way lacking right now.

EDIT:

Little Bobby Tales wrote:
some good examples of databases are sql, mysql, squirrel, and nosql

SQL is a language. MySQL is a DBMS. Squirrel is a client. NoSQL is a type of database (non-relational). None of these are databases. They are just simply related to databases.

i wrote that really badly. sorry i was rushing when i wrote that and didnt think that part out quite clearly

Which is exactly what the Internet is, and is exactly what OP is wanting to do. Even creating a web server on your local machine requires you to conform to the standards of the Internet. You just don't see it as much.

i never said that. i was talking specifically about the role of web-based languages

The browser's primary job is to display web pages. At its core, a browser deals with one protocol, HTTP/S. The browser does not "manage the protocols",

a) http/s is not one protocol. that is two different ones.
b) it deals with ftp as well if you ask it to.
c) i apologize once again. manage is the wrong word. a more appropriate word is use.

They have everything to do with network protocols. How else could they be meant for the Internet?
they are meant for displaying web pages in most cases, however javascript is web-based, and you can embed it in c++ apps that have nothing to do with the internet.

having said all that, i will bow out of this thread, because i wasnt explaining myself well and right or wrong its derailing the thread and op might have more questions
I actually meant to write SQL, not MySQL.

For a project as advanced as Evernote would they have used MySQL?

A few people have advised me against using SQL and C++ together - what are people's thoughts?
A few people have advised me against using SQL and C++ together

AFAIK, all MySQL provides is a C interface. People have written bindings in many languages though. Something like Python would be much easier.

For a project as advanced as Evernote would they have used MySQL?

Nothing wrong with MySQL. Tons of people use it. It is a little dated feature-wise, but it performs great. Your main relational database options are:
MySQL
PostgreSQL
SQL Server
Oracle
DB2

First two are open source, though they all offer "free" versions. Depends on your needs.
AFAIK, all MySQL provides is a C interface. People have written bindings in many languages though. Something like Python would be much easier.
i havent used a database with c/c++ before, but i know other people dont recommend it is something to do with types for fields
Topic archived. No new replies allowed.