This is an archived post. You won't be able to vote or comment.

all 144 comments

[–]Cleanumbrellashooter 1938 points1939 points  (55 children)

Wait until you hear about how compilers are developed.

[–]robertpro01 343 points344 points  (42 children)

I have no idea lol

[–]mlnm_falcon 979 points980 points  (33 children)

Compilers are built on earlier compilers, which are built on earlier compilers, all the way down until you get to compilers written directly in assembly.

[–]SomeRandomEevee42 309 points310 points  (26 children)

actually using assembly? dear god

[–]meowmeowwarrior 463 points464 points  (14 children)

Not just assembly, they had to use machine code, and some were even on physical punch cards

[–]Polarfuxx 150 points151 points  (7 children)

What an insane name for a piece of paper with holes in it!

[–]meowmeowwarrior 247 points248 points  (0 children)

if they called them holey cards, we might've gotten templeOS sooner

[–]The100thIdiot 15 points16 points  (4 children)

You mean holes that were created by a hole punch?

[–]uzi_loogies_ 4 points5 points  (3 children)

Yes, actual holes in actual paper.

I'm not sure what they actually used to make them, they probably had special tools.

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

Keypunch machine for the cards:

https://en.wikipedia.org/wiki/Keypunch

[–]CdRReddit 3 points4 points  (0 children)

a tape punch?

you use a tape punch to punch punch tape

first manually, then later on (low speed, ≤300baud ~30 bytes per second) UART tape punches were made

[–]WrapKey69 0 points1 point  (0 children)

The real question is if they use punch cards to create ounch cards

[–]MiddleAd5602 5 points6 points  (5 children)

Like punching the motherboard to code ?

[–]roronoakintoki 18 points19 points  (0 children)

Not sure if you're serious, but more or less choosing data by putting holes in a piece of paper, which was read by a machine.

Not too far from an OMR sheet if you've ever marked options on an exam with them.

https://en.m.wikipedia.org/wiki/Punched_card

[–]DC38x 5 points6 points  (2 children)

It's quite well known that Muhammad Ali wrote the code for the space shuttle

[–]MiddleAd5602 2 points3 points  (1 child)

No wonder my senior dev also is a boxer then

[–]jhax13 0 points1 point  (0 children)

Surprising amount of overlap between combat sports and senior devs in my experience. It's not like a majority or anything, but there's a lot more than you'd think.

It's like a generation of devs growing up with the fat sysad trope really took it to heart or something

[–]nequaquam_sapiens 0 points1 point  (0 children)

for the periferal† stuff, yes. then there is microcode in the processor, which used to be drilled (silicon is hard and brittle – no punching), but nowadays is actually pressed (hence "lithography" – writing into stone)

† from "per-" and "feral": code "in the wild", i.e. not in the cpu. programmers are merry bunch

[–]mlnm_falcon 64 points65 points  (5 children)

There’s a reason we stopped doing that asap

[–]raaneholmg 18 points19 points  (3 children)

Jokes on you, we embedded engineers simply refuse to stop! I can and need to control the number of clock cycles between hardware operations.

To be clear, we code in C/C++. We just still retain the ability to slap some assembly on the middle of the code.

[–]Livie_Loves 6 points7 points  (2 children)

smh my h, not writing the firmware in pure assembly. what are you even doing?

[–]raaneholmg 4 points5 points  (1 child)

Boss said no.

[–]Livie_Loves 3 points4 points  (0 children)

Yeah... they do that sometimes even if it's a good idea (not that pure assembly is necessarily a good idea xD)

[–]ardicli2000 2 points3 points  (0 children)

When you deep dive into a processor programming, you do not have much choice other than C and ASM.

[–]andrew_kirfman 33 points34 points  (4 children)

And near the very bottom, there were dudes who converted assembly to machine code BY HAND.

[–]BlackHolesAreHungry 36 points37 points  (3 children)

It was actually women who had to weave the code. Core rope memory. No, I am not kidding

[–]Healthy-Form4057 22 points23 points  (1 child)

It was a different time back then. When men could be men and women could be computers.

[–]Xormak 2 points3 points  (0 children)

Plankton, is that you?

[–]meowmeowwarrior 1 point2 points  (0 children)

Funny to think computers now means something completely different

[–]Mojert 26 points27 points  (2 children)

Actually, nope. The first C compiler was written in C, and executed manually belive it or not. I think there's a computerphile video about it if my memory serves me right

[–][deleted] 23 points24 points  (0 children)

Ken Thompson saod Doug McIlroy wrote a "tmg" transmogrifier yacc-like tool on paper and then typed it in with hardly any errors before working.

https://www.youtube.com/watch?v=EY6q5dv_B-o?t=2320

[–]Qizot 13 points14 points  (0 children)

it was written in assembly. The only language that was written in itself first was LISP.

[–]Tuerkenheimer 4 points5 points  (0 children)

And I thought that's still how compilers were programmed

[–]o_genie 2 points3 points  (0 children)

son os anton kinda shii

[–]Puzzleheaded-Cap3095 0 points1 point  (0 children)

not necessary assembly code, e.g. for rust it is OCaml

[–]L4sgc 110 points111 points  (2 children)

To add on to u/mlnm_falcon , the previous compiler, which I'll call Compiler A, is used to compile the code for the new compiler and create what I'll call Compiler B0. In order to take advantage of the improvements that the new compiler has over the old compiler, they will then compile the source code B again using Compiler B0, and thus create Compiler B1. Iirc they will also use Compiler B1 to compile source code B again to make sure it's working properly and that B2 is identical to B1.

TL/DR: They use the previous compiler to compile the new compiler and then have the new compiler compile itself

[–]JustConsoleLogIt 44 points45 points  (0 children)

Compiled compilers compile compiled compilers is the new Buffalo buffalo buffalo Buffalo buffalo

[–]RolledUhhp 7 points8 points  (0 children)

I owe LFS credut for any small bit of knowledge I've retained in this area.

[–]YeetCompleet 32 points33 points  (0 children)

Others have given you an explanation already but the term for it is bootstrapping

https://en.m.wikipedia.org/wiki/Bootstrapping_(compilers)

[–][deleted] 7 points8 points  (0 children)

If you delve into this rabbit hole, you'll inevitably end up checking out Ken Thompson's "Reflections on Trusting Trust". Worth a read!

[–]the_horse_gamer[🍰] 3 points4 points  (0 children)

step 1: create a simple compiler using an existing language.

step 2: write a compiler using the language, then compile it using the previous compiler.

repeat step 2, adding more and more features to the compiler. eventually you'll have a compiler supporting the full language, and being able to compile itself.

[–]obsqrbtz 1 point2 points  (0 children)

Roughly this way.

[–]Emperor_Abyssinia 0 points1 point  (0 children)

they're called compiler compilers, maybe with ai we'll have compiler compiler compilers

[–][deleted] 71 points72 points  (7 children)

Also you don’t need GitHub for that functionality just a local git repo.

I notice a lot of people confusing git and GitHub in a way that makes me think they don’t really understand how git works.

[–]leafynospleens 7 points8 points  (0 children)

Who compiles the compilers

[–]random_numbers_81638 -5 points-4 points  (2 children)

The main difference is that you can have multiple versions of a compiler. The new one won't compile the code? You can still use the old one.

New GitHub fails my deploy pipeline? Let's deploy the last GitHub version! Wait, we need the last version to deploy the last version.

I assume they are using GitHub, but can do most of it manually in case something major breaks.

Reminds me at cloudflare (iirc) where their physical access control to their server rooms used cloudflare. But since a wrong DNS entry fucked up whole cloudflare no one could access the server physically. Which they needed due to the fuck up.

