Ask coding questions

← Back to all posts
Team to develop a language learning web site
xxpertHacker (865)

I'm thinking about creating one of those websites that you use to learn a coding (programming/scripting/markup) language, think FCC, KhanAcademy, TutorialsPoint, or any site that teaches a language, gives examples, and is interactive.

If enough people want to join me to create it, I'll make a team, otherwise, I'll just go solo.

I'm only looking for developers that have the 3 following things:

  • time
    If you don't have time, you can't contribute; that's just a fact.
  • experience
    If you aren't experienced, I'm sorry, I'm trying to make something great here. Go learn to code more, go make another application, but you're not ready to join us.
  • interest
    If you aren't interested, don't join, do something that you would rather do. If you are interested in what you are doing, I believe that you'll put in your best work.

If you feel that you don't fall under all three of those categories, then it's okay, but, at least for the time being, you wouldn't be a good fit to help me out.

Now, I'm making one of those sites like I listed above, but here's the catch: I'm not doing it for any specific language.

Instead, I'm planning on making it more of a template, that anyone, even the most inexperienced person on Repl, could easily fork and fill in.

What roles I'll need someone to fill:

  • brainstormer: someone who can give ideas
  • security: someone who can spot when we are doing something absurdly unsafe/insecure with data, and can suggest an alternative
  • ... TBD

The tech stack:

  • Backend
    • C++
  • Frontend
    • TBD - markup language; default to XHTML
    • TBD - style language; default to SCSS
    • TBD - scripting language; default to JS

I'm really leaning towards a template-able markup language like Pug, but Pug is specifically for Node.js so... :/
I'm also leaning towards SCSS and Dart, since I will be working on both, the front-end and the backend, but if no one on the front-end has experience with any language other than vanilla CSS and JS, then we're screwed.

But more or less, I'll let the front-end choose, as long as they aren't being dumb.

(the biggest problem might be getting the preprocessors working on Repl.it)

I'll be using a C++ networking library for the backend, but since few know C++, this may effectively exclude others from working on the backend. Unfortunate, but I'm willing to make the decision.

Now, I'm going to aim for a company quality site, so this will have to be well structured, or it's going to fall apart into spaghetti very fast.

Answered by coderbot100 (93) [earned 5 cycles]
View Answer
Comments
hotnewtop
coderbot100 (93)

Make sure to learn HTML

Make sure you actually know what HTML is!

<html>

Please mark as correct answer!

xxpertHacker (865)

@coderbot100 There we go, with coderbot we have a full team everyone, officially no longer accepting newcomers!

dakshg (172)

@xxpertHacker hey if youre accepting new ppl, i can help. ik c++ pretty well and have read up on the cpp-httplib api.

dakshg (172)

wait i just looked at your backend code and the "rust++" code is kinda confusing ngl, but i get the gist of it

xxpertHacker (865)

@dakshg Lmao, the "Rust++" or whatever name we've given it since, is the only thing that I'd expect would stop the average C++ programmer from joining us.

So, it's just C++... with... a hint of Rust-styled code.

It started out since, I almost exclusively use immutable variables and parameters, so I just make the type aliases themselves aliases to immutable types, and I like knowing how many bits wide my types are (various reasons: can be used for optimization, can help reason about code, can prevent UB...), so I make the i32, u16, u64, etc, or the generic Rust primitive types... then I just when all-out.

Recently, we've more or less died down and haven't been working on it too often, but occasionally someone will hop on and fix something, add a new file, add a new page, setup user authentication, etc.

If you're still interested, we can invite you.

dakshg (172)

@xxpertHacker cool, u can invite me and ill see what i can learn and do

dakshg (172)

btw if u want optimized stuff for fixed-width types like std::int32_t, just use stuff like std::int_fast32_t

xxpertHacker (865)

@dakshg I avoid 'em, std::int_fast32_t has a different purpose than std::int32_t, since one will actually have 32-bits, where the former isn't guranteed to have that.

It makes a bigger difference when attempting to load multiple bytes at once, and reading out-of-bounds, or just making arrays larger than they need to be

Kookiez (386)

@firefish, you might be interested in CodePoint. We want another fish person to work on the backend (which is a messy-ish combination of C++ and Rust, but it's supposed to be C++. Want to help?

Also, CodePoint is a programming language learning site, theme is mountain (we'll tell you why if you join). We're using SCSS and XHTML on the frontend.

Interested? (Or not)

firefish (915)

@Kookiez Interested? Yes, definitely. I'll have to do the frontend (and I can), but I have nil experience with C++ web libraries :/
I'd still like to join.

Kookiez (386)

@firefish Hmm, check out the backend first... do you get the gist of it? Because I don't, it's a foreign language to me I'll pung @xxpertHacker

xxpertHacker (865)

@firefish Any update? Have you left Repl since?

Still interested? If you've got nothing better to do, and don't have any ideas, we're open! (< why started the project: I was bored)

firefish (915)

@xxpertHacker oh i completely forgot this existed

xxpertHacker (865)

@firefish So, I'd hate to annoy you, but I'll just invite you since you didn't specify whether you still wanted to or not.

If you don't want to, just remove yourself from the Repl.

firefish (915)

@xxpertHacker Well i'm currently working on something else :/

xxpertHacker (865)

@firefish Fine by me; you're not forced to work w/ us, especially not at any specific time.

Everyone involved is always working on something else asynchronously or concurrently.
I've helped 'em out every once in a while with side projects.

And, we're usually on and off working on this project, not always at the same times.


If you can't help today, that's okay.
If you can't help this week, that's okay.
If you can't help this month... okay, I might you kick for inactivity if I think you've left Repl.

xxpertHacker (865)

@Kookiez I've worked with you before (kookiezapp), and you seem like the type of person that we need for a project like this.

If you're interested (and fit the criteria up there ^ in the post), we have room.

Kookiez (386)

@xxpertHacker hmm... well, i'm not extremely experienced, but i know a decent amount of python (which won't be much help here i see) but i could help with frontend and brainstorming. I think I've heard of SCSS some time ago, but not sure. I do fit 2 criteria - I have time and am interested. Don't think i can contribute a lot though...

xxpertHacker (865)

@Kookiez Actually, I'm using Sass, not scss, forgot to update the post.

I use Sass as CSS with nesting, not much else.

Don't think i can contribute a lot though...

What makes you say this?
Winters & I have the backend handled so far, we're working on the frontend, and I'm sure you could help a lot with ideas, structure, and the site in general.

Kookiez (386)

@xxpertHacker what i mean by not contributing a lot is that by actually writing code, i can't do much. ideas, structure, and suggestions... i may be ok at that.

xxpertHacker (865)

@Kookiez So, do you want an invite to join us?

firefish (915)

@xxpertHacker SASS? no use SCSS. SASS has no braces, no semicolons, and is fussy about indents. USE SCSS

xxpertHacker (865)

@firefish So, I was going to use Scss at the start, but our main style person, Winters (he took control by force), wants to keep the code as close as possible to CSS :/

I also heard that Scss is the older syntax, and that it's not preferred nowadays, not sure why that is, nor if it's true.

I'm not sure if I encounted the Scss compiler, I can probably set it up if I find it.

Oh yeah, and we all seem to use different indents; some of us use spacing indents, I use tab indents, it'll be as bad as Python if we do that :)

If you're interested in joining anyway, I'd highly recommend looking at the source to make sure you're confortable with what you'll end up working with. It's written in what I'd call Rust++. Winters hates the backend, EpicGamer007 and Kookiez doesn't know Rust++, so I'm the only backend dev... we're looking for another.

Of course, if frontend is your preference, that's okay too. You could do both if you want to, or you could deny us entirely.

vve (35)

Stop right there — I’m in.

vve (35)

Like https://learncpp.com but for multiple languages?

xxpertHacker (865)

@vve
a) More like https://programiz.com, or sites that already have multiple languages.

b) how did you find this old post?

c) you might want to look at the repl first before jumping in; it's already pretty disorganized, but we have a start

vve (35)

@vve yeah pretty disorganized

vve (35)

@vve Found it by just scrolling and scrolling in the ask board.

vve (35)

@vve I know programiz.com

xxpertHacker (865)

@vve So, you still sure that you want to join?

vve (35)

@xxpertHacker no I don’t wanna jion

vve (35)

@vve but you can run the repl

xxpertHacker (865)

@vve What do you mean?

but you can run the repl

xxpertHacker (865)

@DynamicSquid

Posting here since you deleted your post >:( lol, you probably solved it already, but here's what I said anyway:

No, you're not looking for attributes at all, you're looking for something else.

Some compilers offer pragmas that ignore the next warning of a specific type or a section of code.

Either #pragma or _Pragma.

I have only used this once, ever, do you want to know why?
Because I wrote some stupid code, in reality, you should never need this, here here's an example for the -Wkeyword-macro warning:

_Pragma("GCC diagnostic ignored \"-Wkeyword-macro\"");

Now, I am more willing to bet that you had done something like defined that macro, but didn't actually use it in place of assert.

I'm pretty sure marking assert with [[noreturn]] would be better, or something else.

Could you link (or share) the Repl so that I could get a better look at the context?

DynamicSquid (4629)

@xxpertHacker Ah okay. But yeah, I just put a return statement after the assert macro. It doesn't look nice, but it's what I can think off. It's actually part of a huge project and it's on VS, but here's the complete function:

// this was my previous solution, but g++ is stupid and doesn't recognize the return statement
#define assert_rtn(con, val) assert(con); return val

int GetOperatorPrecedence(const ValueType& type, const std::string& value)
{
	static const std::vector<std::vector<std::string> > operators{
		{ "[]", "." },
		{ "!" },
		{ "*", "/", "%" },
		{ "+", "-" },
		{ ">", "<", ">=", "<=" },
		{ "==", "!=" },
		{ "||", "&&" }
	};

	for (std::size_t a = 0; a < operators.size(); ++a)
	{
		for (const std::string& op : operators[a])
		{
			if (value == op)
				return a;
		}
	}

        // assert_rtn(false && "operator missing", 0);

	assert(false && "operator missing");
	return 0;
}

Sorry for the huge indents, I use tabs :)

