CINXE.COM

David Culley - Codeberg.org

<!DOCTYPE html> <html lang="en-US" data-theme="codeberg-auto"> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>David Culley - Codeberg.org</title> <link rel="manifest" href="data:application/json;base64,eyJuYW1lIjoiQ29kZWJlcmcub3JnIiwic2hvcnRfbmFtZSI6IkNvZGViZXJnLm9yZyIsInN0YXJ0X3VybCI6Imh0dHBzOi8vY29kZWJlcmcub3JnLyIsImljb25zIjpbeyJzcmMiOiJodHRwczovL2NvZGViZXJnLm9yZy9hc3NldHMvaW1nL2xvZ28ucG5nIiwidHlwZSI6ImltYWdlL3BuZyIsInNpemVzIjoiNTEyeDUxMiJ9LHsic3JjIjoiaHR0cHM6Ly9jb2RlYmVyZy5vcmcvYXNzZXRzL2ltZy9sb2dvLnN2ZyIsInR5cGUiOiJpbWFnZS9zdmcreG1sIiwic2l6ZXMiOiI1MTJ4NTEyIn1dfQ=="> <meta name="author" content="Codeberg"> <meta name="description" content="Codeberg is a non-profit, community-led organization that aims to help free and open source projects prosper by giving them a safe and friendly home."> <meta name="keywords" content="git,non-profit,foss,oss,free,software,open,source,code,hosting"> <meta name="referrer" content="no-referrer"> <link rel="alternate" type="application/atom+xml" title="" href="/davidculley.atom"> <link rel="alternate" type="application/rss+xml" title="" href="/davidculley.rss"> <link rel="icon" href="/assets/img/favicon.svg" type="image/svg+xml"> <link rel="alternate icon" href="/assets/img/favicon.png" type="image/png"> <script> window.addEventListener('error', function(e) {window._globalHandlerErrors=window._globalHandlerErrors||[]; window._globalHandlerErrors.push(e);}); window.addEventListener('unhandledrejection', function(e) {window._globalHandlerErrors=window._globalHandlerErrors||[]; window._globalHandlerErrors.push(e);}); window.config = { appUrl: 'https:\/\/codeberg.org\/', appSubUrl: '', assetVersionEncoded: encodeURIComponent('10.0.0-122-008a379~gitea-1.22.0'), assetUrlPrefix: '\/assets', runModeIsProd: true , customEmojis: {"codeberg":":codeberg:","forgejo":":forgejo:","git":":git:","gitea":":gitea:","github":":github:","gitlab":":gitlab:","gogs":":gogs:"}, csrfToken: 'SxtWuoZXRE0NdW15yUeSFm0oUPo6MTc0MjA1ODc5OTU2MDkxOTA5Ng', pageData: {}, notificationSettings: {"EventSourceUpdateTime":10000,"MaxTimeout":60000,"MinTimeout":10000,"TimeoutStep":10000}, enableTimeTracking: true , mermaidMaxSourceCharacters: 5000 , i18n: { copy_success: "Copied!", copy_error: "Copy failed", error_occurred: "An error occurred", network_error: "Network error", remove_label_str: "Remove item \"%s\"", modal_confirm: "Confirm", modal_cancel: "Cancel", more_items: "More items", }, }; window.config.pageData = window.config.pageData || {}; </script> <script src="/assets/js/webcomponents.js?v=10.0.0-122-008a379~gitea-1.22.0"></script> <noscript> <style> .dropdown:hover > .menu { display: block; } .ui.secondary.menu .dropdown.item > .menu { margin-top: 0; } </style> </noscript> <meta property="og:title" content="David Culley"> <meta property="og:type" content="profile"> <meta property="og:image" content="https://codeberg.org/avatars/c5ebf61e14b7dc7096b1f9b8155e4fe3"> <meta property="og:url" content="https://codeberg.org/davidculley"> <meta property="og:description" content="Interested in Python, machine learning and data engineering, vision and graphics (Blender), spaced-repetition learning (Anki), tools for thought (Obsidian), Neovim, and more."> <meta property="og:site_name" content="Codeberg.org"> <link rel="stylesheet" href="/assets/css/index.css?v=10.0.0-122-008a379~gitea-1.22.0"> <link rel="stylesheet" href="/assets/css/theme-codeberg-auto.css?v=10.0.0-122-008a379~gitea-1.22.0"> </head> <body hx-headers='{"x-csrf-token": "SxtWuoZXRE0NdW15yUeSFm0oUPo6MTc0MjA1ODc5OTU2MDkxOTA5Ng"}' hx-swap="outerHTML" hx-ext="morph" hx-push-url="false"> <div class="full height"> <noscript>This website requires JavaScript.</noscript> <nav id="navbar" aria-label="Navigation bar"> <div class="navbar-left ui secondary menu"> <a class="item" id="navbar-logo" href="/" aria-label="Home"> <img width="30" height="30" src="https://design.codeberg.org/logo-kit/icon_inverted.svg" aria-hidden="true"> </a> <div class="ui secondary menu item navbar-mobile-right only-mobile"> <button class="item tw-w-auto ui icon mini button tw-p-2 tw-m-0" id="navbar-expand-toggle" aria-label="Toggle menu"><svg viewBox="0 0 16 16" class="svg octicon-three-bars" aria-hidden="true" width="16" height="16"><path d="M1 2.75A.75.75 0 0 1 1.75 2h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 2.75m0 5A.75.75 0 0 1 1.75 7h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 7.75M1.75 12h12.5a.75.75 0 0 1 0 1.5H1.75a.75.75 0 0 1 0-1.5"/></svg></button> </div> <a class="item" href="/explore/repos">Explore</a> <a class="item" target="_blank" href="https://docs.codeberg.org/getting-started/what-is-codeberg/#what-is-codeberg-e.v.%3F">About</a> <a class="item" target="_blank" href="https://docs.codeberg.org/getting-started/faq/">FAQ</a> <a class="item" target="_blank" rel="noopener noreferrer" href="https://docs.codeberg.org">Help</a> <a class="item donation-pretty" href="https://donate.codeberg.org">Donate</a> </div> <div class="navbar-right ui secondary menu"> <a class="item" href="/user/cbrgp/NXXMInE"> <svg viewBox="0 0 16 16" class="svg octicon-person" aria-hidden="true" width="16" height="16"><path d="M10.561 8.073a6 6 0 0 1 3.432 5.142.75.75 0 1 1-1.498.07 4.5 4.5 0 0 0-8.99 0 .75.75 0 0 1-1.498-.07 6 6 0 0 1 3.431-5.142 3.999 3.999 0 1 1 5.123 0M10.5 5a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0"/></svg> Register </a> <a class="item" rel="nofollow" href="/user/login?redirect_to=%2fdavidculley"> <svg viewBox="0 0 16 16" class="svg octicon-sign-in" aria-hidden="true" width="16" height="16"><path d="M2 2.75C2 1.784 2.784 1 3.75 1h2.5a.75.75 0 0 1 0 1.5h-2.5a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25h2.5a.75.75 0 0 1 0 1.5h-2.5A1.75 1.75 0 0 1 2 13.25Zm6.56 4.5h5.69a.75.75 0 0 1 0 1.5H8.56l1.97 1.97a.749.749 0 0 1-.326 1.275.75.75 0 0 1-.734-.215L6.22 8.53a.75.75 0 0 1 0-1.06l3.25-3.25a.749.749 0 0 1 1.275.326.75.75 0 0 1-.215.734Z"/></svg> Sign in </a> </div> </nav> <div role="main" aria-label="David Culley" class="page-content user profile"> <div class="ui container"> <div id="flash-message" hx-swap-oob="true"></div> <div class="ui stackable grid"> <div class="ui four wide column"> <div id="profile-avatar-card" class="ui card" hx-swap="morph"> <div id="profile-avatar" class="content tw-flex"> <span class="image"> <img loading="lazy" class="ui avatar tw-align-middle" src="/avatars/c5ebf61e14b7dc7096b1f9b8155e4fe3?size=512" title="David Culley" width="256" height="256"/> </span> </div> <div class="content tw-break-anywhere profile-avatar-name"> <span class="header text center">David Culley</span> <span class="username text center">davidculley </span> <div class="tw-mt-2"> <a class="muted" href="/davidculley?tab=followers"><svg viewBox="0 0 16 16" class="tw-mr-1 svg octicon-people" aria-hidden="true" width="18" height="18"><path d="M2 5.5a3.5 3.5 0 1 1 5.898 2.549 5.51 5.51 0 0 1 3.034 4.084.75.75 0 1 1-1.482.235 4 4 0 0 0-7.9 0 .75.75 0 0 1-1.482-.236A5.5 5.5 0 0 1 3.102 8.05 3.5 3.5 0 0 1 2 5.5M11 4a3.001 3.001 0 0 1 2.22 5.018 5 5 0 0 1 2.56 3.012.749.749 0 0 1-.885.954.75.75 0 0 1-.549-.514 3.51 3.51 0 0 0-2.522-2.372.75.75 0 0 1-.574-.73v-.352a.75.75 0 0 1 .416-.672A1.5 1.5 0 0 0 11 5.5.75.75 0 0 1 11 4m-5.5-.5a2 2 0 1 0-.001 3.999A2 2 0 0 0 5.5 3.5"/></svg>0 followers</a> · <a class="muted" href="/davidculley?tab=following">0 following</a> </div> </div> <div class="extra content tw-break-anywhere"> <ul> <li> <svg viewBox="0 0 16 16" class="svg octicon-location" aria-hidden="true" width="16" height="16"><path d="m12.596 11.596-3.535 3.536a1.5 1.5 0 0 1-2.122 0l-3.535-3.536a6.5 6.5 0 1 1 9.192-9.193 6.5 6.5 0 0 1 0 9.193m-1.06-8.132za5 5 0 1 0-7.072 7.072L8 14.07l3.536-3.534a5 5 0 0 0 0-7.072M8 9a2 2 0 1 1-.001-3.999A2 2 0 0 1 8 9"/></svg> <span class="tw-flex-1">Germany</span> <a href="https://www.openstreetmap.org/search?query=Germany" rel="nofollow noreferrer" data-tooltip-content="Show this place on a map"> <svg viewBox="0 0 16 16" class="svg octicon-link-external" aria-hidden="true" width="16" height="16"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2m6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.75.75 0 0 1-1.042-.018.75.75 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1"/></svg> </a> </li> <li> <svg viewBox="0 0 16 16" class="svg octicon-link" aria-hidden="true" width="16" height="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .75.75 0 0 1 .018-1.042.75.75 0 0 1 1.042-.018 2 2 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.75.75 0 0 1-1.042-.018.75.75 0 0 1-.018-1.042m-4.69 9.64a2 2 0 0 0 2.83 0l1.25-1.25a.75.75 0 0 1 1.042.018.75.75 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .75.75 0 0 1-.018 1.042.75.75 0 0 1-1.042.018 2 2 0 0 0-2.83 0l-2.5 2.5a2 2 0 0 0 0 2.83"/></svg> <a target="_blank" rel="noopener noreferrer me" href="https://www.davidculley.com">https://www.davidculley.com</a> </li> <li> <div class="render-content markup"><p dir="auto">Interested in Python, machine learning and data engineering, vision and graphics (Blender), spaced-repetition learning (Anki), tools for thought (Obsidian), Neovim, and more.</p> </div> </li> <li><svg viewBox="0 0 16 16" class="svg octicon-calendar" aria-hidden="true" width="16" height="16"><path d="M4.75 0a.75.75 0 0 1 .75.75V2h5V.75a.75.75 0 0 1 1.5 0V2h1.25c.966 0 1.75.784 1.75 1.75v10.5A1.75 1.75 0 0 1 13.25 16H2.75A1.75 1.75 0 0 1 1 14.25V3.75C1 2.784 1.784 2 2.75 2H4V.75A.75.75 0 0 1 4.75 0M2.5 7.5v6.75c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25V7.5Zm10.75-4H2.75a.25.25 0 0 0-.25.25V6h11V3.75a.25.25 0 0 0-.25-.25"/></svg> <span>Joined on <absolute-date weekday="" year="numeric" month="short" day="numeric" date="2024-03-24T03:32:20Z">2024-03-24</absolute-date></span></li> </ul> </div> </div> </div> <div class="ui twelve wide column tw-mb-4"> <overflow-menu class="ui secondary pointing tabular borderless menu"> <div class="overflow-menu-items"> <a class="active item" href="/davidculley?tab=repositories"> <svg viewBox="0 0 16 16" class="svg octicon-repo" aria-hidden="true" width="16" height="16"><path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.5 2.5 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.5 2.5 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.25.25 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"/></svg> Repositories <span hidden test-name="repository-count">0</span> </a> <a href="/davidculley/-/projects" class="item"> <svg viewBox="0 0 16 16" class="svg octicon-project-symlink" aria-hidden="true" width="16" height="16"><path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16h-8.5a.75.75 0 0 1 0-1.5h8.5a.25.25 0 0 0 .25-.25V6.5h-13v1.75a.75.75 0 0 1-1.5 0ZM6.5 5h8V1.75a.25.25 0 0 0-.25-.25H6.5Zm-5 0H5V1.5H1.75a.25.25 0 0 0-.25.25Z"/><path d="M1.5 13.737a2.25 2.25 0 0 1 2.262-2.25L4 11.49v1.938c0 .218.26.331.42.183l2.883-2.677a.25.25 0 0 0 0-.366L4.42 7.89a.25.25 0 0 0-.42.183V9.99l-.23-.001A3.75 3.75 0 0 0 0 13.738v1.012a.75.75 0 0 0 1.5 0z"/></svg> Projects <span hidden test-name="project-count">0</span> </a> <a href="/davidculley/-/packages" class="item"> <svg viewBox="0 0 16 16" class="svg octicon-package" aria-hidden="true" width="16" height="16"><path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0M7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.25.25 0 0 0-.25 0M2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"/></svg> Packages <span hidden test-name="package-count">0</span> </a> <a class="item" href="/davidculley?tab=stars"> <svg viewBox="0 0 16 16" class="svg octicon-star" aria-hidden="true" width="16" height="16"><path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25m0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41z"/></svg> Starred repositories <div class="ui small label">2</div> </a> </div> </overflow-menu> <div class="ui small secondary filter menu"> <form id="repo-search-form" class="ui form ignore-dirty tw-flex-1 tw-flex tw-flex-row tw-gap-x-2 tw-items-center"> <div class="ui small fluid action input tw-flex-1"> <input type="search" spellcheck="false" name="q" maxlength="255" placeholder="Search repos..."> <input type="hidden" name="tab" value="repositories"> <button class="ui small icon button" aria-label="Search..." ><svg viewBox="0 0 16 16" class="svg octicon-search" aria-hidden="true" width="16" height="16"><path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.75.75 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7"/></svg></button> </div> <div class="ui small dropdown type jump item tw-mr-0"> <span class="text"> Filter </span> <svg viewBox="0 0 16 16" class="dropdown icon svg octicon-triangle-down" aria-hidden="true" width="14" height="14"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427"/></svg> <div class="menu"> <label class="item"><input type="radio" name="clear-filter"> Clear filters</label> <div class="divider"></div> <label class="item"><input type="radio" name="archived" value="1"> Archived</label> <label class="item"><input type="radio" name="archived" value="0"> Not archived</label> <div class="divider"></div> <label class="item"><input type="radio" name="fork" value="1"> Forks</label> <label class="item"><input type="radio" name="fork" value="0"> Not forks</label> <div class="divider"></div> <label class="item"><input type="radio" name="mirror" value="1"> Mirrors</label> <label class="item"><input type="radio" name="mirror" value="0"> Not mirrors</label> <div class="divider"></div> <label class="item"><input type="radio" name="template" value="1"> Templates</label> <label class="item"><input type="radio" name="template" value="0"> Not templates</label> <div class="divider"></div> <label class="item"><input type="radio" name="private" value="1"> Private</label> <label class="item"><input type="radio" name="private" value="0"> Public</label> </div> </div> <div class="ui small dropdown type jump item tw-mr-0"> <span class="text"> Sort </span> <svg viewBox="0 0 16 16" class="dropdown icon svg octicon-triangle-down" aria-hidden="true" width="14" height="14"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427"/></svg> <div class="menu"> <label class="item"><input hidden type="radio" name="sort" value="newest"> Newest</label> <label class="item"><input hidden type="radio" name="sort" value="oldest"> Oldest</label> <label class="item"><input hidden type="radio" name="sort" value="alphabetically"> Alphabetically</label> <label class="item"><input hidden type="radio" name="sort" value="reversealphabetically"> Reverse alphabetically</label> <label class="active item"><input hidden type="radio" name="sort" checked value="recentupdate"> Recently updated</label> <label class="item"><input hidden type="radio" name="sort" value="leastupdate"> Least recently updated</label> <label class="item"><input hidden type="radio" name="sort" value="moststars"> Most stars</label> <label class="item"><input hidden type="radio" name="sort" value="feweststars"> Fewest stars</label> <label class="item"><input hidden type="radio" name="sort" value="mostforks"> Most forks</label> <label class="item"><input hidden type="radio" name="sort" value="fewestforks"> Fewest forks</label> <label class="item"><input hidden type="radio" name="sort" value="size"> Smallest size</label> <label class="item"><input hidden type="radio" name="sort" value="reversesize"> Largest size</label> </div> </div> </form> </div> <div class="divider"></div> <div class="flex-list"> <div> No matching results found. </div> </div> </div> </div> </div> </div> <div class="ui g-modal-confirm delete modal" id="block-user"> <div class="header"> Block user </div> <div class="content"> <p>Please note that blocking a user has other effects, such as:</p> <ul> <li>You will stop following each other and will not be able to follow each other.</li> <li>This user will not be able to interact with the repositories you own, or the issues and comments you have created.</li> <li>You will not be able to add each other as repository collaborators.</li> </ul> </div> <div class="actions"> <button class="ui cancel button"><svg viewBox="0 0 16 16" class="svg octicon-x" aria-hidden="true" width="16" height="16"><path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.75.75 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.75.75 0 0 1-.734-.215L8 9.06l-3.22 3.22a.75.75 0 0 1-1.042-.018.75.75 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06"/></svg> No</button> <button class="ui primary ok button"><svg viewBox="0 0 16 16" class="svg octicon-check" aria-hidden="true" width="16" height="16"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.75.75 0 0 1 .018-1.042.75.75 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0"/></svg> Yes</button> </div> </div> </div> <footer class="page-footer" role="group" aria-label="Footer"> <div class="grid" aria-label="Links"> <div class="branding not-mobile" aria-hidden="true"> <img src="https://design.codeberg.org/logo-kit/icon_inverted.svg" alt="Logo"> </div> <div> <b id="codeberg-codeberg">Codeberg</b> <ul> <li><a href="https://docs.codeberg.org" target="_blank">Documentation</a></li> <li><a href="/Codeberg/Community/issues">Community Issues</a></li> <li><a href="/Codeberg/Contributing">Contributing</a> <li><a href="https://docs.codeberg.org/contact/#abuse" target="_blank">Report Abuse</a> </ul> </div> <div> <b id="codeberg-association">Association</b> <ul> <li><a href="https://docs.codeberg.org/getting-started/what-is-codeberg/#what-is-codeberg-e.v.%3F" target="_blank">Who are we?</a></li> <li><a href="/codeberg/org/src/en/bylaws.md" target="_blank">Bylaws / Satzung</a></li> <li><a href="https://docs.codeberg.org/improving-codeberg/donate/" target="_blank">Donate</a></li> <li><a href="https://join.codeberg.org" target="_blank">Join / Support</a></li> <li><a href="https://docs.codeberg.org/contact/" target="_blank">Contact</a></li> </ul> </div> <div> <b id="codeberg-service">Service</b> <ul> <li><a href="https://codeberg.page" target="_blank">Codeberg Pages</a></li> <li><a href="https://translate.codeberg.org" target="_blank">Weblate Translations</a></li> <li><a href="https://docs.codeberg.org/ci/#using-codeberg's-instance-of-woodpecker-ci" target="_blank">Woodpecker CI</a></li> <li><a href="/api/swagger">Forgejo API</a></li> <li><a href="https://status.codeberg.eu" target="_blank">Status Page</a></li> </ul> </div> <div> <b id="codeberg-legal">Legal</b> <ul> <li><a href="/codeberg/org/src/Imprint.md" target="_blank">Imprint / Impressum</a></li> <li><a href="/codeberg/org/src/PrivacyPolicy.md" target="_blank">Privacy Policy</a></li> <li><a href="/assets/licenses.txt">Licenses</a></li> <li><a href="/codeberg/org/src/TermsOfUse.md">Terms of Use</a></li> </ul> </div> </div> <center> <a href="https://blog.codeberg.org" target="_blank">Blog</a> | <a href="https://social.anoxinon.de/@Codeberg" target="_blank" rel="noopener noreferrer">Mastodon</a> | <a href="https://matrix.to/#/#codeberg-space:matrix.org" target="_blank" rel="noopener noreferrer">Matrix Space</a> | <a href="/Codeberg-Infrastructure/forgejo" target="_blank">Powered by Forgejo</a> </center> <div class="gt-float-right"> <div class="ui language bottom floating slide up dropdown link item button"> <svg viewBox="0 0 16 16" class="svg octicon-globe" aria-hidden="true" width="16" height="16"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0M5.78 8.75a9.64 9.64 0 0 0 1.363 4.177q.383.64.857 1.215c.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a10 10 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.51 6.51 0 0 0 4.666 5.5q-.184-.271-.352-.552c-.715-1.192-1.437-2.874-1.581-4.948m-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948q.18-.295.353-.552a6.51 6.51 0 0 0-4.666 5.5m10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948q-.18.296-.353.552a6.51 6.51 0 0 0 4.666-5.5Zm2.733-1.5a6.51 6.51 0 0 0-4.666-5.5q.184.272.353.552c.714 1.192 1.436 2.874 1.58 4.948Z"/></svg> <div class="text">English</div> <div class="menu language-menu"> <a lang="id-ID" data-url="/?lang=id-ID" class="item ">Bahasa Indonesia</a> <a lang="de-DE" data-url="/?lang=de-DE" class="item ">Deutsch</a> <a lang="en-US" data-url="/?lang=en-US" class="item active selected">English</a> <a lang="es-ES" data-url="/?lang=es-ES" class="item ">Español</a> <a lang="eo" data-url="/?lang=eo" class="item ">Esperanto</a> <a lang="fil" data-url="/?lang=fil" class="item ">Filipino</a> <a lang="fr-FR" data-url="/?lang=fr-FR" class="item ">Français</a> <a lang="it-IT" data-url="/?lang=it-IT" class="item ">Italiano</a> <a lang="lv-LV" data-url="/?lang=lv-LV" class="item ">Latviešu</a> <a lang="hu-HU" data-url="/?lang=hu-HU" class="item ">Magyar nyelv</a> <a lang="nl-NL" data-url="/?lang=nl-NL" class="item ">Nederlands</a> <a lang="nds" data-url="/?lang=nds" class="item ">Plattdüütsch</a> <a lang="pl-PL" data-url="/?lang=pl-PL" class="item ">Polski</a> <a lang="pt-PT" data-url="/?lang=pt-PT" class="item ">Português de Portugal</a> <a lang="pt-BR" data-url="/?lang=pt-BR" class="item ">Português do Brasil</a> <a lang="sl" data-url="/?lang=sl" class="item ">Slovenščina</a> <a lang="fi-FI" data-url="/?lang=fi-FI" class="item ">Suomi</a> <a lang="sv-SE" data-url="/?lang=sv-SE" class="item ">Svenska</a> <a lang="tr-TR" data-url="/?lang=tr-TR" class="item ">Türkçe</a> <a lang="cs-CZ" data-url="/?lang=cs-CZ" class="item ">Čeština</a> <a lang="el-GR" data-url="/?lang=el-GR" class="item ">Ελληνικά</a> <a lang="bg" data-url="/?lang=bg" class="item ">Български</a> <a lang="ru-RU" data-url="/?lang=ru-RU" class="item ">Русский</a> <a lang="uk-UA" data-url="/?lang=uk-UA" class="item ">Українська</a> <a lang="fa-IR" data-url="/?lang=fa-IR" class="item ">فارسی</a> <a lang="ja-JP" data-url="/?lang=ja-JP" class="item ">日本語</a> <a lang="zh-CN" data-url="/?lang=zh-CN" class="item ">简体中文</a> <a lang="zh-TW" data-url="/?lang=zh-TW" class="item ">繁體中文(台灣)</a> <a lang="zh-HK" data-url="/?lang=zh-HK" class="item ">繁體中文(香港)</a> <a lang="ko-KR" data-url="/?lang=ko-KR" class="item ">한국어</a> </div> </div> </div> </footer> <script src="/assets/js/index.js?v=10.0.0-122-008a379~gitea-1.22.0" onerror="alert('Failed to load asset files from ' + this.src + '. Please make sure the asset files can be accessed.')"></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10