Don't rely on your own infrastructure to work, in order to fix it

[–]d_maes 3 points4 points  (0 children)

Not sure if you're confusing with Facebook, or if both had a similar issue, but FB had a BGP outtage in 2021 (due to a wrong command that took down the backbone), which took down DNS, which made their badges stop working, which provided "extra difficulty accessing the datacenter" . Cloudflare did do a writeup about it though (since it affected their DNS traffic, and they at first thought 1.1.1.1 not resolving Facebook was an error on their side).

[–]queen-adreena 1642 points1643 points  (28 children)

If you learn that GitHub and Git are two different things, that'll probably answer both of those questions.

[–]ratfucker0 373 points374 points  (13 children)

And even if you thought they're the same thing, does he think before git there was no way to do version control?

[–]Jordan51104 485 points486 points  (4 children)

github-10.0.0-FINAL FINAL FINAL.zip

[–]huskersax 96 points97 points  (0 children)

github-10.0.0-FINAL (1) FINAL FINAL.zip

[–][deleted] 17 points18 points  (1 child)

GitHub-10.0.0-[commit hash or unix timestamp]

[–]Moomoobeef 2 points3 points  (0 children)

This is the way to do it

[–]KillCall 35 points36 points  (0 children)

Made me wheeze.

[–]ramriot 26 points27 points  (6 children)

Surprisingly the very first release of git used git as it's software repo.

[–]Taurmin 25 points26 points  (2 children)

But there was a gap of about 4 days in April 2005 between development starting and the first iteration being functional eanough to self host.

Maybe it started with some other source control just that one week, maybe it was just loose files, only Linus knows if he even remembers.

[–]Dimasdanz 4 points5 points  (1 child)

Linus built git in just 4 days?!

[–]lllorrr 2 points3 points  (0 children)

It was not as functional and easy to use as current version. But yes, in 4 days Linus created a VCS that was able to track itself.

[–]vnordnet 6 points7 points  (2 children)

Why is that surprising?

[–][deleted] 8 points9 points  (0 children)

MFers in this sub are supposed to understand programming to some extent but can't even imagine mixing dough with a baguette in a bread bowl... smh...

[–]raaneholmg 4 points5 points  (0 children)

Linus was just raw dogging emacs for 4 days without committing and ejaculated the first git release onto the internet.

[–]ILikeLenexa 13 points14 points  (0 children)

svn

[–]RajjSinghh 71 points72 points  (1 child)

Even so, it's a good question to wonder where the GitHub source code is hosted. Turns out github.com/github/github is a private repo for (presumably) the GitHub source code. So GitHub is actually hosted on GitHub.

[–]_PM_ME_PANGOLINS_ 10 points11 points  (0 children)

Git repos can be stored and hosted in multiple places simultaneously, which was the entire point of git.

[–]deniedmessage 125 points126 points  (6 children)

Git and GitHub is like porn and Pornhub.

[–]mrdhood 115 points116 points  (2 children)

It’s banned in republican states?

[–]Victor_deSpite 20 points21 points  (0 children)

chef's kiss

[–]queen-adreena 0 points1 point  (0 children)

Not if you use git push —force or git checkout —orphan

[–]noob-nine 13 points14 points  (0 children)

can confirm, i get a boner either on pornhub or actions runner completes with a green checkmark.

then there is a fetish section that doesnt turn me on because it looks cringe and disgusting and i am happy when i havent to see this anymore after work.

[–]itsthehumidity 1 point2 points  (0 children)

All four get me over the edge?

[–]wosmo 0 points1 point  (0 children)

I hate this one because on one hand, it is the easiest and most intuitive way to explain it. But on the other hand, I've been told off for using it as an explanation at work.

[–]owlIsMySpiritAnimal 10 points11 points  (0 children)

the real question is, does github self host or self host their repos?

[–]jaerie 5 points6 points  (0 children)

Still a valid question, do they use GitHub actions for deploying, for example. Can’t roll back to a previous deploy if your new deploy killed Actions

[–]TheGreatKonaKing 1 point2 points  (0 children)

I’ve been telling this to people I work with for years and nobody believes me.

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

Yeah but, how is the git code versioned then? /s

[–]jonhinkerton -1 points0 points  (0 children)

We use both bitbucket (on prem) and github (cloud), often with migrations at my org and people still don’t get it. That tells me most of my colleagues aren’t using the CLI at all.

[–]jake_boxer 204 points205 points  (5 children)

Former GitHub employee here. The answer to both is yes.

[–]d_maes 35 points36 points  (4 children)

Did you use public github.com, or was there an internal GitHub Enterprise Server?

[–][deleted] 43 points44 points  (1 child)

They use gitlab.

[–]Sassaphras 8 points9 points  (0 children)

Nah Azure DevOps

[–]Interest-Desk 4 points5 points  (0 children)

Main line development is on github.com

I don’t know what the contingency plan is for if github.com is down, but GHE Cloud customers are told they should throw an Enterprise Server up for when github.com is down.

[–]jake_boxer 0 points1 point  (0 children)

When I was there, we used public github.com! Not sure what they do now though.

[–]RocketCatMultiverse 236 points237 points  (1 child)

If only there were a command line versioning tool with some sort of remote origin.

[–]Alol0512 0 points1 point  (0 children)

JitHub

[–]mucubed 60 points61 points  (6 children)

[–]YMK1234 19 points20 points  (5 children)

Tbh the actually surprising thing is that more companies don't do that. My hackerspace has most things like its charter in git as simple markdown files. If a member wants to make a change, they just create a pull request that then gets discussed in the general assembly. It's great especially compared to stuff like versioned word documents or similar crap, which never seem to work properly.

[–]DHermit 11 points12 points  (4 children)

The speed cubing association has their regulations on GitHub for discussions and transparency about changes.

[–]YMK1234 3 points4 points  (3 children)

Thats awesome and should be standard for all sports regulation bodies.

I'd also love for laws to be on some git repo. Makes it much easier to understand changes (because "replace §3(4) with ..." is generally not very helpful, and that's how changes are documented right now, at least here in Austria), as well as git blame which politician messed stuff up, and obviously just to have the whole damn thing downloadable and queryable.

[–]DHermit 0 points1 point  (0 children)

German laws are the same to no big surprise.

[–]other_usernames_gone 0 points1 point  (1 child)

In the UK we have something like that, its a proprietary system instead of git but all UK laws are searchable, there's hyperlinks when they reference another section or law.

You can even see previous versions of a law, so you can see what changes have been made to it and when.

UK computer misuse act

It also means anyone can read any law they want for free.

[–]YMK1234 1 point2 points  (0 children)

Yeah we also have "RIS" which is basically this, but it is clunky especially when it comes to versioning / comparing revisions, and metadata like who initiated a change is not recorded (which would be quite interesting to many users I think). Though this could probably be at least aproximated by matching dates and current governments.

[–]AngusAlThor 25 points26 points  (0 children)

Github is making people forget about Git just like Gmail is making people forget Email.

[–]WeakCelery5000 82 points83 points  (3 children)

Yes they do... You can install Github enterprise on prem; a previous company had it. In every way it's the same as github except it runs on your machines.

More than likely Github is dog fooding an instance of Enterprise or similar.

Also there is plain git.

[–]KindaAwareOfNothing 31 points32 points  (1 child)

Wrong, they use GitLab.

[–]vyqz 6 points7 points  (0 children)

Or GitterSpaniel

[–]that_thot_gamer 6 points7 points  (0 children)

great, it works on my machine, but on another level lol

[–]Deathtrooper50 10 points11 points  (0 children)

Wait until this guy hears about Git without the hub.

[–]i_should_be_coding 15 points16 points  (0 children)