xxpertHacker (865)

@DynamicSquid

Sorry for the huge indents, I use tabs

Ha, don't worry, I do too. The Repl attached to this post that we're talking on uses them too.

return 0;

Change that to a throw,

throw std::runtime_error("unreachable statement reached!");

or a something like __builtin_trap(), lmao.

Or an abort, you get it.

std::abort("operator missing");

Some that shows that it's not supposed to return here.

I've seen that assert syntax more than once, where does it come from?

Do you have access to its source?

DynamicSquid (4629)

@xxpertHacker Huh weird. When I compiled this in g++ on Windows, g++ threw the warning, but on Linux g++ doesn't seem to care. Oh well, I guess I'll try to use your idea of the runtime error. Oh, and assert comes from cassert.

xxpertHacker (865)

@EpicGamer007
@19wintersp
You were both confused about why I had invited you both to the fork, as winter had pointed out, I claimed that the Repl was broken.

For me at least, it had crashed and was stuck in a boot loop, I waited ~4 hours before creating a fork, but eventually, that one broke too.

Now, they both seem perfectly fine, so... I guess I'll be deleting that fork?

xxpertHacker (865)

@programmeruser I'll check it out asap. I was not sure how I was going to handle templating, what to use for it, and hadn't looked anything up yet.

xxpertHacker (865)

Some people I've met who might want to join:

@programmeruser
I've seen you involved in backend development a few times around here, you seem to know a thing about databases, encryption, and web dev.

@TheBoys619
You know what you're doing whether your on the backend or frontend, and you're good at what you do.

@19wintersp
You could've told me that you're a paid professional and expert in your field and I probably would've believed it at some point, lol.

And to top it off, all three of you know C++.

If any of you don't want to join me, for whatever reasons, it's okay.

Otherwise, how about we all work together on a project?

programmeruser (571)

@xxpertHacker sure, I might think about it.

xxpertHacker (865)

@programmeruser It's all up to you, if you decide that you don't want to join, just give me a ping.

Theboys619 (63)

It would be awesome to help, but I dont know anything about Dart. And only know tiny things in SCSS. @xxpertHacker

xxpertHacker (865)

@Theboys619 Note that I am really just going to ask the team what they want to use for the front-end.

But I am going to help with the front-end too, so I'm not going to let you guys choose something that is obviously dumb.

If the entire front-end only knows plain JS and CSS, then we'll probably use just that.

I prefer SCSS over CSS because CSS is valid SCSS, but SCSS offers a few extra features. (I only know a tiny bit of SCSS too)

Literally, I would use SCSS purely because it allows nesting, which just saves a bit of typing.

On the other hand, Dart is a whole different language from JS, completely different semantics, stdlib, etc.

So... if you don't know it, you might not adjust quickly.


But in the end, it's up to you, do you still want to join us?

xxpertHacker (865)

@Theboys619 Cool, I'll invite you.

But umm... don't hop on the Repl until at least tomorrow, because it seems that the repl is currently broken. If it isn't fixed by then, I'll fork, invite everyone again, and delete the old one here. :)

Theboys619 (63)

That's fine got a lot of school work to catch up on today anyway. @xxpertHacker

xxpertHacker (865)

@Theboys619 Anything happen? I think you had the tab open for a few days in the background.

If anything came up, and you can't or don't want to join us, just tell me.

xxpertHacker (865)

@programmeruser Any decision yet? If you can't join us yet, you don't want to, or you're just interested in doing your own thing, just say so.

xxpertHacker (865)

@programmeruser Got it, thanks for the response at least

Coder100 (17122)

why are you even doing it in c++ is there some super obscure specific feature you must customize?

xxpertHacker (865)

@Coder100 No, I'm just using C++ because I'm more used to it than like... literally any other language I've ever used with the sole exception being English.

Also, I rarely do any networking with statically typed languages, so it was either C++ or Rust, but I'm still more experienced with C++.

xxpertHacker (865)

@Coder100 I like when an open-source C++ server library has a Repl.

https://github.com/yhirose/cpp-httplib

https://repl.it/@yhirose/cpp-httplib-server

