Added static pages
This commit is contained in:
parent
0da3a1ffb9
commit
4723eec3b6
|
@ -0,0 +1,24 @@
|
|||
{{ template "base.html" . }}
|
||||
|
||||
{{ define "content" }}
|
||||
<div class="content-block">
|
||||
<div class="description mw7 ph3 ph0-ns">
|
||||
<p>We're a small group of programmers and idealists who are trying to make programming better for everyone. And we think the best way to do that is by collecting the best, down-to-earth programming projects in one place and building a community of the most talented programmers and most eager learners we can find.</p>
|
||||
<h2>Abner Coimbre</h2>
|
||||
<p>Abner Coimbre started Handmade Network when rallying the Handmade Hero community around a common goal. He leads the policies, initiatives, and public facing of the network. Abner became NASA's Kennedy Intern of the Year in 2015 and was named to Kennedy’s 2016 Top 10 Innovators. In 2017 Abner moved to Seattle, WA to work for Jonathan Blow's studio Thekla Inc.</p>
|
||||
<p>Twitter: <a class="external" href="https://twitter.com/AbnerCoimbre">@AbnerCoimbre</a></p>
|
||||
<h2>Jeroen van Rijn</h2>
|
||||
<p>Jeroen is just this guy, you know. He's a veteran programmer who at one time found himself chin deep in webdev and decided the best thing for his sanity was to retire from it. Then Abner proposed what would become Handmade Network and he decided to dust off his keyboard and join the fray, only to find the keyboard wasn't particularly dusty yet. Some keys were getting stuck or unresponsive, sure, but a replacement keyboard soon fixed that. When not wrangling RSI, he develops the backend software that makes the website tick.</p>
|
||||
<p>Apart from this he has a keen interest in low-level programming, optimisation, compiler writing and games development, among other subjects. When the site software is sufficiently mature, he plans to do an educational series on the Handmade Network, passing on some of the 30 years of collected knowledge he's gathered.</p>
|
||||
<p>Twitter: <a class="external" href="https://twitter.com/J_vanRijn">@J_vanRijn</a></p>
|
||||
<h2>Matt Mascarenhas</h2>
|
||||
<p>Matt is a lifelong computer user, music player and book reader. In contrast to everyone else on the Handmade Network team, his education only touched on computer programming, having culminated with a degree in English language and literature. Or, rather, it would have culminated there had Casey not begun his educational programming project Handmade Hero.</p>
|
||||
<p>Within the Handmade Network, Matt has become the person to ask if you want to know if / when Casey covered a particular topic on Handmade Hero – at least until the annotation system receives its long-expected overhaul, at which point he'll become partially redundant – and will be the first port of call should you have any issues with the Handmade Network website.</p>
|
||||
<p>While not annotating or grepping the annotations for answers to people's questions, Matt practises programming in C with a view to developing a bunch of software – to play, to run your console-based applications, for doing linguistic research and for staging theatrical productions – writes audio and story for games, and evangelises his Arch Linux system, taking full credit for Abner's discovery of the beautiful distribution.</p>
|
||||
<p>Twitter: <a class="external" href="https://twitter.com/miblo_">@miblo_</a></p>
|
||||
<h2>Andrew Chronister</h2>
|
||||
<p>Andrew is co-developer of Handmade Network and a student of computer engineering at the University of Washington. When he's not coding away at his project of the month, he can be found doing pointless math and cracking bad jokes on niche experimental decentralized social networks.</p>
|
||||
<p>Mastodon: <a class="external" href="https://cybre.space/@chr">@chr@cybre.space</a></p>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
|
@ -0,0 +1,52 @@
|
|||
{{ template "base.html" . }}
|
||||
|
||||
{{ define "content" }}
|
||||
<div class="content-block">
|
||||
<div class="description mw7 ph3 ph0-ns">
|
||||
<h1>Handmade Code of Conduct v1.0</h1>
|
||||
<p>The Handmade community is an international community of programmers, designers, artists, musicians, mathematicians, and other creatives dedicated to building and improving high quality software.</p>
|
||||
<p>Outlined herein are the guidelines we pledge to uphold to maintain a healthy community, stay true to the ideas first explored in our <a href="/manifesto">Manifesto</a> and refined by valuable feedback, and ensure we mature into a functional, inclusive, and innovative network.</p>
|
||||
<h2>COMMUNITY</h2>
|
||||
<h3>OPEN-MINDED</h3>
|
||||
<p>The Handmade community strives to be unprejudiced—we welcome unusual ideas, encourage different points of view, and consider their effectiveness in reality.</p>
|
||||
<p>The Handmade community does not waste time and alienate others by engaging in flame-wars, drawing out pointless arguments, singling out developers, or making attacks on the hard work of others; instead, we learn from exercising the methods that we believe to be reasonable, and offer suggestions on how to improve ourselves and others.</p>
|
||||
<h3>DOWN-TO-EARTH</h3>
|
||||
<p>Handmade favors the languages and tools that first serve the users of our software by not wasting their time and resources, and second those who develop it by making meaningful abstractions oriented to the task at hand.</p>
|
||||
<p>We try to minimize the emergent complexity of tightly coupled systems, avoid the over-complication by refusing to blindly apply accepted strategies without clear understanding of their costs, and we prefer that which is simple to that which is easy. When uncertain, we make measurements and follow the data.</p>
|
||||
<h3>DIVERSE</h3>
|
||||
<p>Handmade encourages participation by everyone. We will do everything in our power to ensure everyone feels accepted and respected in their interactions with our community.</p>
|
||||
<p>If someone has been harmed or offended, it is our responsibility to listen carefully and respectfully, and do our best to right the wrong. We accept that jokes and trolling can be taken too far and are not valid excuses for the alienation of any person.</p>
|
||||
<p>Although this list cannot be exhaustive, we explicitly honour diversity in age, culture, ethnicity, family background, gender identity or expression, language, national origin, neurotype, phenotype, political beliefs, profession, race, religion, sexual orientation, socio-economic status, membership in other communities, and technical ability.</p>
|
||||
<p>Some of the ideas and wording for this statement were based on diversity statements from <a class="external" href="https://www.ubuntu.com/about/about-ubuntu/diversity">Ubuntu Diversity Page</a>, which is in turn based on the Python community and Dreamwidth Studios (CC-BY-SA 3.0).</p>
|
||||
<p>To see how we encourage participation by everyone, see our <a href="/communication-guidelines">Handmade Guide to Community Interaction</a>.</p>
|
||||
<h2>INDIVIDUAL</h2>
|
||||
<h3>INQUISITIVE</h3>
|
||||
<p>The Handmade developer strives to understand their creations on a technical level. They will take the time on their personal software projects to meet their goals to the best of their abilities, without taking shortcuts that diminish the value of their work.</p>
|
||||
<p>They include technical understanding and user experience as important metrics for the quality of their creations, and minimize trade-offs which impact these negatively.</p>
|
||||
<p>They will ask questions exhaustively, and always re-evaluate what they consider to be a “good solution” in light of new evidence. Their curiosity is one of the primary driving forces in their work.</p>
|
||||
<h3>CONSIDERATE</h3>
|
||||
<p>The developer practices empathy; they try to understand how those they interact with and those they create for see the world in order to better understand each other.</p>
|
||||
<p>They realize that their actions in both professional and community contexts can have consequences for other people that they may not immediately understand, and will do their best to correct themselves when they make a mistake.</p>
|
||||
<p>They will, to the best of their abilities, keep those who enjoy their ongoing personal software projects up to date on the state of development and be honest about their progress and achievement of their stated goals.</p>
|
||||
<h3>WILLING TO SHARE</h3>
|
||||
<p>Handmade community members share their knowledge and expertise unflinchingly. They will not hesitate to lend a hand if the opportunity to improve the software development space arises.</p>
|
||||
<p>They realize that their fellow community member not knowing something is an opportunity rather than a character flaw. They also realize that their knowledge and experience, however deep and long-collected, is not absolute, and accept that the experiences of others may differ.</p>
|
||||
<h2>LEADERS</h2>
|
||||
<h3>TIGHT-KNIT</h3>
|
||||
<p>The Handmade Dev Team acts as one unit.</p>
|
||||
<p>The staff are open with each other, make decisions unanimously, and perform their roles admirably for the benefit of the community.</p>
|
||||
<h3>RECEPTIVE</h3>
|
||||
<p>The leaders are receptive to the state of the community.</p>
|
||||
<p>They will listen to everyone's concerns and make careful, considered judgment calls to move forward or solve a problem.</p>
|
||||
<p>They will never place personal benefit over the well-being of the community, and only act against the community's immediate short-term interests if it’s for the long-term benefit of everyone involved.</p>
|
||||
<h3>SERIOUS</h3>
|
||||
<p>The leaders are serious about their roles.</p>
|
||||
<p>They will uphold the ideas explored in the <a href="/manifesto">Manifesto</a>, setting the prime example of Handmade values in their development, behavior, and character.</p>
|
||||
<p>They agree to enforce the code of conduct as written and accepted by the community, understanding that there are times when enforcement involves consequences for those shown to be in repeated and flagrant violation thereof.</p>
|
||||
<p>They also agree to ensure all future revisions to such are accepted by and in the best interest of the community.</p>
|
||||
<a class="external" href="https://creativecommons.org/licenses/by-sa/4.0" rel="nofollow" target="_blank"><img src="/static/creative-commons-by-sa.png"></a>
|
||||
<p>This code of conduct is released under a <a class="external" href="https://creativecommons.org/licenses/by-sa/4.0">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>
|
||||
<p class="mt4 edited">Written by Jeroen van Rijn</p>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
|
@ -0,0 +1,47 @@
|
|||
{{ template "base.html" . }}
|
||||
|
||||
{{ define "content" }}
|
||||
<div class="content-block">
|
||||
<div class="description mw7 ph3 ph0-ns">
|
||||
<h1>Handmade Guide to Community Interaction v1.0</h1>
|
||||
<h2>Our Philosophy</h2>
|
||||
<p>The Handmade community strives to create an environment conducive to innovation, education, and constructive discussion. To that end, we expect members of the site to respect the following set of principles to maintain civil discourse and create an inclusive environment.</p>
|
||||
<h2>Discourse</h2>
|
||||
<ul>
|
||||
<li>The community is mostly business, with a bit of fun. Discussion should primarily be about software development, and in particular about the relevant project or topic at hand.</li>
|
||||
<li>Support arguments with evidence and rational discussion. Don't resort to ad hominem attacks or personality judgments.</li>
|
||||
<li>Differing opinions are valuable and should be respected. Not everyone sees eye-to-eye on every matter, but we're all trying to write useful software.</li>
|
||||
<li>Language has meaning, and can be used in destructive ways. Be aware that what you say may not seem injurious to you, but might make someone else's experience on the site tangibly worse. If you are asked to reconsider your conduct, please exercise some introspection. We want everyone to feel welcome here. This includes people both inside and outside the Handmade community.</li>
|
||||
<li>Be aware of differences in English comprehension and culture. What you say may be misinterpreted by a more fluent or less fluent speaker, or someone from a different culture. Misunderstandings should be resolved with the help of a third party, preferably a staff member.</li>
|
||||
</ul>
|
||||
<h2>Inclusiveness</h2>
|
||||
<p>The Handmade community will encourage participation of underrepresented groups. In order to promote diversity among the community, a Handmade community member shall not:</p>
|
||||
<ul>
|
||||
<li>Sexualize or objectify other members, even if you think it’s a compliment.</li>
|
||||
<li>Use pejoratives or excessively rely on foul language, especially if used to attack an individual.</li>
|
||||
<li>Denigrate, belittle, defame, or speak ill of any individual.</li>
|
||||
<li>Leave unsubstantiated or unjust criticism on someone's work, or disparage a person while critiquing their work.</li>
|
||||
<li>Dismiss other people’s contributions, opinions, or concerns based on their personal attributes, especially those described in the Diversity section of the code of conduct.</li>
|
||||
<li>Be rude. Disagreement is not an excuse to be flippant or inconsiderate.</li>
|
||||
<li>Antagonize others, particularly if a disagreement has occurred. Instead, a peaceful resolution should be sought, with an impartial third party if necessary.</li>
|
||||
<li>Assume a motive for uncharacteristic behavior. Everyone has a bad day.</li>
|
||||
<li>Dwell excessively on a topic or argument when the other parties involved have made it clear they are no longer interested or comfortable discussing it.</li>
|
||||
<li>Continue to ask a person to disclose information, particularly about their personal lives, when that person has declined to do so.</li>
|
||||
</ul>
|
||||
<h2>Integrity</h2>
|
||||
<p>The Handmade community values integrity, the honest pursuit of knowledge, and working hard to build effective, uncomplicated software.</p>
|
||||
<p>In particular, we strive to:</p>
|
||||
<ul>
|
||||
<li>Be honest to others about the state of our work.</li>
|
||||
<li>Foster an environment where dedicated learners of any skill level may ask questions and receive detailed, useful answers.</li>
|
||||
<li>Ensure all members of a project are kept up to date on the status of that project.</li>
|
||||
<li>Advertise projects for what they are and what their authors have reasonable hope and expectations their project will become.</li>
|
||||
</ul>
|
||||
<p>It is up to the discretion of the moderators to determine when these guidelines are being met, and they are permitted to act accordingly.</p>
|
||||
<p>If you feel an action has been made against you unreasonably, please contact the <a href="/contact">Handmade Dev Team</a> privately with your grievance and we will review the decision.</p>
|
||||
<a class="external" href="https://creativecommons.org/licenses/by-sa/4.0" rel="nofollow" target="_blank"><img src="/static/creative-commons-by-sa.png"></a>
|
||||
<p>This code of conduct is released under a <a class="external" href="https://creativecommons.org/licenses/by-sa/4.0">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>
|
||||
<p class="mt4 edited">Written by Jeroen van Rijn</p>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
|
@ -0,0 +1,16 @@
|
|||
{{ template "base.html" . }}
|
||||
|
||||
{{ define "content" }}
|
||||
<div class="content-block">
|
||||
<div class="description mw7 ph3 ph0-ns">
|
||||
<p>If you are experiencing technical issues with the site, please send a detailed email to <a href="mailto:team@handmadedev.org">team@handmadedev.org</a> with a description of the problem, and we'll do our best to address it in a timely manner.</p>
|
||||
<p>For administrative issues, such as moderation disputes or content revisions, contact any of the staff by email:</p>
|
||||
<ul>
|
||||
<li><a href="mailto:team@handmadedev.org">team@handmadedev.org</a></li>
|
||||
<li><a href="mailto:ryan@handmadedev.org">ryan@handmadedev.org</a></li>
|
||||
<li><a href="mailto:ben@handmadedev.org">ben@handmadedev.org</a></li>
|
||||
<li><a href="mailto:asaf@handmadedev.org">asaf@handmadedev.org</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
|
@ -0,0 +1,25 @@
|
|||
{{ template "base.html" . }}
|
||||
|
||||
{{ define "content" }}
|
||||
<div class="content-block">
|
||||
<div class="description mw7 ph3 ph0-ns">
|
||||
<p>Modern computer hardware is amazing. Manufacturers have orchestrated billions of pieces of silicon into terrifyingly complex and efficient structures that sweep electrons through innumerable tangled paths, branchings, and reunions with the sole purpose of performing computations at more than a billion times per second. This awe-inspiring piece of computational wizardry has at its disposal multiple billions of uniquely addressible silicon plates where it can store the results of millions of computations in an array of several vanishingly small chips. All of this hardware, though each component often sits no further than 7 or 8 centimeters away from the others, cycles so fast that the speed of light, a physical law of the universe, limits the rate at which they communicate with each other.</p>
|
||||
<h2>So why is software still slow?</h2>
|
||||
<p>Why does it take your operating system 10 seconds, 30 seconds, a minute to boot up? Why does your word processor freeze when you save a document on the cloud? Why does your web browser take 3, 4, 10 seconds to load a web page? Why does your phone struggle to keep more than a few apps open at a time? And why does each update somehow make the problem worse?</p>
|
||||
<h2>We made it slow.</h2>
|
||||
<p>Not necessarily you, not necessarily me, not necessarily any single person in particular. But we, the software development community, made it slow by ignoring the fundamental reality of our occupation. We write code, code that runs on computers. Real computers, with central processing units and random access memory and hard disk drives and display buffers. Real computers, with integer and bitwise math and floating point units and L2 caches, with threads and cores and a tenuous little network connection to a million billion other computers. Real computers not built for ease of human understanding but for blindingly, incomprehensibly fast speed.</p>
|
||||
<h2>A lot of us have forgotten that.</h2>
|
||||
<p>In our haste to get our products, our projects, the works of our hands and minds, to as many people as possible, we take shortcuts. We make assumptions. We generalize, and abstract, and assume that just because these problems have been solved before that they never need to be solved again. We build abstraction layers, then forget we built them and build more on top.</p>
|
||||
<p>And it's true that many of us think we do not have the time, the money, the mental bandwidth to always consider these things in detail. The deadline is approaching or the rent is due or we have taxes to fill out and a manager on our back and someone asking us why we always spend so much time at the office, and we just have to stick the library or virtual machine or garbage collector in there to cover up the places we can't think through right now.</p>
|
||||
<p>Others of us were never taught to think about the computer itself. We learned about objects and classes and templates and how to make our code clean and pretty. We learned how to write code to make the client or the manager or the teacher happy, but made the processor churn. And because we did, that amazing speed we'd been granted was wasted, by us, in a death by a thousand abstraction layers.</p>
|
||||
<h2>But some of us aren't satisfied with that.</h2>
|
||||
<p>Some of us take a few extra steps into the covered territory, the wheels sitting, motionless, in a pile behind us, examine their designs and decide there is a better way. The more experienced among us remember how software used to be, the potential that we know exists for computer programs to be useful, general, and efficient. Others of us got fed up with the tools we were expected to use without complaint, but which failed us time and time again. Some of us are just curious and don't know what's good for us. Don't trust what we've been told is good for us.</p>
|
||||
<p>We sat down and looked at our hardware, and examined our data, and thought about how to use the one to transform the other. We tinkered, and measured, and read, and compared, and wrote, and refined, and modified, and measured again, over and over, until we found we had built the same thing, but 10 times faster and incomparably more useful to the people we designed it for. And we had built it by hand.</p>
|
||||
<p>That is what Handmade means. It's not a technique or a language or a management strategy, it isn't a formula or a library or an abstraction. It's an idea. The idea that we can build software that works with the computer, not against it. The idea that sometimes an individual programmer can be more productive than a large team, that a small group can do more than an army of software engineers and *do it better*. The idea that programming is about transforming data and we wield the code, the tool we use to bend that data to our will.</p>
|
||||
<p>It doesn't require a degree, or a dissertation, or a decade of experience. You don't need an expensive computer or a certificate or even prior knowledge. All you need is an open mind and a sense of curiosity. We'll help you with the rest.</p>
|
||||
<h2>Will you join us?</h2>
|
||||
<p>Will you build your software by hand?</p>
|
||||
<p class="edited mt4">Written by Andrew Chronister</p>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
|
@ -10,6 +10,7 @@ import (
|
|||
|
||||
"git.handmade.network/hmn/hmn/src/auth"
|
||||
"git.handmade.network/hmn/hmn/src/db"
|
||||
"git.handmade.network/hmn/hmn/src/hmnurl"
|
||||
"git.handmade.network/hmn/hmn/src/logging"
|
||||
"git.handmade.network/hmn/hmn/src/models"
|
||||
"git.handmade.network/hmn/hmn/src/oops"
|
||||
|
@ -56,6 +57,30 @@ func NewWebsiteRoutes(conn *pgxpool.Pool, perfCollector *perf.PerfCollector) htt
|
|||
}
|
||||
}
|
||||
|
||||
staticPages := routes
|
||||
staticPages.Middleware = func(h Handler) Handler {
|
||||
return func(c *RequestContext) (res ResponseData) {
|
||||
c.Conn = conn
|
||||
|
||||
logPerf := TrackRequestPerf(c, perfCollector)
|
||||
defer logPerf()
|
||||
|
||||
defer LogContextErrors(c, res)
|
||||
|
||||
ok, errRes := LoadCommonWebsiteData(c)
|
||||
if !ok {
|
||||
return errRes
|
||||
}
|
||||
|
||||
if !c.CurrentProject.IsHMN() {
|
||||
res := c.Redirect(hmnurl.Url(c.URL().String(), nil), http.StatusMovedPermanently)
|
||||
return res
|
||||
}
|
||||
|
||||
return h(c)
|
||||
}
|
||||
}
|
||||
|
||||
routes.POST("^/login$", Login)
|
||||
routes.GET("^/logout$", Logout)
|
||||
routes.StdHandler("^/public/.*$",
|
||||
|
@ -70,6 +95,22 @@ func NewWebsiteRoutes(conn *pgxpool.Pool, perfCollector *perf.PerfCollector) htt
|
|||
panic("route not implemented")
|
||||
}
|
||||
})
|
||||
staticPages.GET("^/manifesto$", func(c *RequestContext) ResponseData {
|
||||
return Manifesto(c)
|
||||
})
|
||||
staticPages.GET("^/about$", func(c *RequestContext) ResponseData {
|
||||
return About(c)
|
||||
})
|
||||
staticPages.GET("^/code-of-conduct$", func(c *RequestContext) ResponseData {
|
||||
return CodeOfConduct(c)
|
||||
})
|
||||
staticPages.GET("^/communication-guidelines$", func(c *RequestContext) ResponseData {
|
||||
return CommunicationGuidelines(c)
|
||||
})
|
||||
staticPages.GET("^/contact$", func(c *RequestContext) ResponseData {
|
||||
return ContactPage(c)
|
||||
})
|
||||
|
||||
mainRoutes.GET(`^/feed(/(?P<page>.+)?)?$`, Feed)
|
||||
|
||||
// TODO(asaf): Trailing slashes break these
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
package website
|
||||
|
||||
import ()
|
||||
|
||||
func Manifesto(c *RequestContext) ResponseData {
|
||||
var res ResponseData
|
||||
res.WriteTemplate("manifesto.html", getBaseData(c), c.Perf)
|
||||
return res
|
||||
}
|
||||
|
||||
func About(c *RequestContext) ResponseData {
|
||||
var res ResponseData
|
||||
res.WriteTemplate("about.html", getBaseData(c), c.Perf)
|
||||
return res
|
||||
}
|
||||
|
||||
func CodeOfConduct(c *RequestContext) ResponseData {
|
||||
var res ResponseData
|
||||
res.WriteTemplate("code_of_conduct.html", getBaseData(c), c.Perf)
|
||||
return res
|
||||
}
|
||||
func CommunicationGuidelines(c *RequestContext) ResponseData {
|
||||
var res ResponseData
|
||||
res.WriteTemplate("communication_guidelines.html", getBaseData(c), c.Perf)
|
||||
return res
|
||||
}
|
||||
func ContactPage(c *RequestContext) ResponseData {
|
||||
var res ResponseData
|
||||
res.WriteTemplate("contact.html", getBaseData(c), c.Perf)
|
||||
return res
|
||||
}
|
Loading…
Reference in New Issue