- A markup language to display content
- Unlike programming languages, you can’t use it to perform logic
- Composed of tags
- Not case-sensitive or white space-sensitive
- Reads top-down
<head>tag- Metadata about the document
| <!-- link CSS file --> | |
| <link rel="stylesheet" type="text/css" href="FILE/PATH.css"> | |
| <!-- anchor tag to add a link --> | |
| Click <a href="https://LINK">here</a> | |
| <!-- anchor tag to send email --> | |
| <a href="mailto:EMAIL_ADDRESS">TEXT</a> | |
| <!-- open link in a new tab --> |
| <!-- How are you organizing your CSS? --> | |
| <style> | |
| /* What isn't unique between box-1 and box-2? */ | |
| .box-1 { | |
| color: blue; | |
| float: left; | |
| width: 500px; | |
| } | |
| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <style> | |
| .image { | |
| background-image: url("img/1.jpg"); | |
| height: 500px; | |
| width: 500px; | |
| } |
| var text = document.getElementById('text'); | |
| var small = document.getElementById('small'); | |
| var large = document.getElementById('large'); | |
| small.onclick = function() { | |
| text.style.fontSize = '12px'; | |
| } | |
| large.onclick = function() { | |
| text.style.fontSize = '20px'; |
| <!DOCTYPE html> | |
| <html ng-app> | |
| <head></head> | |
| <body> | |
| <div> | |
| <label>Name:</label> | |
| <input type="text" ng-model="yourName" placeholder="What's your name?"></input> | |
| <h1>Hello {{yourName}}!</h1> | |
| </div> | |
| <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script> |
| // Assumptions: | |
| // All input characters that are uppercase should remain toUpperCase | |
| // Non-alphabetical characters should remain the same | |
| // Only check for non-uppercase vowels to capitalize | |
| const vowels = ['a', 'e', 'i', 'o', 'u']; | |
| // Helper function | |
| const isVowel = char => vowels.includes(char); |
| // Here I'll demonstrate an easy way to optimize a for loop | |
| // Here, I'm setting the for loop's condition as i < stringToPrint.length | |
| // Totally valid, but each time I loop back to the beginning, I check whether | |
| // the condition is true, which means I'll have to re-evaluate the value | |
| // of stringToPrint.length, which is unchanging. This is inefficient, because | |
| // I'll have to do this as many times as the string is long. | |
| const originalLoop = () => { | |
| const stringToPrint = 'Hello world'; |
Here's a rundown of some of the talks at Oscon 2017. Some slides are available here.
Lara Hogan, Co-founder of Wherewithall
Teams go through Tuckman's Stages of Group Development
Friction is normal in early stages, but can act as a distraction and a team needs to resolve differences in order to move projects forward