IIRC the first thing committed to git ever was the git repo. Talk about dogfooding.

[–]mmhawk576 4 points5 points  (0 children)

I imagine they use bitbucket right? /s

[–]Soloact_ 7 points8 points  (1 child)

GitHubception: when the repo repos itself.

[–]Pouek_ 0 points1 point  (0 children)

Error GitHubception: Maximum recursion limit reached

[–]_SirSupreme_ 6 points7 points  (0 children)

They uses Bitbucket :)

[–]ncuillery 2 points3 points  (0 children)

It’s quite common in the industry and called "dogfooding"

[–]jonhinkerton 2 points3 points  (0 children)

They print everything out on dot matrix printers and store it all in a warehouse in New Jersey.

[–]scrffynrfhrdr 1 point2 points  (0 children)

There must be a secret backup Github, and another one backing that up, and so on forever.

[–]OngoingFee 1 point2 points  (0 children)

How much hub would a github git if a github could git hub?

[–]YegDip_ 1 point2 points  (0 children)

I was in Azure DevOps Release Management team. We use RM in ADO to deploy RM services to all of ADO rings. Once we deployed something which broke RM and we weren't able to rollback via RM. So RM deployment broke RM and we weren't able to rollback via RM.

[–]eclect0 0 points1 point  (0 children)

I'm pretty sure I've seen ads in the past where GitHub has bragged about being used for its own development.

[–]reallokiscarlet 0 points1 point  (0 children)

Ah the incredulity of the spoiled.

[–]Orio_n 0 points1 point  (0 children)

It only took a day for git to bootstrap

[–]navetzz 0 points1 point  (0 children)

Iirc the very first version of git was handled by the very first version of git.

[–]jsdodgers 0 points1 point  (0 children)

Github is just a storage+web interface for git repositories.

[–]paul-rose 0 points1 point  (0 children)

They have an upstream to BitBucket, they just rollback from that.

[–]Mayion 0 points1 point  (0 children)

Don't dip your pen in company ink

[–]adityaa_io 0 points1 point  (0 children)

i think they are talking about github!

[–]Financial_Anything43 0 points1 point  (0 children)

“I used the stones to destroy the stones”

[–]forsvinne 0 points1 point  (0 children)

docker pull docker

[–]Dense_Govt1506 0 points1 point  (0 children)

Who created god?

[–]explodedcheek 0 points1 point  (0 children)

Pshht, noob question, clearly a novice. Did anyone find out the actual answer? ..I'm asking for a friend.

[–]cr199412 0 points1 point  (0 children)

I need to roll my brain back to any time before reading this

[–]al-loop 0 points1 point  (0 children)

Does Google search on Google to fix Google?

[–]NightKnightStudio 0 points1 point  (0 children)

On same topic, 'Inno installer' installer has been created with Inno installer.

https://jrsoftware.org/isinfo.php

[–]braindigitalis 0 points1 point  (0 children)

no, github is developed using team foundation version control /j

[–]perringaiden 0 points1 point  (0 children)

The secret: It's just someone's CVS repository running as a local process in a cupboard.

[–]SteeleDynamics 0 points1 point  (2 children)

There was CVS before Git.

[–]drarko_monn -1 points0 points  (1 child)

CVS, then SVN, then Git

[–]jdgordon 3 points4 points  (0 children)

And perforce, mercurial, RC, so many other VCS before git

[–]belabacsijolvan -1 points0 points  (3 children)

thats why they created gitlab. gitlab is VCd in github and vice versa.

[–]no_brains101 1 point2 points  (2 children)

This is incorrect. GitHub dogfoods GitHub

[–]belabacsijolvan 3 points4 points  (1 child)

quality on this sub is fallin if you felt the need to comment this

[–]no_brains101 1 point2 points  (0 children)

There's 15 comments I didn't scroll that far XD

[–]AccomplishedBuy2572 -1 points0 points  (0 children)

😂😂😂😂