Like, how do I say "no" to that?

EpicGamer007 (1642)

i can help brainstorm lol. and i dont have any other projects i am working on so i can dedicate time to this. (Winter break also starts soon so pog)

realTronsi (913)

C++ backend isn't practical as you'll have to rewrite everything from scratch, and it won't be as optimized or as secure.

xxpertHacker (865)

@realTronsi

I'll be using a C++ networking library for the backend

:/
https://github.com/oatpp/oatpp

Your point has been invalidated unless proven otherwise.

Everything I use will be more optimized and secure than the average Node.js/Python crap here.

Wanna join us?

realTronsi (913)

@xxpertHacker oh I thought you were writing your own backend from scratch

xxpertHacker (865)

@realTronsi I don't have time for that; some backend expert already optimized a library and provided a portable, quality API. I'm not sure how I'll deal with a DB though.

Wanna join us?

realTronsi (913)

I was writing a whole essay of how bad your idea is and making jokes targeted towards the very capable repl community but got lazy of typing so

anyways

  • this idea has been taken
  • you need a unique idea (for example if they get it wrong their IP address gets logged)

  • target an audience (for example target toddlers and scam their parent's credit cards)

xxpertHacker (865)

@realTronsi

this idea has been taken

I listed examples of sites that already do this, so ofc.

you need a unique idea (for example if they get it wrong their IP address gets logged)

wtf, imagine Khan Academy logging a kid's IP for getting something wrong.

target an audience (for example target toddlers and scam their parent's credit cards)

I'm too lazy to rob someone.

realTronsi (913)

@xxpertHacker

how about you smash ads all over the place, then when they solve problems they get Vbucks I meant P-bucks and they can exchange P-bucks for real money. So complete 1 course and get 3 stars = $5 but while they do the course the 5 billion ads will get you $69 of revenue so profit 📈

xxpertHacker (865)

@realTronsi I need a way to receive ad revenue, which I do not have, therefore I would gain $0.
I'm not even sure I could distribute the money without being able to store it.

Lastly, ad blockers are quite common, and some browsers have built-in ad blockers, meaning I wouldn't be able to get anything out of many clients.

bottlesandcaps (50)

im pretty good at coding and have some good ideas
@xxpertHacker

xxpertHacker (865)

@bottlesandcaps I'm actually 100% sure you won't have the experience that I'm looking for, but okay, if enough want to, I'll make the team and invite everyone.

xxpertHacker (865)

@bottlesandcaps I invited you ~4 days ago, are you still going to join us?

HARISHKALARI (8)

@xxpertHacker Still need help? I can help. Know Python and more...

xxpertHacker (865)

@HARISHKALARI We recently died down on development, but currently none of it uses Python...

HARISHKALARI (8)

@xxpertHacker What do you mean by "none if it uses python" i do know html i thoughht u wanted different types of code

xxpertHacker (865)

@HARISHKALARI Well, none of it uses HTML either ¯\_(ツ)_

We have a C++ backend, that serves templates compiled via C++, which become XHTML documents.

We're also using the Sass preprocessor to emit CSS.

I'll see what the team thinks about inviting you, but bewarned, dev has died down recently, I'll probably be off of Repl for some time.

xxpertHacker (865)

@HARISHKALARI Also, I meant "none of it uses...," not "if," fixed

Kookiez (386)

@HARISHKALARI If you still want to join, pls send links of your repls so we can know your experience level :)

HARISHKALARI (8)

@Kookiez Yeah dont got good repl projects bc idk what "Good" projects are

xxpertHacker (865)

@HARISHKALARI They don't need to be "good" or "bad," but we need a measure of your experience :)

EpicGamer007 (1642)

@HARISHKALARI by good projects, can you send some links to projects which you have made and/or you are proud of.

EpicGamer007 (1642)

@HARISHKALARI Also, all the backend is in c++ and all the frontend is in xml and sass. We arealso using firestore for our database so experience in that would be really helpful

HARISHKALARI (8)

@EpicGamer007 could i help make a python course

xxpertHacker (865)

@HARISHKALARI If that's all you wanted to do, you should've said so.

When it's done, anyone will be able to make whatever, refer to /guides.

You won't have to work on the actual code/site in order to contribute.

xxpertHacker (865)

@HARISHKALARI Do you still want to join us, or is that all?

HARISHKALARI (8)

@xxpertHacker i dont really know cpp and xml and sass

xxpertHacker (865)

@HARISHKALARI Well, we have the server under control, we're more focused on the frontend.

As for the frontend, just check the source: view-source:https://codepoint.xxperthacker.repl.co/\
or the Repl, https://repl.it/@xxpertHacker/CodePoint#frontend/views/home.xml

If you were interested in actually learning it, it's easier than HTML, I made a post about it:
https://repl.it/talk/share/XHTML-Introduction/82997