This document provides an overview of GitHub and its technical architecture presented by Chris Wanstrath. Some key points:
- GitHub started as a git hosting site but became a social coding platform where users can see friends' activity and leave comments.
- It uses Ruby on Rails for the main codebase, Resque for background jobs, MySQL for the database, and nginx, unicorn, and memcached.
- Git operations are handled by Grit and communicated to file servers via the BERT-RPC based Smoke protocol.
- Caching, asset optimization, and AJAX loading are used extensively to improve performance. Monitoring tools include Nagios, Resque Web, Haystack, and CollectD.
Github - Git Training Slides: FoundationsLee Hanxue
Slide deck with detailed step breakdown that explains how git works, together with simple examples that you can try out yourself. Slides originated from http://teach.github.com/articles/course-slides/
Author: https://twitter.com/matthewmccull
Managing JavaScript projects in a MonoRepo
(Zacky Pickholz)
Managing a large front end project with multiple npm packages can be overwhelming sometimes. During this session we cover popular tools that help us maintain this project much more easily.
Git is a distributed revision control system that is widely used in the software development industry. The presentation was used in a lecture delivered in BITS-Pilani, India. The lecture served as a basic crash course on Git.
First, it sets off with a guide to install and configure git on various platforms.
Then, the basic working concepts of Git are explained.
This is followed by a detailed step-by-step guided demonstration of a sample workflow in Git.
Afterwards, Some auxillary commands that are frequently used are discussed briefly.
Finally, basic concepts of branching and merging are detailed.
The presentation ends with a few possible merge conflicts that occur in Git.
Github - Git Training Slides: FoundationsLee Hanxue
Slide deck with detailed step breakdown that explains how git works, together with simple examples that you can try out yourself. Slides originated from http://teach.github.com/articles/course-slides/
Author: https://twitter.com/matthewmccull
Managing JavaScript projects in a MonoRepo
(Zacky Pickholz)
Managing a large front end project with multiple npm packages can be overwhelming sometimes. During this session we cover popular tools that help us maintain this project much more easily.
Git is a distributed revision control system that is widely used in the software development industry. The presentation was used in a lecture delivered in BITS-Pilani, India. The lecture served as a basic crash course on Git.
First, it sets off with a guide to install and configure git on various platforms.
Then, the basic working concepts of Git are explained.
This is followed by a detailed step-by-step guided demonstration of a sample workflow in Git.
Afterwards, Some auxillary commands that are frequently used are discussed briefly.
Finally, basic concepts of branching and merging are detailed.
The presentation ends with a few possible merge conflicts that occur in Git.
Version Control History and Git BasicsSreedath N S
A 45 minutes presentation slides on Version Control History and Git Basics by
1. Sreedath N S, Devops Engineer, Zesty Beanz Technologies Pvt. Ltd. http://in.linkedin.com/in/sreedathnamangalam
2. Fahad Basheer, Cloud Computing Consultant, Zesty Beanz Technologies Pvt. Ltd. http://in.linkedin.com/in/fahadpv
http://www.zbeanztech.com/
Do you know the basics of Git but wonder what all the hype is about? Do you want the ultimate control over your Git history? This tutorial will walk you through the basics of committing changes before diving into the more advanced and "dangerous" Git commands.
Git is an open source, distributed version control system used to track many different projects. You can use it to manage anything from a personal notes directory to a multi-programmer project.
This tutorial provides a short walk through of basic git commands and the Git philosophy to project management. Then we’ll dive into an exploration of the more advanced and “dangerous” Git commands. Watch as we rewrite our repository history, track bugs down to a specific commit, and untangle commits into an LKML-worthy patchset.
GitHub is a Git repository hosting service, but it adds many of its own features. While Git is a command line tool, GitHub provides a Web-based graphical interface. It also provides access control and several collaboration features, such as a wikis and basic task management tools for every project.
Presentation on the utility of git/GitHub for making scientific research findable, accessible, interoperable, and reusable.
Also includes a tutorial to the most essential features of git/GitHub.
Introduction to Git & GitHub.
Agenda:
- What’s a Version Control System?
- What the heck is Git?
- Some Git commands
- What’s about GitHub?
- Git in Action!
Through this tutorial, you can learn Git & GitHub fundamentals very easily. I have explained both theory and practical. I hope you will enjoy it. Happy Git.!!
Basic Introduction to Git and Github. Covers the basic work flow of init, clone, add, commit and push. Other commands like git remote, git pull etc are briefly touched.
Version Control History and Git BasicsSreedath N S
A 45 minutes presentation slides on Version Control History and Git Basics by
1. Sreedath N S, Devops Engineer, Zesty Beanz Technologies Pvt. Ltd. http://in.linkedin.com/in/sreedathnamangalam
2. Fahad Basheer, Cloud Computing Consultant, Zesty Beanz Technologies Pvt. Ltd. http://in.linkedin.com/in/fahadpv
http://www.zbeanztech.com/
Do you know the basics of Git but wonder what all the hype is about? Do you want the ultimate control over your Git history? This tutorial will walk you through the basics of committing changes before diving into the more advanced and "dangerous" Git commands.
Git is an open source, distributed version control system used to track many different projects. You can use it to manage anything from a personal notes directory to a multi-programmer project.
This tutorial provides a short walk through of basic git commands and the Git philosophy to project management. Then we’ll dive into an exploration of the more advanced and “dangerous” Git commands. Watch as we rewrite our repository history, track bugs down to a specific commit, and untangle commits into an LKML-worthy patchset.
GitHub is a Git repository hosting service, but it adds many of its own features. While Git is a command line tool, GitHub provides a Web-based graphical interface. It also provides access control and several collaboration features, such as a wikis and basic task management tools for every project.
Presentation on the utility of git/GitHub for making scientific research findable, accessible, interoperable, and reusable.
Also includes a tutorial to the most essential features of git/GitHub.
Introduction to Git & GitHub.
Agenda:
- What’s a Version Control System?
- What the heck is Git?
- Some Git commands
- What’s about GitHub?
- Git in Action!
Through this tutorial, you can learn Git & GitHub fundamentals very easily. I have explained both theory and practical. I hope you will enjoy it. Happy Git.!!
Basic Introduction to Git and Github. Covers the basic work flow of init, clone, add, commit and push. Other commands like git remote, git pull etc are briefly touched.
How to get involved with an open source project using github. Shows the process of forking and cloning, a bit of a git primer, and how to submit pull requests. Also how to approach and contribute to an open source project.
Durante toda a nossa carreira seremos obrigados a controlar os nossos códigos e os nossos processos, esse mini-curso será um exercício de imersão quando o assunto é controle de versão.
Venha aprender tudo sobre Git/GitHub do Clone ao Gerenciamento de projetos.
I have evidence that using git and GitHub for documentation and community doc techniques can give us 300 doc changes in a month. I’ve bet my career on these methods and I want to share with you.
Git 101 - Crash Course in Version Control using GitGeoff Hoffman
Find out why more and more developers are switching to Git - distributed version control. This intro to Git covers the basics, from cloning to pushing for beginners.
Introduction to Git/Github - A beginner's guideRohit Arora
Introduction to Git/Github - A beginner's guide
Agenda:
Installing Git
Introduction to Version Control
Git Basics
Creating a new local Git repository
Cloning a Git repository
Making use of Git commit history
Reverting files to previous states
Creating a Github Repository
Adding, Committing & Pushing changes
Branching
Merging Branches
Sending Pull Requests
Conflict Resolution
and 3 Exercises
This is introduction to Git, distributed version control system. You will learn about git history, reasons behind its invention, design considerations, internal structure and see how to use git for your projects.
CocoaPods talk given at the RubyMotion Inspect 2013 conference.
There is another version that does not include speaker notes available at: https://www.slideshare.net/alloy020/ruby-motion-inspect-2013-without-notes-18676749
The videos that were shown on slide 5 and 6 are available at: https://vimeo.com/63891717 & https://vimeo.com/63891716.
Go After 4 Years in Production - QCon 2015Travis Reeder
Being one of the first companies (Iron.io) to use Go in production, the first to publicly hire Go developers and organizers of the largest Go meetup in the world, Travis has a unique perspective on the language and the community around it. Since we started using it, it has become one of the fastest growing languages and is being used in almost all startups (and non-startups) in some way or another. After making the switch from Ruby to Go - there’s plenty to be said after 4 years. A discussion on performance, memory, concurrency, reliability, and deployment are key to exploring Go and it’s value in Production. See how it’s worked for Iron.io, strategies for finding talent and explore the community.
"Puppet at GitHub / ChatOps" from PuppetConf 2012, by Jesse Newland
Video of "Puppet at GitHub": http://bit.ly/WVS3vQ
Learn more about Puppet: http://bit.ly/QQoAP1
Abstract: Ops at GitHub has a unique challenge - keeping up with the rabid pace of features and products that the GitHub team develops. In this talk, we'll focus on tools and techniques we use to rapidly and confidently ship infrastructure changes/features with Puppet using Puppet-Rspec, CI, Puppet-Lint, branch puppet deploys, and Hubot.
Speaker Bio: Jesse Newland does Ops at GitHub. His favorite hobby is SPOF wack-a-mole, followed closely by guitar and piano. Prior to GitHub, Jesse was the CTO at Rails Machine where he ran a large private cloud and managed several hundred production Ruby on Rails applications using Puppet. To the delight and/or chagrin of the Puppet community, Jesse is to blame for Moonshine, the Ruby DSL for Puppet before Puppet had a Ruby DSL.
Silicon Valley Ruby on Rails Meetup - December 10th, 2013
OWASP Top 10 and Securing Rails
An introduction to the OWASP Top 10 and how to use it and other tools to secure your Rails code.
Timothee Boucher, founder of FlickMunk.com and winner of the TechCrunch Disrupt Hackathon.
FlickMunk shows you your local movie showtimes in the simplest way, by aggregating the information from your local theaters and making some smart decisions for you.
The problem for startups has always been producing more software faster. We've gained a ton of wisdom about this problem while cranking out our largest frontend product -- Backlot. We will share much of what we've learned about building beautiful UIs and the APIs that power them at an alarming rate. Learn about things like standalone views, our take on cross-browser woes, the best of CSS3, SASS, thin client best practices, and client side unit testing. We'd love to show you a couple of fun tools we've open-sourced along the way: shoulda.js and livecss.
How I Learned to Stop Worrying and Love the Cloud - Wesley Beary, Engine YardSV Ruby on Rails Meetup
Wesley Beary: Cloud computing scared the crap out of me - the quirks and nightmares
of provisioning computing and storage on AWS, Terremark, Rackspace,
etc - until I took the bull by the horns. Let me now show you how I
tamed that bull.
Learn how to easily get started cloud computing with fog. It gives you
the reins within any Ruby application or script. If you can control
your infrastructure choices, you can make better choices in
development and get what you need in production.
You'll get an overview of fog and concrete examples to give you a head
start on your own provisioning workflow.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
11. Originally we just wanted to make a git hosting site.
In fact, that was the first tagline.
12. git repository hosting
git repository hosting.
That’s what we wanted to do: give us and our friends a place to share git repositories.
13. a brief
history
let’s start with a brief history
14. It’s not easy to setup a git repository. It never was.
But back in 2007 I really wanted to.
15. I had seen Torvalds’ talk on YouTube about git.
But it wasn’t really about git - it was more about distributed version control.
It answered many of my questions and clarified DVCS ideas.
I still wasn’t sold on the whole idea, and I had no idea what it was good for.
16. CVS
is stupid
But when Torvalds says “CVS is stupid”
17. and so are
you
“and so are you,” the natural reaction for me is...
19. At the time the biggest and best free hosting site was repo.or.cz.
20. Right after I had seen the Torvalds video, the god project was posted up on repo.or.cz
I was interested in the project so I finally got a chance to try it out with some other people.
21. Namely this guy, Tom Preston-Werner.
Seen here in his famous “I put ketchup on my ketchup” shirt.
22. I managed to make a few contributions to god before realizing that repo.or.cz was not different.
git was not different.
Just more of the same - centralized, inflexible code hosting.
23. This is what I always imagined.
No rules. Project belongs to you, not the site. Share, fork, change - do what you want.
Give people tools and get out of their way. Less ceremony.
24. So, we set off to create our own site.
A git hub - learning, code hosting, etc.
28. Unleash Your Code
Join 500,000 coders with
over 1,500,000 repositories
What’s special about GitHub is that people use the site in spite of git.
Many git haters use the site because of what it is - more than a place to host
git repositories, but a place to share code with others.
30. 2008 january
We launched the beta in January at Steff’s on 2nd street in San Francisco’s SOMA district.
The first non-github user was wycats, and the first non-github project was merb-core.
They wanted to use the site for their refactoring and 0.9 branch.
31. 2008 april
A few short months after that we launched to the public.
32. Along the way we managed to pick up Scott Chacon, our VP of R&D
48. the web site
As everyone knows, a web “site” is really a bunch of different components.
Some of them generate and deliver HTML to you, but most of them don’t.
Our site consists of four major code “frameworks” or “apps”
53. rails
We use Ruby on Rails 2.2.2 as our web framework.
It’s kept up to date with all the security patches and includes custom patches we’ve added
ourselves, as well as patches we’ve cherry-picked from more recent versions of Rails.
54. rails
GitHub is about 20,000 lines of Rails code, not counting Rails itself, plugins, or gems.
55. We found out Rails was moving to GitHub in March 2008, after we had reached out to
them and they had turned us down.
So it was a bit of a surprise.
74. We badly wanted this, but didn’t want to invest the time upgrading.
So using a few open source libraries we’ve wrapped our Rails 2.2.2 instance in Rack.
75. Now we can use awesome Rack middleware like Rack::Bug in GitHub
76. Coders created and submitted dozens of Rack middleware for the Coderack competition last year.
I was a judge so I got the see the submissions already. Some of my favorite
were
82. unicorn
- 0 downtime deploys
- protects against bad rails startup
- migrations handled old fashioned way
83. nginx
For serving static content and slow clients, we use nginx
nginx is pretty much the greatest http server ever
it’s simple, fast, and has a great module system
96. smoke
Kinda.
Eventually we needed to move of our git repositories off of our web servers
Today our HTTP servers are distinct from our git servers. The two communicate using smoke
97. smoke
“Grit in the cloud”
Instead of reading and writing from the disk, Grit makes Smoke calls
The reading and writing then happens on our file servers
99. bert-rpc
bert : erlang ::
json : javascript
BERT is an erlang-based protocol
BERT-RPC is really great at dealing with large binaries
Which is a lot of what we do
100. bert-rpc
we have four file servers, each running bert-rpc servers
our front ends and job queue make RPC calls to the backend servers
103. chimney
We have a proprietary library called chimney
It routes the smoke. I know, don’t blame me.
104. chimney
All user routes are kept in Redis
Chimney is how our BERT-RPC clients know which server to hit
It falls back to a local cache and auto-detection if Redis is down
105. chimney
It can also be told a backend is down.
Optimized for connection refused but in reality that wasn’t the real problem - timeouts were
106. proxymachine
All anonymous git clones hit the front end machines
the git-daemon connects to proxymachine, which uses chimney to proxy your
connection between the front end machine and the back end machine (which holds
the actual git repository)
very fast, transparent to you
108. ssh
Sometimes you need to access a repository over ssh
In those instances, you ssh to an fe and we tunnel your connection to
the appropriate backend
To figure that out we use chimney
123. solr
Solr is basically an HTTP interface on top of Lucene. This makes it pretty simple
to use in your code.
We use solr because of its ability to incrementally add documents to
an index.
124. Here I am searching for my name in source code
125. solr
We’ve had some problems making it stable but luckily the guys at Pivotal
have given us some tips
Like bumping the Java heap size.
Whatever that means
131. fragments
Formerly we invalidated most of our fragments using a generation scheme,
where you put a number into a bunch of related keys and increment it
when you want all those caches to be missed (thus creating new cache
entries with fresh data)
132. fragments
But we had high cache eviction due to low ram and hardware constraints, and found
that scheme did more harm than good.
We also noticed some cached data we wanted to remain forever was being evicted due
to the slabs with generational keys filling up fast
133. page
We cache entire pages using nginx’s memcached module
Lots of HTML, but also other data which gets hit a lot and changes rarely:
134. page
- network graph json
- participation graph data
Always looking to stick more into page caches
135. object
We do basic object caching of ActiveRecord objects such as
repositories and users all over the place
Caches are invalidated whenever the objects are saved
136. associations
We also cache associations as arrays of IDs
Grab the array, then do a get_multi on its contents to get a list of objects
That way we don’t have to worry about caching stale objects
141. walker
For most big apps, you need to write a caching layer
that knows your business domain
Generic, catch-all caching libraries probably won’t do
152. sha asset id
Instead of using timestamps for asset ids, which may end up hitting the disk
multiple times on each request, we set the asset id to be the sha of the last commit
which modified a javascript or css file
156. bundling
google’s closure compiler for javascript
we don’t use the most aggressive setting because it means changing
your javascript to appease the compression gods,
which we haven’t committed to yet
157. scripty 301
Again, for most of these tricks you need to really pay
attention to your app.
One example is scriptaculous’ wiki
158. scripty 301
When we changed our wiki URL structure, we setup dynamic 301 redirects
for the old urls.
Scriptaculous’ old wiki was getting hit so much we put the redirect into nginx itself -
this took strain off our web app and made the redirects happen almost instantly
159. ajax loading
We also load data in via ajax in many places.
Sometimes a piece of information will just take too long to retrieve
In those instances, we usually load it in with ajax
160.
161.
162. If Walker sees that it doesn’t have all the information it needs, it kicks off a job
to stick that information in memcached.
163. We then periodically hit a URL which checks if the information is in memcached or not.
If it is, we get it and rewrite the page with the new information.
180. test unit
We mostly use Ruby’s test/unit.
We’ve experimented with other libraries including test/spec, shoulda, and RSpec, but in the end
we keep coming back to test/unit
181. git fixtures
As many of our fixtures are git repositories, we specify in the test what sha
we expect to be the HEAD of that fixture.
This means we can completely delete a git repository in one test, then have it back in
pristine state in another. We plan to move all our fixtures to a similar git-system in the future.
190. staging
We also always deploy the current branch to staging
This means you can be working on your branch, someone else can be working on theirs,
and you don’t need to worry about reconciling the two to test out a feature
One of the best parts of Git
193. security@
github.com
we get weekly emails to our security email (that people find on the security page)
and people are always grateful when we can reassure them or a answer their question
194. regular audits
if you can, find a security consultant to poke your site for XSS vulnerabilities
having your target audience be developers helps, too