Skip to content

Instantly share code, notes, and snippets.

@iainlane
Last active January 25, 2025 10:57
Show Gist options
  • Save iainlane/0f697848a6dcd947a66b0428dfe2b250 to your computer and use it in GitHub Desktop.
Save iainlane/0f697848a6dcd947a66b0428dfe2b250 to your computer and use it in GitHub Desktop.
graph TD
    %% Legend as a subgraph
    subgraph Legend["Legend"]
        direction LR
        L1["Hebrew Origin"]
        L2["Irish Forms"]
        L3["Scots Forms"]
        L4["Historical Forms"]
        L5["Diminutives"]
        L6["All names lead to Iain"]
    end

    %% Ancient Origins with dates and pronunciations
    Yochanan["יוֹחָנָן Yochanan<br />(Hebrew, c.1000 BCE, #quot;YHWH is gracious#quot;)<br />/joːχaːˈnaːn/"] -->|"y->i<br />c.250 BCE"| Ioannes["Ιωάννης Ioannes<br />(Greek)<br />/i.oˈan.nɛːs/"]
    Ioannes -->|"i->j<br />c.100 CE"| Iohannes["Iohannes/Johannes<br />(Latin)<br />/joˈhan.nes/"]

    subgraph Germanic["Germanic Languages"]
        direction TB
        PGmc["Proto-Germanic<br />*Johannez<br />(c.500 CE)<br />/joˈxan.nez/"]
        
        subgraph WestGermanic["West Germanic"]
            direction TB
            OHG["Johannes<br />(Old High German)<br />c.750-1050"]
            MHG["Johann<br />(Middle High German)<br />c.1050-1350"]
            Johann["Johann<br />(Modern German)"]
            Hans["Hans<br />(German)<br />from c.1200"]
            Hannes["Hannes<br />(German/Dutch)<br />from c.1300"]
            
            OSax["Johannes<br />(Old Saxon)<br />c.800-1100"]
            MLG["Johan<br />(Middle Low German)<br />c.1100-1500"]
            Jan["Jan<br />(Dutch/Low German)<br />from c.1200"]
            
            OE["Johannes<br />(Old English)<br />c.700-1100"]
            ME["John<br />(Middle English)<br />c.1100-1500"]
            ModE["John<br />(Modern English)"]
            Jack["Jack<br />(English)<br />from c.1350"]
            
            ON["Jóhann<br />(Old Norse)<br />c.800-1300"]
            Jon["Jon<br />(Norwegian/Swedish)"]
            Johan["Johan<br />(Swedish/Danish)"]
            Jens["Jens<br />(Danish)<br />from c.1200"]
            
            %% Regional Variants
            subgraph Regional["Regional Forms"]
                direction TB
                Sinbad["Sinbad<br />(Scots)<br />from c.1600"]
                Jock["Jock<br />(Scots)<br />from c.1500"]
                Jenkin["Jenkin<br />(Welsh-English)<br />from c.1300"]
            end
        end
        
        PGmc --> OHG --> MHG --> Johann -->|"shortening"| Hans
        Johann -->|"diminutive"| Hannes
        PGmc --> OSax --> MLG --> Jan
        PGmc --> OE --> ME --> ModE --> Jack
        ModE --> Jock
        ModE --> Sinbad
        PGmc --> ON --> Jon
        ON --> Johan --> Jens
    end
    
    subgraph Slavic["Slavic Languages"]
        direction TB
        ProtoSlav["Proto-Slavic<br />*Ioanŭ<br />(c.600 CE)"]
        OCS["Old Church Slavonic<br />Иоанъ (Ioanŭ)<br />c.850-1100"]
        
        ORus["Old Russian<br />Иванъ (Ivanŭ)<br />c.1000"]
        Ivan["Иван Ivan<br />(Russian)"]
        Vanya["Ваня Vanya<br />(Russian diminutive)"]
        
        OCz["Old Czech<br />Jan<br />c.1000"]
        Jan_Cz["Jan<br />(Czech/Slovak)"]
        Honza["Honza<br />(Czech diminutive)"]
        
        OPol["Old Polish<br />Jan<br />c.1000"]
        Jan_Pol["Jan<br />(Polish)"]
        Janek["Janek<br />(Polish diminutive)"]
        
        ProtoSlav --> OCS --> ORus --> Ivan --> Vanya
        OCS --> OCz --> Jan_Cz --> Honza
        OCS --> OPol --> Jan_Pol --> Janek
    end
    
    subgraph Romance["Romance Languages"]
        direction TB
        VL["Johannes<br />(Vulgar Latin)<br />c.200-700"]
        OFr["Jehan<br />(Old French)<br />c.800-1400"]
        Jean["Jean<br />(French)"]
        Giovanni["Giovanni<br />(Italian)<br />/dʒoˈvanni/"]
        Gianni["Gianni<br />(Italian diminutive)"]
        Juan["Juan<br />(Spanish)<br />/xwan/"]
        Juanito["Juanito<br />(Spanish diminutive)"]
        Ioan["Ioan<br />(Romanian)"]
        João["João<br />(Portuguese)<br />/ʒuˈɐ̃w/"]
        
        VL --> OFr --> Jean
        VL --> Giovanni --> Gianni
        VL --> Juan --> Juanito
        VL --> Ioan
        VL --> João
    end
    
    subgraph Celtic["Celtic Languages"]
        direction TB
        
        subgraph EarlyCeltic["Early Celtic Forms"]
            direction TB
            OCelt["Early Celtic<br />c.600"]
            OIrLat["Old Irish Latin<br />Iohannes<br />c.600-700"]
            OBrit["Old British<br />*Iohan<br />c.600-800"]
        end
        
        OIr["Old Irish<br />Eóin<br />c.700-900<br />/eːoːnʲ/"]
        Eoin["Eoin<br />(Irish Gaelic)<br />/oːnʲ/"]
        Sean["Seán<br />(Irish Gaelic)<br />/ʃɑːn/"]
        
        OWel["Old Welsh<br />Ieuan<br />c.800-1100"]
        Ieuan["Ieuan<br />(Welsh)<br />/jəɨ̯ˈan/"]
        
        ScotGael["Scottish Gaelic<br />Eòin<br />c.1100-1300"]
        Iain["Iain<br />(Scottish Gaelic)<br />/iən/"]
        Ian["Ian<br />(Scots)<br />/iən/"]
        
        OCelt --> OIrLat --> OIr --> Eoin
        OCelt --> OBrit --> OWel --> Ieuan
        OIr --> ScotGael --> Iain -->|"simplified spelling<br />c.1800"| Ian
        OIr --> Sean
        Sean --> Shaun["Shaun<br />(English)<br />from c.1950"]
        Sean --> Shawn["Shawn<br />(English)<br />from c.1950"]
        Sean --> Shane["Shane<br />(Irish Anglican)<br />from c.1600"]
        Ieuan -->|"loss of 'u'<br />c.1500"| Evan["Evan<br />(Welsh)"]
    end

    %% Main connections
    Iohannes --> PGmc
    Iohannes --> VL
    Iohannes --> ProtoSlav
    Iohannes --> OIrLat
    Iohannes --> OBrit
    
    %% Cross-influences with annotations
    Hans -.->|"pet form influence:<br />Hans→Hankin→Jankin→Jack<br />(14th century)"| Jack
    Jean -.->|"Norman French influence<br />(after 1066)"| ME
    Jean -.->|"Norman influence<br />j->s<br />c.1200"| Sean
    
    %% Style definitions
    classDef default fill:#eff1f5,stroke:#4c4f69,stroke-width:1px
    classDef hebrew fill:#dc8a78,stroke:#4c4f69,stroke-width:2px
    classDef irish fill:#7287fd,stroke:#4c4f69,stroke-width:2px
    classDef scots fill:#40a02b,stroke:#4c4f69,stroke-width:2px
    classDef historical fill:#e6e9ef,stroke:#4c4f69,stroke-width:1px
    classDef diminutive fill:#fab387,stroke:#4c4f69,stroke-width:1px
    classDef target fill:#a6da95,stroke:#4c4f69,stroke-width:3px,font-weight:bold
    
    %% Style applications
    class L1 hebrew
    class L2 irish
    class L3 scots
    class L4 historical
    class L5 diminutive
    class L6 target
    class Yochanan hebrew
    class Sean,Shaun,Shane irish
    class Ian,Jock,Sinbad scots
    class PGmc,OHG,OSax,MLG,OE,ME,ProtoSlav,OCS,OCelt,OIrLat,OBrit,OIr,OWel,ON,ScotGael historical
    class Vanya,Honza,Janek,Gianni,Juanito,Hannes diminutive
    class Iain target
Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment