
Build your own X: project-based programming tutorials - dhanush
https://github.com/danistefanovic/build-your-own-x
======
matttb
Similar for anyone interested:

[https://github.com/tuvtran/project-based-
learning](https://github.com/tuvtran/project-based-learning)

[https://github.com/AlgoryL/Projects-from-
Scratch](https://github.com/AlgoryL/Projects-from-Scratch)

[https://github.com/rby90/Project-Based-Tutorials-
in-C](https://github.com/rby90/Project-Based-Tutorials-in-C)

~~~
DonHopkins
I was hoping that second one was about Scratch, the visual blocks programming
language for kids, similar to Logo, based on a Smalltalk development
environment (which is a lot better than X!)

If you're interested in visual programming with a powerful Scheme-like
language with first class functions, closures, special forms, macros, and even
continuations so you can define your own control structures, check out Snap!
(The exclamation mark is part of the name, so it's easy to get excited about
Snap!)

It's a descendent of Scratch but more powerful, hand-written in JavaScript
instead of Smalltalk, and it integrates easily with JS code. (There's a user
defined JavaScript function block that you can use to integrate with the Snap
VM and the browser!)

Snap was written by Jens Mönig and Brian Harvey, who know what they're doing!
;)

[https://snap.berkeley.edu](https://snap.berkeley.edu)

Y Combinator:
[https://i.imgur.com/cOq8tvR.png](https://i.imgur.com/cOq8tvR.png)

A* Pathfinding Demo:
[https://snap.berkeley.edu/snapsource/snap.html#present:Usern...](https://snap.berkeley.edu/snapsource/snap.html#present:Username=jens&ProjectName=PathFinder)
(press the diagonal arrow button at the top to see the block code in the
development environment!)

Snap! is a visual programming language inspired by Scratch. Run Snap! in your
browser at [http://snap.berkeley.edu/run](http://snap.berkeley.edu/run) The
IIIA1 in the title means that this is the first tutorial corresponding to
Chapter III, Section A of the Reference Manual at
[http://snap.berkeley.edu/SnapManual.pdf](http://snap.berkeley.edu/SnapManual.pdf)

Snap! Tutorial IIIA1: Make a block
[https://www.youtube.com/watch?v=Bbl2fh3igQ4](https://www.youtube.com/watch?v=Bbl2fh3igQ4)

Snap! Tutorial IIIA2: Custom Blocks with Inputs:
[https://www.youtube.com/watch?v=hZC2tDVYWBo](https://www.youtube.com/watch?v=hZC2tDVYWBo)

The Basics of Snap!
[https://www.youtube.com/watch?v=hAxqwwg4uhk](https://www.youtube.com/watch?v=hAxqwwg4uhk)

Prototypical Inheritance in Snap! (no audio)
[https://www.youtube.com/watch?v=lvlWvHgfrlw](https://www.youtube.com/watch?v=lvlWvHgfrlw)

Editing Formulas in Snap! (no audio)
[https://www.youtube.com/watch?v=ahHAl3p3gEU](https://www.youtube.com/watch?v=ahHAl3p3gEU)

------
usmannk
Went into this thinking it was about the X Window System[1]. Pleasantly
surprised! Lots of cool stuff here.

[1]
[https://en.wikipedia.org/wiki/X_Window_System](https://en.wikipedia.org/wiki/X_Window_System)

~~~
DonHopkins
I agree, it would have been such an unpleasant surprise to see another
implementation of X-Windows! ;)

[https://medium.com/@donhopkins/the-x-windows-
disaster-128d39...](https://medium.com/@donhopkins/the-x-windows-
disaster-128d398ebd47)

~~~
ronsor
Actually a less unwieldy implementation of X11 would be nice. Preferably in Go
or Rust.

~~~
earenndil
Why go _OR_ rust? Those are completely different languages with completely
different goals and almost nothing in common.

------
oblio
I am truly disappointed that "Build your own X" has a list of things which
does not include "Build your own X†" :p

† X Window System.

------
hugocbp
This is great! I always had this idea of trying to "build my own" to learn
stuff ever since I followed along a book called "Rebuilding Rails" and so much
stuff "clicked" for me.

I've already starred the repo and when I have time I'll search my Evernote
because I know there a few notes there from projects that would fit this
collection.

------
nyxtom
A combination of this and some other tutorials and you can have a “build your
own OS”. Some coursera classes I took a while back delved into it but things
like a usb controller or getting regular input were a bit of a limiting
factor. (I.e. build a keyboard from scratch or support USB, build your own
display... etc)

------
Jedd
An aside for those that appreciate being accurate / particular, but didn't
happen to know -- there are only two s's in 'X Window System'.

To shorten it, just call it X. Eschew 'X Windows' \-- there's no such thing.

------
gravypod
Something that I've been trying to learn how to do, but haven't found any
information on and that seems missing from this tutorial, is how to write a 3D
game in Vulkan. There are many entries in here about using OpenGL but nothing
in here, it seems, about Vulkan. This seems like a common pattern online. Does
anyone have any recommendations for a tutorial that could also be contributed
to the master list?

~~~
mepian
This tutorial seems to be what you're looking for:
[https://www.fasterthan.life/blog/2017/7/11/i-am-graphics-
and...](https://www.fasterthan.life/blog/2017/7/11/i-am-graphics-and-so-can-
you-part-1)

~~~
gravypod
Amazing tutorial! I'll be reading this over many times. Thanks!

------
antoaravinth
I love this idea. I always, take a famous open source project and try to re-
create or go through the source of it. Its very tough, but when you do so the
learning is very immense. Thanks for the link.

~~~
broodbucket
Late comment but a good way to do this when you're digging through the source
and look at the early commits to see where it started. I remember going
through Linux 0.0.1 to boil down the essentials of the kernel for example.

------
alexkavon
Wow this is great for educational purposes.

------
rs86
Wonderful link

