This document summarizes key concepts of Git including snapshots, histories as sequences of snapshots, parallel universes/histories, and basic Git commands like init, add, commit, branch, checkout, merge, rebase, remote repositories, and free hosting services. The document uses diagrams and examples to explain how Git conceptually implements versions as snapshots and allows managing parallel software histories through branches.
Short introduction about vcs & git usage.
Aimed to introduce concept of version control system and git to people who didn't used git or vcs yet. Doesn't introduce deep part of git or operating policy for git. Just focus on simple introduction about main functionality and abstracted internal design.
Describe how to contribute to open source projects.
Provide example process using two hot open source project, linux and AOSP(Android Open Source Project)
Git is a revision control system that is used for many Open Source projects. Having a basic understanding of Git is essential to being able to join an Open Source project and become a contributor. It’s also super useful for many other activities! This talk will explore the basics of Git, assuming no existing background experience. Via analogies to other, familiar technologies, the basic principles of using Git will be explained in an approachable, understandable fashion. People who attend this talk should come away ready to make an initial contribution to an Open Source project, and will leave with a list of additional resources to explore to learn more.
Short introduction about vcs & git usage.
Aimed to introduce concept of version control system and git to people who didn't used git or vcs yet. Doesn't introduce deep part of git or operating policy for git. Just focus on simple introduction about main functionality and abstracted internal design.
Describe how to contribute to open source projects.
Provide example process using two hot open source project, linux and AOSP(Android Open Source Project)
Git is a revision control system that is used for many Open Source projects. Having a basic understanding of Git is essential to being able to join an Open Source project and become a contributor. It’s also super useful for many other activities! This talk will explore the basics of Git, assuming no existing background experience. Via analogies to other, familiar technologies, the basic principles of using Git will be explained in an approachable, understandable fashion. People who attend this talk should come away ready to make an initial contribution to an Open Source project, and will leave with a list of additional resources to explore to learn more.
Target audience: intermediate, beginner
a quick slide for users who work with "git", but not familiar with it.
Outline
- What is "git" ?
- Life Cycle
- How does git work?
- Better practice?
- Working with other?
- Pull, Push, Merge, behind the scene
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.
Tracking huge files with Git LFS (GlueCon 2016)Tim Pettersen
These are the slides from Tim Pettersen's (@kannonboy) presentation entitled "Tracking huge files with Git LFS" at GlueCon 2016 in Broomfield, Colorado. The video is available at https://www.youtube.com/watch?v=iJ3hXuEVKAc
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!
GitGot: The Swiss Army Chainsaw of Git Repo ManagementJohn Anderson
GitGot is a Perl-based tool for batch management of collections of git repos. It has a number of interesting features and acts as a force multiplier when dealing with a large varied collection of repositories. My talk will cover why you would want to use GitGot as well as how to use it effectively.
Target audience: intermediate, beginner
a quick slide for users who work with "git", but not familiar with it.
Outline
- What is "git" ?
- Life Cycle
- How does git work?
- Better practice?
- Working with other?
- Pull, Push, Merge, behind the scene
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.
Tracking huge files with Git LFS (GlueCon 2016)Tim Pettersen
These are the slides from Tim Pettersen's (@kannonboy) presentation entitled "Tracking huge files with Git LFS" at GlueCon 2016 in Broomfield, Colorado. The video is available at https://www.youtube.com/watch?v=iJ3hXuEVKAc
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!
GitGot: The Swiss Army Chainsaw of Git Repo ManagementJohn Anderson
GitGot is a Perl-based tool for batch management of collections of git repos. It has a number of interesting features and acts as a force multiplier when dealing with a large varied collection of repositories. My talk will cover why you would want to use GitGot as well as how to use it effectively.
(Live) build and run golang web server on android.aviSeongJae Park
Presented from gdg devfair 2014 and gdg korea golang seoul meetup 2015.
Added explanation about go 1.4 official android support a little from gdg korea golang seoul meetup presentation.
Deep dark-side of git: How git works internallySeongJae Park
Describe how git works internally using small and perfect plumbing commands.
The slide have been used at GDG DevFest 2014 and SOSCON 2014.
The slide can be updated later. And, the latest version would always be provided from this page always.
Git Anti-Patterns: How To Mess Up With Git and Love it AgainLemi Orhan Ergin
Git is one of the most powerful tool in developers' toolbox. If you use it correctly, it dramatically increases productivity of developers and eliminates the waste products continuously. Developers cultivate a development culture on top Git most of the time.
It's powerful but its power is untamed. Many teams fall into several traps of misusing commands and therefore feel uncomfortable while using Git. We mess up Git history, the codebase and the whole preferred branching strategy in seconds. We use branches, merge/rebase strategies, creating commits in wrong ways. Even we never take committing paradigms into account while using Git.
As a software craftsman, I've been using Git for years and I've already educated Git to hundreds of developers in all levels. I'm so lucky; I had a chance to experience huge amount of anti-patterns in time. In this talk, I will talk about what those anti-patterns are and what should we do in order not to fall into them.
You already know how to use “git status”, “git push”, and “git add” for your personal projects. You know how to work on a team project with git version control. How do you achieve the next level of git mastery and become as productive as possible? Mistakes happen very frequently when coding. Sometimes they can be terrifying mistakes. You’ll learn git commands to un-do your coding mistakes effortlessly. How do you re-order, edit, remove, and squash commits? You’ll understand the differences between all the "git r*” commands: "git rebase", "git revert", "git reset", and "git reflog" and know when and why to use them. We’ll cover how to set up your git environment for a productive workflow, different ways to undo your mistakes in git, and finally, different ways to automate an entire git workflow.
These are the slides for a talk that I gave at PyTN 2015 on a Sunday morning.
Biscuit: an operating system written in goSeongJae Park
Biscuit is a monolithic operating system kernel that is written in Go. This talk introduces the kernel and demonstrate how to build, install, and analyze the code.
An Introduction to the Formalised Memory Model for Linux KernelSeongJae Park
Linux kernel provides executable and formalized memory model. These slides describe the nature of parallel programming in the Linux kernel and what memory model is and why it is necessary and important for kernel programmers. The slides were used at KOSSCON 2018 (https://kosscon.kr/).
Describe how Android input system designed.
Describe the ways to make input event(such as touch, key press, ...) on Android in programmatic way, not manual way.
This can be helpful for some people thinking about Android remote control or test automation.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...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.
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
10. Software Is Alive: Keeps Changing
“How To Keep Software’s Moment?”
$ ls
0213_1st.tar
0239_2nd.tar.gzip
0305_final.zip
0307_final2.alz
11. Software Is Alive: Keeps Changing
“How To Keep Software’s Moment?”
$ ls
0213_1st.tar
0239_2nd.tar.gzip
0305_final.zip
0307_final2.alz We will find a version. We always have.
http://nofilmschool.com/sites/default/files/styles/article_wide/public/interstellar.jpg?itok=PDUgBX9v
12. VCS: Version Control System
Help software history managing
Just remember, You SHOULD use it
13. CVCS vs DVCS
Centralized vs Distributed
Not detail for this time(not main focus)…
Just remember, CVCS is EVIL
14. git
Distributed Version Control System
Developed For Kernel SCM By Linus Torvalds
“Only wimps use tape backup: real men just upload their important stuff on ftp,
and let the rest of the world mirror it ;)” - Linus Torvalds
Just remember, cool programmer uses GIT
15. TL; DR
Snapshot is a moment of the universe
History is a sequence of snapshots
Parallel universes exist
http://i0.kym-cdn.com/photos/images/newsfeed/000/021/503/tldr_trollcat.jpg?1318992465
17. Snapshot
A moment of the universe
$ tar cf snapshot.tar ShinyProject/*
http://imageserver.moviepilot.com/simpsons-couch-the-simpsons-futurama-crossover-s-couch-gag-gets-weird.png?width=2213&height=1660
18. History: a Sequence Of Snapshots
$ ls snapshots/
ss.1.tar
ss.2.tar
ss.3.tar
ss.4.tar
ss.5.tar
http://vintageprintable.swivelchairmedia.com/wp-content/uploads/2011/05/Animal-Stop-motion-Cat-Running-Stop-motion-780x395.jpg
a history
19. Parallel Universes
Well known theory ;)
For detail, http://www.youtube.com/watch?v=Ywn2Lz5zmYg
20. Parallel Universes
In short, a snapshot could have multiple
parents/children
Parallel histories
22. Working, Staging, Snapshot Dirs
● Based on the snapshot concept,
○ VCS could be implemented using 3 types of
directories
■ Working, Staging, Snapshot
http://www.make-upstudio.com/files/images/trainingcenter/Large/LIndia-1-6.jpg
http://studio.maginei.com/studioimages/studio.jpg
http://venturebeat.com/wp-content/uploads/2012/05/snapshots.jpg
23. Working Directory
Sandbox for your funny work, hack, anything
Source code usually reside here
http://www.make-upstudio.com/files/images/trainingcenter/Large/LIndia-1-6.jpg
24. Staging Directory
Files to be captured in next snapshot
http://studio.maginei.com/studioimages/studio.jpg
25. Snapshot Directory
Whole snapshots reside here
Every snapshot could be identified uniquely
http://venturebeat.com/wp-content/uploads/2012/05/snapshots.jpg
26. Simple Example
$ mkdir tars; cd tars
$ echo 80 > sense_of_humor
$ cp sense_of_humor ../staging/
$ tar cf ../snapshots/1st ../staging/*
$ echo 65 > sense_of_humor
$ tar cf ../snapshots/2nd ../staging/*
$ tar xf ../snapshots/1st ./
https://pbs.twimg.com/media/B2W_L20CcAAtfGW.jpg:large
32. Branch
Pointer to latest snapshot of a history
Follows subsequent snapshots automatically
branch
‘master’
branch
‘master’
33. git branch <name>
Create a branch with <name>
Created branch follows current history
(Below code does not implement history following feature, though)
$ ln -S ./git/snapshots/<name>
./git/snapshots/<id>
34. git checkout <id or branch>
● Restore a snapshot <id> or <branch> is
pointing on working directory
● If <branch>, transit to the branch’s history
○ <branch> will follows subsequent snapshots
$ tar xf ./git/snapshots/<id> ./
36. Parallel Universes
Well known theory ;)
For detail, http://www.youtube.com/watch?v=Ywn2Lz5zmYg
37. Parallel Universes
In short, a snapshot could have multiple
parents/children
Parallel histories
38. Parallel Universes
In short, a snapshot could have multiple
parents/children
Parallel histories
Parallel history 1
39. Parallel Universes
In short, a snapshot could have multiple
parents/children
Parallel histories
Parallel history 1
Parallel history 2
40. Parallel Universes
In short, a snapshot could have multiple
parents/children
Parallel histories
Parallel history 1
Parallel history 2
Parallel history 3
43. “Wait, I did something wrong!”
Past can’t be fixed(Available, actually… though not recommended)
http://therecordingrevolution.com/wordpress/wp-content/uploads/2011/08/mistakes.gif
44. “Wait, I did something wrong!”
Past can’t be fixed(Available, actually… though not recommended)
Go back and start again from new parallel
universe(no time-machine paradox!)
http://d36xcvrkegf0f1.cloudfront.net/images/worlds/2755/HomerTimeTravels.jpg
49. git merge <other branch>
Create new child snapshot of
Currently checked out(HEAD) snapshot and
<other branch>
branch B
branch A
(HEAD)
$ git merge branch_Br
50. git merge <other branch>
Create new child snapshot of
Currently checked out(HEAD) snapshot and
<other branch>
branch A
(HEAD)
branch B
$ git merge branch_Br
$
51. Topic Branch
New branch for every new topic coding
branch
topic1
branch
topic2
branch
master
52. Topic Branch
New branch for every new topic coding
New topic could be progressed parallel easily
branch
topic1
branch
topic2
branch
master
53. Topic Branch
New branch for every new topic coding
New topic could be progressed parallel easily
It could be discarded or merged easily
branch
topic1
branch
topic2
branch
master
55. Topic Branch: Scenario
1. New feature required
a. Create a topic branch
branch
topic1
branch
master
56. Topic Branch: Scenario
a. Create a topic branch and work on it
branch
topic1
1. New feature required
branch
master
57. Topic Branch: Scenario
1. New feature required
a. Create a topic branch and work on it
2. Critical bug found
a. Create a topic branch
branch
topic2
branch
topic1
branch
master
58. Topic Branch: Scenario
1. New feature required
a. Create a topic branch and work on it
2. Critical bug found
a. Create a topic branch and work on it
branch
topic1
branch
topic2
branch
master
59. Topic Branch: Scenario
1. New feature required
a. Create a topic branch and work on it
2. Critical bug found
a. Create a topic branch and work on it
3. Merge finished branch
branch
topic1
branch
topic2
branch
master
60. git rebase --onto <new base> <from> <to>
Apply changes from <from> to <to> on <new
base> and checkout applied snapshot
a b c d e f
branch “from”
g h branch “to”
branch
“new_base”
61. git rebase --onto <new base> <from> <to>
Apply changes from <from> to <to> on <new
base> and checkout applied snapshot
a b c d e f
g h branch “to”
branch
“new_base”
branch “from”
h’
63. Remote Repository
● Just Other’s snapshots directory
● It could be connected via
○ file system
○ http protocol
○ https protocol
○ ssh protocol
○ git protocol
64. git clone <remote repo path>
Just fetch <remote repo> and checkout master
branch of it
The <remote repo> be named as ‘origin’ by
default
65. git fetch <remote>
Fetch <remote>’s snapshots to local repo
<remote> is ‘origin’ by default
cp <remote>/.git/snapshots/* ./git/snapshots/
68. Free GIT Repo Hosting Service
● GitHub
○ Popular service
○ Money for private repository
● Bitbucket
○ Popular, though less than GitHub
○ Free for restricted private repositories
● GitLab
○ GitHub like rich-features
○ Installable on your private machine
○ No limitation at all
69. Thank you :)
http://jeancharpentier.files.wordpress.com/2012/02/capture-plein-c3a9cran-01022012-230955.jpg
70. This work by SeongJae Park is licensed under the
Creative Commons Attribution-ShareAlike 3.0 Unported
License. To view a copy of this license, visit http:
//creativecommons.org/licenses/by-sa/3.0/.