Format literally everything

This commit is contained in:
Cassidy Williams
2022-10-23 23:26:41 -05:00
parent ff9f16105e
commit 0d4e70c5ee
45 changed files with 11569 additions and 11706 deletions

View File

@@ -1,5 +1,5 @@
---
import '../global.css';
import "../global.css";
export interface Props {
title: string;
@@ -7,7 +7,7 @@ export interface Props {
image?: string;
}
const { title, description, image = '/placeholder-social.jpg' } = Astro.props;
const { title, description, image = "/placeholder-social.jpg" } = Astro.props;
---
<!-- Global Metadata -->
@@ -43,4 +43,3 @@ const { title, description, image = '/placeholder-social.jpg' } = Astro.props;
href="https://fonts.googleapis.com/css?family=Roboto+Mono"
rel="stylesheet"
/>

View File

@@ -1,28 +1,28 @@
<script is:inline>
let colors = ['#24d05a', '#eb4888', '#10a2f5', '#e9bc3f'];
let colors = ["#24d05a", "#eb4888", "#10a2f5", "#e9bc3f"];
function getRandomColor() {
return colors[Math.floor(Math.random() * colors.length)];
}
function getRandomColor() {
return colors[Math.floor(Math.random() * colors.length)];
}
function setRandomLinkColor() {
Array.from(document.getElementsByTagName('a')).forEach((e) => {
e.style.color = getRandomColor();
});
}
function setRandomLinkColor() {
Array.from(document.getElementsByTagName("a")).forEach((e) => {
e.style.color = getRandomColor();
});
}
function setColorHoverListener() {
Array.from(document.querySelectorAll('a, button')).forEach((e) => {
e.addEventListener('mouseover', setRandomLinkColor);
});
}
function setColorHoverListener() {
Array.from(document.querySelectorAll("a, button")).forEach((e) => {
e.addEventListener("mouseover", setRandomLinkColor);
});
}
(function () {
(function () {
setRandomLinkColor();
setColorHoverListener();
setInterval(() => {
setRandomLinkColor();
setColorHoverListener();
setInterval(() => {
setRandomLinkColor();
}, 3000);
})();
</script>
}, 3000);
})();
</script>

View File

@@ -4,21 +4,26 @@ const { slug, title, tags, description, date } = Astro.props;
---
<li class="post">
<a href={`/post/${slug}/`} class="title">{title}</a>
<time datetime={date}>
{new Date(date).toLocaleDateString('en-us', {
year: 'numeric',
month: 'short',
day: 'numeric',
})}
</time>
<br />
{description && <span class="excerpt">{description}</span>}
<div>
{tags && tags.map(tag => (
<>
<a class="tag" href={`/tag/${tag}`}>#{tag}</a>
</>
))}
</div>
</li>
<a href={`/post/${slug}/`} class="title">{title}</a>
<time datetime={date}>
{
new Date(date).toLocaleDateString("en-us", {
year: "numeric",
month: "short",
day: "numeric",
})
}
</time>
<br />
{description && <span class="excerpt">{description}</span>}
<div>
{
tags &&
tags.map((tag) => (
<a class="tag" href={`/tag/${tag}`}>
#{tag}
</a>
))
}
</div>
</li>

View File

@@ -1,16 +1,20 @@
---
import Post from '../components/Post.astro';
import Post from "../components/Post.astro";
const { allPosts } = Astro.props;
let posts = allPosts.sort(() => 0.5 - Math.random()).slice(0, 3)
let posts = allPosts.sort(() => 0.5 - Math.random()).slice(0, 3);
---
<content>
<ul>
{posts.map(
({url, frontmatter: { description, slug, title, tags, added: date }}) => (
<Post {url} {description} {date} {slug} {title} {tags} />
))}
</ul>
</content>
<ul>
{
posts.map(
({
url,
frontmatter: { description, slug, title, tags, added: date },
}) => <Post {url} {description} {date} {slug} {title} {tags} />
)
}
</ul>
</content>

3
src/config.js Normal file
View File

@@ -0,0 +1,3 @@
export const SITE_TITLE = "Cassidy Williams";
export const SITE_DESCRIPTION =
"Cassidy Williams, Software Engineer and Developer Advocate in Chicago.";

View File

@@ -1,2 +0,0 @@
export const SITE_TITLE = 'Cassidy Williams';
export const SITE_DESCRIPTION = 'Cassidy Williams, Software Engineer and Developer Advocate in Chicago.';

View File

@@ -4,36 +4,36 @@
License MIT: https://github.com/HermanMartinus/bearblog/blob/master/LICENSE.md
*/
:root {
--white: #fff;
--black: #000;
--gray: #8b8b8b;
--highlight: #e5ffc3;
--red: #e4002b;
--green: #24d05a;
--pink: #eb4888;
--blue: #10a2f5;
--yellow: #e9bc3f;
--white: #fff;
--black: #000;
--gray: #8b8b8b;
--highlight: #e5ffc3;
--red: #e4002b;
--green: #24d05a;
--pink: #eb4888;
--blue: #10a2f5;
--yellow: #e9bc3f;
}
::selection {
background-color: var(--highlight);
color: var(--black);
background-color: var(--highlight);
color: var(--black);
}
html,
body {
margin: auto;
padding: 20px;
max-width: 65ch;
background-color: #fff;
word-wrap: break-word;
overflow-wrap: break-word;
line-height: 1.8;
color: var(--black);
margin: auto;
padding: 20px;
max-width: 65ch;
background-color: #fff;
word-wrap: break-word;
overflow-wrap: break-word;
line-height: 1.8;
color: var(--black);
}
html,
body,
button {
font-family: "Roboto Mono", monospace;
font-family: "Roboto Mono", monospace;
}
h1,
h2,
@@ -43,7 +43,7 @@ h5,
h6,
strong,
b {
color: var(--black);
color: var(--black);
}
body.dark-mode,
@@ -51,115 +51,116 @@ body.dark-mode button,
body.dark-mode .go-home,
button.dark-mode,
button.dark-mode button {
background: var(--black);
color: var(--white);
background: var(--black);
color: var(--white);
}
a {
color: var(--pink);
color: var(--pink);
}
nav {
text-align: center;
text-align: center;
}
nav a {
margin: 25px 0;
margin: 25px 0;
}
nav a:not(:last-child) {
padding: 0 12px 0 0;
padding: 0 12px 0 0;
}
ul {
list-style-type: none;
padding: unset;
list-style-type: none;
padding: unset;
}
.post {
margin: 0 0 30px 0;
margin: 0 0 30px 0;
}
.post .title {
font-size: 1.3em;
font-size: 1.3em;
}
.tag {
margin-right: 20px;
color: var(--gray);
font-size: 0.8rem;
display: inline-block;
margin-right: 20px;
color: var(--gray);
font-size: 0.8rem;
}
.tag:hover {
cursor: pointer;
font-weight: bold;
cursor: pointer;
font-weight: bold;
}
.tag-home {
margin-right: 10px;
color: var(--gray);
margin-right: 10px;
color: var(--gray);
}
textarea {
width: 100%;
font-size: 16px;
width: 100%;
font-size: 16px;
}
input {
font-size: 16px;
font-size: 16px;
}
content {
line-height: 1.6;
line-height: 1.6;
}
table {
width: 100%;
width: 100%;
}
img {
max-width: 100%;
height: auto;
max-width: 100%;
height: auto;
}
code {
padding: 2px 5px;
background-color: #f2f2f2;
padding: 2px 5px;
background-color: #f2f2f2;
}
pre {
padding: 1rem;
padding: 1rem;
}
pre > code {
all: unset;
all: unset;
}
blockquote {
border: 1px solid var(--gray);
color: var(--black);
padding: 2px 0px 2px 20px;
margin: 0px;
font-style: italic;
border: 1px solid var(--gray);
color: var(--black);
padding: 2px 0px 2px 20px;
margin: 0px;
font-style: italic;
}
h1 {
font-weight: 400;
margin: 0;
font-weight: 400;
margin: 0;
}
h2 {
color: var(--gray);
font-weight: 300;
margin: 0 0 0.5em 0;
color: var(--gray);
font-weight: 300;
margin: 0 0 0.5em 0;
}
h3 {
text-align: center;
text-align: center;
}
.header-section {
display: flex;
align-items: center;
justify-content: center;
flex-wrap: wrap;
display: flex;
align-items: center;
justify-content: center;
flex-wrap: wrap;
}
.header-frame {
max-width: 350px;
max-width: 350px;
}
ul li time {
flex: 0 0 130px;
font-style: italic;
color: var(--gray);
flex: 0 0 130px;
font-style: italic;
color: var(--gray);
}

View File

@@ -28,7 +28,7 @@ const {
margin: 0.25em 0 0;
}
hr {
border-top: 1px solid #DDD;
border-top: 1px solid #ddd;
margin: 1rem 0;
}
</style>
@@ -38,18 +38,17 @@ const {
<Header />
<main>
<article>
{heroImage && (
<img
width={720}
height={360}
src={heroImage}
alt=""
/>
)}
{heroImage && <img width={720} height={360} src={heroImage} alt="" />}
<h1 class="title">{title}</h1>
{added && <time>{added}</time>}
{updatedDate && <div>Last updated on <time>{updatedDate}</time></div>}
<hr/>
{
updatedDate && (
<div>
Last updated on <time>{updatedDate}</time>
</div>
)
}
<hr />
<slot />
</article>
</main>

View File

@@ -1,32 +1,32 @@
---
import BaseHead from '../components/BaseHead.astro';
import Header from '../components/Header.astro';
import Footer from '../components/Footer.astro';
import RandomPosts from '../components/RandomPosts.astro';
import ColorScript from '../components/ColorScript.astro';
import { SITE_TITLE, SITE_DESCRIPTION } from '../config';
import { Content as About } from './about.md';
import BaseHead from "../components/BaseHead.astro";
import Header from "../components/Header.astro";
import Footer from "../components/Footer.astro";
import RandomPosts from "../components/RandomPosts.astro";
import ColorScript from "../components/ColorScript.astro";
import { SITE_TITLE, SITE_DESCRIPTION } from "../config";
import { Content as About } from "./about.md";
const posts = (await Astro.glob('../posts/*.{md,mdx}'));
const posts = await Astro.glob("../posts/*.{md,mdx}");
// Get tags from all posts
const getTags = posts.map((post) => {
const postTags = post.frontmatter.tags;
let allTags = []
const getTags = posts
.map((post) => {
const postTags = post.frontmatter.tags;
let allTags = [];
if (postTags.length > 0) {
postTags.forEach((tag) => {
if (allTags.indexOf(tag) === -1) {
allTags.push(tag);
}
});
}
return allTags;
}).flat(1);
if (postTags.length > 0) {
postTags.forEach((tag) => {
if (allTags.indexOf(tag) === -1) {
allTags.push(tag);
}
});
}
return allTags;
})
.flat(1);
// Make the tags unique
let tags = [...new Set(getTags)];
---
<!DOCTYPE html>
@@ -44,9 +44,17 @@ let tags = [...new Set(getTags)];
<h3>View posts by tag</h3>
<p>
{tags && tags.map(tag => (
<><a class="tag-home" href={`/tag/${tag}`}>#{tag}</a>{` `}</>
))}
{
tags &&
tags.map((tag) => (
<>
<a class="tag" href={`/tag/${tag}`}>
#{tag}
</a>
{` `}
</>
))
}
</p>
</main>
<Footer />

View File

@@ -1,23 +1,22 @@
---
// Credit to @rachsmithcodes for this function
export async function getStaticPaths() {
let posts = await Astro.glob(`../../posts/*.md`);
let posts = await Astro.glob(`../../posts/*.md`);
return posts.map((post) => {
return ({
params: { slug: post.frontmatter.slug },
props: { post: post },
})
});
return posts.map((post) => {
return {
params: { slug: post.frontmatter.slug },
props: { post: post },
};
});
}
const { post } = Astro.props;
const {
Content,
frontmatter: { title, added, updated, tags, excerpt },
Content,
frontmatter: { title, added, updated, tags, excerpt },
} = post;
---
<Content />

View File

@@ -1,15 +1,17 @@
---
import BaseHead from '../components/BaseHead.astro';
import Header from '../components/Header.astro';
import Footer from '../components/Footer.astro';
import Post from '../components/Post.astro';
import ColorScript from '../components/ColorScript.astro';
import BaseHead from "../components/BaseHead.astro";
import Header from "../components/Header.astro";
import Footer from "../components/Footer.astro";
import Post from "../components/Post.astro";
import ColorScript from "../components/ColorScript.astro";
import { SITE_TITLE, SITE_DESCRIPTION } from '../config';
import { SITE_TITLE, SITE_DESCRIPTION } from "../config";
// Use Astro.glob() to fetch all posts, and then sort them by date.
const posts = (await Astro.glob('../posts/*.{md,mdx}')).sort(
(a, b) => new Date(b.frontmatter.added).valueOf() - new Date(a.frontmatter.added).valueOf()
const posts = (await Astro.glob("../posts/*.{md,mdx}")).sort(
(a, b) =>
new Date(b.frontmatter.added).valueOf() -
new Date(a.frontmatter.added).valueOf()
);
---
@@ -28,11 +30,15 @@ const posts = (await Astro.glob('../posts/*.{md,mdx}')).sort(
<main>
<content>
<ul>
{posts.map(
({url, frontmatter: { description, slug, title, tags, added: date }}) => (
<Post {url} {description} {date} {slug} {title} {tags} />
))}
</ul>
{
posts.map(
({
url,
frontmatter: { description, slug, title, tags, added: date },
}) => <Post {url} {description} {date} {slug} {title} {tags} />
)
}
</ul>
</content>
<Footer />
</main>

View File

@@ -1,10 +1,10 @@
import rss from '@astrojs/rss';
import { SITE_TITLE, SITE_DESCRIPTION } from '../config';
import rss from "@astrojs/rss";
import { SITE_TITLE, SITE_DESCRIPTION } from "../config";
export const get = () =>
rss({
title: SITE_TITLE,
description: SITE_DESCRIPTION,
site: import.meta.env.SITE,
items: import.meta.glob('./blog/**/*.md'),
items: import.meta.glob("./blog/**/*.md"),
});

View File

@@ -1,38 +1,38 @@
---
import BaseHead from '../../components/BaseHead.astro';
import Header from '../../components/Header.astro';
import Footer from '../../components/Footer.astro';
import Post from '../../components/Post.astro';
import BaseHead from "../../components/BaseHead.astro";
import Header from "../../components/Header.astro";
import Footer from "../../components/Footer.astro";
import Post from "../../components/Post.astro";
import ColorScript from "../../components/ColorScript.astro";
import { SITE_TITLE, SITE_DESCRIPTION } from '../../config';
import { SITE_TITLE, SITE_DESCRIPTION } from "../../config";
// Credit to @rachsmithcodes for helping out my lil ol brain
export async function getStaticPaths() {
let posts = await Astro.glob(`../../posts/*.md`);
const tags = posts.reduce((allTags, post) => {
const postTags = post.frontmatter.tags;
if (postTags) {
postTags.forEach((tag) => {
if (!allTags[tag]) {
allTags[tag] = [];
}
allTags[tag].push(post);
});
}
return allTags;
}, {});
let posts = await Astro.glob(`../../posts/*.md`);
const tags = posts.reduce((allTags, post) => {
const postTags = post.frontmatter.tags;
if (postTags) {
postTags.forEach((tag) => {
if (!allTags[tag]) {
allTags[tag] = [];
}
allTags[tag].push(post);
});
}
return allTags;
}, {});
return Object.keys(tags).map((t) => {
return ({
params: { tag: t },
props: { tag: tags[t] },
})
});
return Object.keys(tags).map((t) => {
return {
params: { tag: t },
props: { tag: tags[t] },
};
});
}
const { tag } = Astro.props;
const { tag: currentTag } = Astro.params;
---
<!DOCTYPE html>
@@ -49,15 +49,20 @@ const { tag: currentTag } = Astro.params;
<Header />
<main>
<content>
<h3>Posts tagged with "{currentTag}"</h3>
<h3>Posts tagged with "{currentTag}"</h3>
<ul>
{tag.map(
({url, frontmatter: { description, slug, title, tags, added: date }}) => (
<Post {url} {description} {date} {slug} {title} {tags} />
))}
</ul>
{
tag.map(
({
url,
frontmatter: { description, slug, title, tags, added: date },
}) => <Post {url} {description} {date} {slug} {title} {tags} />
)
}
</ul>
</content>
<Footer />
</main>
<ColorScript />
</body>
</html>

View File

@@ -14,31 +14,41 @@ So, not everyone likes speeches. Public speaking is the #1 most common fear out
So, here are my tips for you. Im not just saying these. When I go out and talk to a bunch of people, I think about these all the time, and it helps. So do it.
## Dont read.
You are talking to people because you have something to say. Youre talking to them because you know what the heck youre talking about. Speak from your head, not from your paper in front of you. In fact, try not to bring any paper at all, because they make shaky hands easy to spot. If you need notes, bring a clipboard or a notebook to help you out.
## Get your hair out of your face.
The strongest hairspray can fail with the right amount of sweat and nervous touching. Give the audience an unblocked view of your face and your eyes for the best engagement. Bring a hair clip or up-do it. Or shave it. Your choice.
## Take your hands out of your pockets.
Its distracting. You look nervous. If youre at a podium, put your hands at your sides or hold onto it. If youve not nothing in front of you, just keep your arms loosely at your sides unless youre making a purposeful gesture.
## Plant your feet in a comfy stance.
Nothing is more distracting than watching someone pace, rock, or fidget with their feet. Also, DO NOT cross your legs while standing. Even if you have incredible balance, youre just asking to fall over.
## Eye contact.
This is the easiest one on the list. Dont shift your eyes around, dont stare at the back wall. That advice is for high schoolers. Look at everyone in the eye. For every sentence you say, look at someone. Shift to someone nearby when you say your next sentence. If your transition from person to person is smooth and steady, everyone will feel like youve spoken to them, and spoken to them well.
## Dont touch your face.
When people make mistakes (or have their hair in their face), they touch their face a LOT. Its distracting. Some of the best speeches Ive ever heard we ruined because I saw someone scratching their face and playing with their hair. No. Stop. Dont do it.
## Take some time to recover.
If you make a mistake, dont apologize profusely, dont stammer. Audiences are very tolerant of a moment of silence. So, if you fumble, just take pause and recollect your thoughts, and then resume. Its a much more graceful approach to saying, “oh um I forgot to mention that crap so I have to go back” etc. etc.
## Tell stories.
People remember them. If you want to talk about the importance of adopting puppies, tell them about your (or a friends) experience in buying a puppy. If youre talking about best practices for putting together an event on campus, tell them about events youve hosted. Be funny, and smile with your stories. Chances are, the audience will smile back.
## Be CONFIDENT.
Public speaking isnt as much about what you say as it is how you say it. Whether the audience is 5 people or 5,000, you have a reason to be there, and to make them really listen to what youre saying. Sell yourself and your message to them. Deliver it like youre the best person in the world to do it. Speak loudly, and smile. Itll make the most boring speech more engaging.
## Have FUN!
Youre going to be awesome at this. Go and tell people your message, and be proud doing it!

View File

@@ -19,7 +19,7 @@ A trend line represents the long-term movement in time series data after other c
## Epidemiology
Early evidence relating smoking to mortality and morbidity came from observational studies employing regression analysis. In order to reduce spurious correlations when analyzing observational data, researchers usually include several variables in their regression models in addition to the variable of primary interest. For example, suppose we have a regression model in which cigarette smoking is the independent variable of interest, and the dependent variable is lifespan measured in years. Researchers might include socio-economic status as an additional independent variable, to ensure that any observed effect of smoking on lifespan is not due to some effect of education or income. However, it is never possible to include all possible confounding variables in an empirical analysis.
Early evidence relating smoking to mortality and morbidity came from observational studies employing regression analysis. In order to reduce spurious correlations when analyzing observational data, researchers usually include several variables in their regression models in addition to the variable of primary interest. For example, suppose we have a regression model in which cigarette smoking is the independent variable of interest, and the dependent variable is lifespan measured in years. Researchers might include socio-economic status as an additional independent variable, to ensure that any observed effect of smoking on lifespan is not due to some effect of education or income. However, it is never possible to include all possible confounding variables in an empirical analysis.
**Hint:** Really emphasize how impossible these confounding variables are. He'll never want to let you go!
## Finance
@@ -28,12 +28,10 @@ The capital asset pricing model:
![pic](/assets/capm.png)
...uses linear regression as well as the concept of beta for analyzing and quantifying the systematic risk of an investment. This comes directly from the beta coefficient of the linear regression model that relates the return on the investment to the return on all risky assets. The point is to be playful and work him into a desire-filled frenzy by not giving him exactly what he wants (a lower measure of the risk arising from exposure to general market movements as opposed to idiosyncratic factors)!
## Econometrics
Linear regression is the predominant empirical tool in economics. In modern econometrics, other statistical tools are frequently used, but linear regression is still the most frequently used starting point for an analysis. Estimating a linear regression on two variables can be visualized as fitting a line through data points representing paired values of the independent and dependent variables. Mention Okun's Law here and he'll be wondering, "wow, how'd she do that?"
## Environmental Science
Linear regression finds application in a wide range of environmental science applications. In Canada, the Environmental Effects Monitoring Program uses statistical analyses on fish and benthic surveys to measure the effects of pulp mill or metal mine effluent on the aquatic ecosystem. After you tell him this, he'll crave you so much that he won't know what he did to deserve you.
@@ -41,4 +39,3 @@ Linear regression finds application in a wide range of environmental science app
Driving your boyfriend crazy with linear regression application examples is a guaranteed way to make your relationship more fun, dynamic, and sexy. If you want to drive your man wild and to make him want you even more, you have to be bold, adventurous, and sexy, and to remember to keep things feeling exciting and fresh by telling him all the exotic ways that these applications can be applied.
Go get 'em, sister.

View File

@@ -13,7 +13,7 @@ So, this weekend was my first big event during my time at Venmo: BattleHack Bost
Now, I've done a lot of hackathons, on the participating, planning, and sponsoring side.
This hackathon beat almost every single one. The PayPal/Braintree team that put it together (and lovingly allowed me to join them) was so organized and well-prepared, I can't say anything negative about the event!
This hackathon beat almost every single one. The PayPal/Braintree team that put it together (and lovingly allowed me to join them) was so organized and well-prepared, I can't say anything negative about the event!
It all started with the set up the night before.
@@ -21,70 +21,69 @@ There was TONS of swag.
![pic](/assets/bh/swag2.jpg)
It felt like the swag and props were never ending. Which is a good thing.
It felt like the swag and props were never ending. Which is a good thing.
![pic](/assets/bh/swag3.jpg)
When I first heard the term, "BattleHack," I admit I was afraid it'd be a little cheesy.
But this was far from it. This hackathon was epic. Even just from prep day, I could tell that it was going to be a really smooth, impactful event.
But this was far from it. This hackathon was epic. Even just from prep day, I could tell that it was going to be a really smooth, impactful event.
So, on the day of the event, we all got to our stations early. I was in charge of the swag table. For those of you who know me well, you know just how perfect that position was for me.
Few people really appreciate good swag. I thrive on it.
So, on the day of the event, we all got to our stations early. I was in charge of the swag table. For those of you who know me well, you know just how perfect that position was for me.
Few people really appreciate good swag. I thrive on it.
![pic](/assets/bh/swag5.jpg)
From the beginning, we were loaded up with absolutely delicious food. It was actually shocking how well they fed us.
We started with bagels (with a wide variety of toppings) on the first day, and throughout the event we had a waffle bar, a grilled cheese bar, lobster rolls, clam chowder, Italian food, Asian cuisine, candy, beer, pop, juices and teas, coffee... I could actually make a whole post about the food, but we have more important things to discuss. But seriously. Well done on the food, BattleHack team.
From the beginning, we were loaded up with absolutely delicious food. It was actually shocking how well they fed us.
We started with bagels (with a wide variety of toppings) on the first day, and throughout the event we had a waffle bar, a grilled cheese bar, lobster rolls, clam chowder, Italian food, Asian cuisine, candy, beer, pop, juices and teas, coffee... I could actually make a whole post about the food, but we have more important things to discuss. But seriously. Well done on the food, BattleHack team.
![pic](/assets/bh/food.jpg)
Before we kicked off the event, Matt Hamilton (also a Venmo rep) and I struck a pose. Because you simply couldn't resist those costumes.
Before we kicked off the event, Matt Hamilton (also a Venmo rep) and I struck a pose. Because you simply couldn't resist those costumes.
![pic](/assets/bh/pose.jpg)
The room got crowded fast. This hackathon was geared towards anyone 18 or older, so we had a really wide range of people. The intros to the event were pretty standard, but well done. They talked about the importance of hacking for social good, and the structure of BattleHack (it's a global competition, you can check out their website [here](https://2014.battlehack.org/)).
The room got crowded fast. This hackathon was geared towards anyone 18 or older, so we had a really wide range of people. The intros to the event were pretty standard, but well done. They talked about the importance of hacking for social good, and the structure of BattleHack (it's a global competition, you can check out their website [here](https://2014.battlehack.org/)).
![pic](/assets/bh/crowd.jpg)
And of course, we had to talk about the prizes. Throughout the event there would be smaller prizes for Best Progress and for Best Tweet, but the big prizes for hacks consisted of PS4s, cameras, and a chance to win $100,000 after being flown out to California on PayPal/Braintree's dime.
And of course, we had to talk about the prizes. Throughout the event there would be smaller prizes for Best Progress and for Best Tweet, but the big prizes for hacks consisted of PS4s, cameras, and a chance to win $100,000 after being flown out to California on PayPal/Braintree's dime.
![pic](/assets/bh/prizes.jpg)
Once people settled down about the awesomeness of the prizes, we got to demos and rules. In order to be eligible for the big prizes, one had to use a PayPal, Braintree, or Venmo API. One could still win partner prizes from the companies Twilio, Mashery, SendGrid, and Context.io if you used their technologies. I had the pleasure of demoing the Venmo iOS SDK.
Once people settled down about the awesomeness of the prizes, we got to demos and rules. In order to be eligible for the big prizes, one had to use a PayPal, Braintree, or Venmo API. One could still win partner prizes from the companies Twilio, Mashery, SendGrid, and Context.io if you used their technologies. I had the pleasure of demoing the Venmo iOS SDK.
![pic](/assets/bh/demo.jpg)
Once demos were done, it was lunchtime. Everyone was eating and pitching ideas and putting together teams. Hackers had been able to pitch ideas on video before the event started, so some people knew what they were doing, and others were starting completely clean.
Once demos were done, it was lunchtime. Everyone was eating and pitching ideas and putting together teams. Hackers had been able to pitch ideas on video before the event started, so some people knew what they were doing, and others were starting completely clean.
Finally, just before 1PM, we had a big countdown to start. We banged the gong, and we were off! Teams quickly started sketching out ideas and setting up their stations.
Finally, just before 1PM, we had a big countdown to start. We banged the gong, and we were off! Teams quickly started sketching out ideas and setting up their stations.
Over the next few hours, Matt and I were approached several times about using the Venmo API, which was great. The PayPal/Braintree dev evangelists kept thanking us on the side for coming. They said that Venmo has been one of the most popular APIs of the entire BattleHack competition so far, and they loved having us there to help.
Over the next few hours, Matt and I were approached several times about using the Venmo API, which was great. The PayPal/Braintree dev evangelists kept thanking us on the side for coming. They said that Venmo has been one of the most popular APIs of the entire BattleHack competition so far, and they loved having us there to help.
Time went on, more food was served throughout the night. The BattleHack team brought in *professional masseuses* (holy crap, am I right?) and soon Matt's and my shift was over. We were able to leave at about 9, as long as we got back by 4AM. That was one of the things I appreciated about the planning that went into BattleHack; designated shifts aren't always thought of for the staff of hackathons.
Time went on, more food was served throughout the night. The BattleHack team brought in _professional masseuses_ (holy crap, am I right?) and soon Matt's and my shift was over. We were able to leave at about 9, as long as we got back by 4AM. That was one of the things I appreciated about the planning that went into BattleHack; designated shifts aren't always thought of for the staff of hackathons.
After a nearly sleepless night, I got back at 4 and started circling the room looking for the Best Progress award. Teams had been working hard. Some included hardware components, some were trying to use every API available. It was very impressive to see the work being done. Eventually, the team we decided had the Best Progress was FundRunner, an application that assisted those running and those donating to people running in various races for charity. It checked when certain milestones were hit using geolocation, it texted donors when their maximum donation amount was hit, it sent emails... their work so far was pretty darn solid.
After a nearly sleepless night, I got back at 4 and started circling the room looking for the Best Progress award. Teams had been working hard. Some included hardware components, some were trying to use every API available. It was very impressive to see the work being done. Eventually, the team we decided had the Best Progress was FundRunner, an application that assisted those running and those donating to people running in various races for charity. It checked when certain milestones were hit using geolocation, it texted donors when their maximum donation amount was hit, it sent emails... their work so far was pretty darn solid.
![pic](/assets/bh/progress.jpg)
Throughout the morning, Matt and I were hit up with Venmo questions. Some were pretty technical, some were simply, "why would I use Venmo over PayPal?" But overall, we were kept busy. Matt and I took notes of flaws on our end and desires on the developers' end for future reference.
Throughout the morning, Matt and I were hit up with Venmo questions. Some were pretty technical, some were simply, "why would I use Venmo over PayPal?" But overall, we were kept busy. Matt and I took notes of flaws on our end and desires on the developers' end for future reference.
Rehearsals were another big part of Sunday morning. Every team practiced their pitches (which were going to be 2 minutes long) and got feedback from the BattleHack team. This is another part of the hackathon that I appreciated and don't often see. People in general, without feedback, aren't successful without an outside perspective.
Rehearsals were another big part of Sunday morning. Every team practiced their pitches (which were going to be 2 minutes long) and got feedback from the BattleHack team. This is another part of the hackathon that I appreciated and don't often see. People in general, without feedback, aren't successful without an outside perspective.
And finally, after a lip-smacking lunch of lobster rolls and a grilled cheese bar, it was time for presentations. There were some really cool ones, and quite a few using Venmo! A few cool ones where:
And finally, after a lip-smacking lunch of lobster rolls and a grilled cheese bar, it was time for presentations. There were some really cool ones, and quite a few using Venmo! A few cool ones where:
* AgriGate, an "Etsy for farmers" that allowed farmers to post their produce for people to buy, and included a hardware component of a packing slip being printed
* Street Music is a platform that connects users to street performers to legitimize their profession and allows donation through Venmo and PayPal (they kicked off their presentation by singing, I was impressed)
* HaveKnow proves your identity for emergency rescue payments when you've lost your ID and/or wallet, and lets you pay people with PayPal/Venmo after they give you cash
* Honk is a license plate-based messaging app that allows users to send compliments and constructive criticism to drivers (sent in the form of a Venmo charge/payment)
* FundMatch is a web-based platform dedicated to efficient giving for nonprofits and allows donations through PayPal (the cool part of this one was they took in organization emails and information and parsed them into an easy-to-read form for donors to understand)
* Pothole Sonar app uses audio to enhance the awareness of mobile users to the dangerous potholes nearby and compiles pothole data
* Nome (short for "metronome") is a "git for music" where people can collaborate on music projects and donate to other musicians with Venmo
- AgriGate, an "Etsy for farmers" that allowed farmers to post their produce for people to buy, and included a hardware component of a packing slip being printed
- Street Music is a platform that connects users to street performers to legitimize their profession and allows donation through Venmo and PayPal (they kicked off their presentation by singing, I was impressed)
- HaveKnow proves your identity for emergency rescue payments when you've lost your ID and/or wallet, and lets you pay people with PayPal/Venmo after they give you cash
- Honk is a license plate-based messaging app that allows users to send compliments and constructive criticism to drivers (sent in the form of a Venmo charge/payment)
- FundMatch is a web-based platform dedicated to efficient giving for nonprofits and allows donations through PayPal (the cool part of this one was they took in organization emails and information and parsed them into an easy-to-read form for donors to understand)
- Pothole Sonar app uses audio to enhance the awareness of mobile users to the dangerous potholes nearby and compiles pothole data
- Nome (short for "metronome") is a "git for music" where people can collaborate on music projects and donate to other musicians with Venmo
There were a bunch more, and overall the event was so cool. The winners of the event made "Late Night Safety Kit," an app with tools that allows a user to stay safe by sending alerts for crime and to the police station in the area.
There were a bunch more, and overall the event was so cool. The winners of the event made "Late Night Safety Kit," an app with tools that allows a user to stay safe by sending alerts for crime and to the police station in the area.
And so, as the BattleHack saying goes: *City Conquered!*
I had to run off after the presentations for my train back to NYC. Overall, I genuinely enjoyed my time at BattleHack Boston. The planning team was a well-oiled machine, on top of every single nuance. I loved helping them and being a part of such an impressive event.
And so, as the BattleHack saying goes: _City Conquered!_
I had to run off after the presentations for my train back to NYC. Overall, I genuinely enjoyed my time at BattleHack Boston. The planning team was a well-oiled machine, on top of every single nuance. I loved helping them and being a part of such an impressive event.
![pic](/assets/bh/team.jpg)

View File

@@ -7,11 +7,11 @@ added: "Aug 03 2015"
tags: [technical]
---
I love working with [React](http://facebook.github.io/react/). And I love cool
keyboard shortcuts. Luckily, the [Mousetrap](https://craig.is/killing/mice)
keyboard shortcut library works really well with React. Hot.
I love working with [React](http://facebook.github.io/react/). And I love cool
keyboard shortcuts. Luckily, the [Mousetrap](https://craig.is/killing/mice)
keyboard shortcut library works really well with React. Hot.
So, first you obvi have to install the two. Just use handy npm to do that, and
So, first you obvi have to install the two. Just use handy npm to do that, and
call:
```sh
@@ -19,14 +19,14 @@ call:
> npm install mousetrap
```
Dang. That was so easy. This is crazy.
Dang. That was so easy. This is crazy.
Now that you've done that, go ahead and build your React app as usual. Now,
Now that you've done that, go ahead and build your React app as usual. Now,
let's say that you have a super awesome component (called `<SuperAwesomeComponent>`),
and you want to call a function `letFishFly` in that component's class whenever
someone hits "* k", "ctrl+r", or the Konami Code. Because you feel like it.
someone hits "\* k", "ctrl+r", or the Konami Code. Because you feel like it.
It's so easy to add now! In your component, you just have to bind the Mousetrap
It's so easy to add now! In your component, you just have to bind the Mousetrap
command to `letFishFly` in the `componentWillMount` function, and unbind it in `componentWillUnmount`.
```js
@@ -38,6 +38,6 @@ command to `letFishFly` in the `componentWillMount` function, and unbind it in `
}
```
Oh my word. That's it. You have keyboard commands set up in React. Congratulations.
Oh my word. That's it. You have keyboard commands set up in React. Congratulations.
Until next time! :)

View File

@@ -4,7 +4,7 @@ title: "Writing Practice: The Agua Caliente Airport"
slug: agua-caliente
description: "I did a writing exercise using a random Wikipedia page. And puns."
added: "Nov 02 2016"
tags: [learning]
tags: [learning]
---
As I go through my old notes on my computer I found this old writing exercise I

View File

@@ -4,7 +4,7 @@ title: "Building My S60-X Keyboard"
slug: s60x-keyboard
description: "After a bunch of trial and error, I built and programmed my first mechanical keyboard!"
added: "Jan 01 2017"
tags: [technical]
tags: [technical]
---
HELLO. I'm so excited to share my build log of my first custom mechanical keyboard!
@@ -19,7 +19,7 @@ So, first I'll talk about building the board!
First, the unboxing! Inside the box was Gateron Green switches (I wanted some
that were both clicky and tactile), switch stabilizers, a PCB, a back plate,
a front plate, LEDs, and feet. There were also some blank keycaps (that I
a front plate, LEDs, and feet. There were also some blank keycaps (that I
didn't end up using, but were nice to have).
![pic](/assets/s60x/unboxing.gif)
@@ -90,7 +90,7 @@ to install things step-by-step:
$ brew install dfu-programmer
$ brew tap osx-cross/avr
$ brew install avr-libc
$ git clone
$ git clone
```
Easy peasy. Now I went into the `qmk_firmware` folder, then into `keyboards`,

View File

@@ -4,25 +4,25 @@ title: "Closures in JavaScript"
slug: closures-in-js
description: "Closures in JavaScript are an important concept that all JS devs should know. So here's a summary for you."
added: "Feb 25 2016"
tags: [technical]
tags: [technical]
---
JavaScript closures are a pretty essential concept to know if you're a JS dev.
But, sadly, if you were to ask the average junior developer what they are, more
often than not you won't get a solid answer. I'm writing this so that YOU can
be the knowledge bomb-dropper in the room. Let's do this.
often than not you won't get a solid answer. I'm writing this so that YOU can
be the knowledge bomb-dropper in the room. Let's do this.
Okay so the quick summary of a closure is that from an inner function, it gives
you access to an outer function's scope. So essentially, you can create
*private variables*. In JavaScript. Whoa.
you access to an outer function's scope. So essentially, you can create
_private variables_. In JavaScript. Whoa.
Moving backwards a bit, JS has both local and global variables. A local variable
looks something like this (see `magic`):
```js
function yolo() {
var magic = 3.14;
return magic;
var magic = 3.14;
return magic;
}
```
@@ -31,13 +31,13 @@ And a global variable looks something like this (again, see `magic`):
```js
var magic = 3.14;
function yolo() {
return magic;
return magic;
}
```
So global variables live forever (or as long as your window/website is open),
and local variables are created when the function is invoked and deleted when
the function has finished up. But if you have a variable that you want
the function has finished up. But if you have a variable that you want
available to all of your functions, you might run into some security issues.
Because if you use a global variable, it's not only accessible to all of your
functions in your JS, but it's also available to any scripts that might be
@@ -47,16 +47,18 @@ There has to be a better way.
Oh wait, that's the whole point of this blog post.
*Closures!*
_Closures!_
Closures are the primary way to have data privacy in your JavaScript. A super
Closures are the primary way to have data privacy in your JavaScript. A super
duper basic example of this is a simple iterator, where every time you call
`iterate()`, a counter is increased by 1.
```js
function iterate() {
var count = 0;
return function () { return count += 1; };
var count = 0;
return function () {
return (count += 1);
};
}
```
@@ -72,12 +74,12 @@ So to run that function, you'd run the following lines and get the shown output:
3
```
...and so forth. It looks a little funny, but it's because `iterate()` has
become a closure. It consists of the local variable `count`, and the returned
...and so forth. It looks a little funny, but it's because `iterate()` has
become a closure. It consists of the local variable `count`, and the returned
function.
You'll see a lot of closures if you do functional programming in JavaScript (and
along the same lines, currying), and also a lot in event handlers, in callbacks,
and also just when you're coding or reading code in JS that involve data
privacy. Definitely try messing with them if you haven't yet. It'll be super
privacy. Definitely try messing with them if you haven't yet. It'll be super
helpful for you in the long run.

View File

@@ -4,7 +4,7 @@ title: "Crushing the Impostor Syndrome"
slug: impostor-syndrome
description: "Sometimes you don't feel like you're good enough, and that you're fooling everyone. You're not alone."
added: "Jul 23 2013"
tags: [advice]
tags: [advice]
---
I originally wrote this post on CycloneLife.com for Iowa State, and it went completely viral on the front page of Reddit, featured on 99u.com, and several other blogs and websites.

View File

@@ -17,36 +17,36 @@ Now, when you decide to blow this picture up, something happens that's not total
<img src="/assets/linksprite.gif" style="width:300px;" />
It's all blurry and gross. As we expect.
It's all blurry and gross. As we expect.
But, there's a better way to deal with it. Add the following into your CSS:
But, there's a better way to deal with it. Add the following into your CSS:
```css
.image-class {
/* Firefox */
image-rendering: -moz-crisp-edges;
/* Firefox */
image-rendering: -moz-crisp-edges;
/* Safari */
image-rendering: -webkit-optimize-contrast;
/* Safari */
image-rendering: -webkit-optimize-contrast;
/* IE */
-ms-interpolation-mode: nearest-neighbor;
/* IE */
-ms-interpolation-mode: nearest-neighbor;
/* Everything Else */
image-rendering: pixelated;
/* Everything Else */
image-rendering: pixelated;
}
```
Yes, it's a lot for one effect, but hey. It's cross-browser.
Yes, it's a lot for one effect, but hey. It's cross-browser.
Now check out your glorious image!
<img src="/assets/linksprite.gif" style="width:300px; image-rendering: -moz-crisp-edges; image-rendering: -webkit-optimize-contrast; -ms-interpolation-mode: nearest-neightbor; image-rendering: pixelated;" />
Whoa! Beautiful! So let's dig into this. Why are there SO many different values? Well, put simply, each browser just hasn't hit standard yet. But, it's coming.
The CSS Image Values spec is still being constantly updated and reviewed. It only just recently consolidated all of these values (`crisp-edges`, `optimize-contrast`, `nearest-neighbor`, and `pixelated`) by officially standardizing `image-rendering` to have either `pixelated`, `crisp-edges`, or `auto` as its values.
Whoa! Beautiful! So let's dig into this. Why are there SO many different values? Well, put simply, each browser just hasn't hit standard yet. But, it's coming.
The CSS Image Values spec is still being constantly updated and reviewed. It only just recently consolidated all of these values (`crisp-edges`, `optimize-contrast`, `nearest-neighbor`, and `pixelated`) by officially standardizing `image-rendering` to have either `pixelated`, `crisp-edges`, or `auto` as its values.
As you can see [in the example on the spec website](http://dev.w3.org/csswg/css-images-3/#the-image-rendering), `auto` and `crisp-edges` have their own uses, but `pixelated` is best for this pixel art example.
One thing that will be interesting to look out for moving forward is the Microsoft Edge browser. They're slowly phasing out all of the `-ms` prefixes, so I'm personally curious to see it they're going to use the standard and use `image-rendering: pixelated` or if they're going to stick to the `nearest-neighbor` idea. Only time will tell.
One thing that will be interesting to look out for moving forward is the Microsoft Edge browser. They're slowly phasing out all of the `-ms` prefixes, so I'm personally curious to see it they're going to use the standard and use `image-rendering: pixelated` or if they're going to stick to the `nearest-neighbor` idea. Only time will tell.
Enjoy making giant pixelated images, until next time!

View File

@@ -4,61 +4,61 @@ title: "Pure CSS3 Text Carousel"
slug: css-text-carousel
description: "I built a pure CSS text carousel because I couldn't find one I liked. Here's how I did it, and tweaks for later."
added: "Mar 04 2016"
tags: [technical]
tags: [technical]
---
Recently while building a pretty typical static site, I found the need to have
some quotes scrolling through a page. Classic job for a carousel. After doing
some quotes scrolling through a page. Classic job for a carousel. After doing
some hunting online though, almost all carousels either used jQuery or Bootstrap
as a dependency, and/or just had some really nasty CSS. And, also, I only found
as a dependency, and/or just had some really nasty CSS. And, also, I only found
ONE carousel in all my hunting that was just for text, not for pictures.
So, it came time to act. AKA build it myself.
This is the result I came up with. It's a little hacky, but it's pure CSS3 and
This is the result I came up with. It's a little hacky, but it's pure CSS3 and
is perfect for quotes, if I do say so myself:
<p data-height="268" data-theme-id="0" data-slug-hash="MyaWzp" data-default-tab="result" data-user="cassidoo" class="codepen">See the Pen <a href="http://codepen.io/cassidoo/pen/MyaWzp/">Pure CSS3 Text Carousel</a> by Cassidy Williams (<a href="http://codepen.io/cassidoo">@cassidoo</a>) on <a href="http://codepen.io">CodePen</a>.</p>
<script async src="//assets.codepen.io/assets/embed/ei.js"></script>
The code isn't too crazy, if you read it out. The first thing I had to add in
the HTML was the wrappers for the quotes. The `<div>` tags for
`content-slider`, `slider`, and `mask` (let's call these the *Trio of Mystery*)
The code isn't too crazy, if you read it out. The first thing I had to add in
the HTML was the wrappers for the quotes. The `<div>` tags for
`content-slider`, `slider`, and `mask` (let's call these the _Trio of Mystery_)
were all purely for the actual box holding the quotes and making sure that they
disappeared when they "faded away" (I use quotes because of how it's written,
you'll see).
Then you see that there's an unordered list, where each `<li>` has an animation
class and contains a quote and its source. This is probably the most
class and contains a quote and its source. This is probably the most
straightforward part of the code.
Now let's get crazy.
So in the CSS you'll see basic body stuff, and then the *Trio of Mystery*. Like
So in the CSS you'll see basic body stuff, and then the _Trio of Mystery_. Like
I said before, pretty straightforward, just creates a container and a mask that
makes innocent `<div>`s like you disappear. Now, you'll notice a little further
down that the `.slider li` section has something a little gross in there. This
makes innocent `<div>`s like you disappear. Now, you'll notice a little further
down that the `.slider li` section has something a little gross in there. This
is where things get hard-coded.
```css
height: 320px;
position: absolute;
top: -325px;
height: 320px;
position: absolute;
top: -325px;
```
Here, you'll notice that the `<li>` are being set at a height and positioned
325px above their normal position. That's because the container is set at 320px
high. The `top` part could have had `-321px` and it would have been fine. This
is how the *Trio of Mystery* gets away with hiding its stowaways.
325px above their normal position. That's because the container is set at 320px
high. The `top` part could have had `-321px` and it would have been fine. This
is how the _Trio of Mystery_ gets away with hiding its stowaways.
If you look after this section, you'll get to the animations. Now, this is the
If you look after this section, you'll get to the animations. Now, this is the
part that would have been very, very significantly improved had I used a CSS
preprocessor. There's a LOT of repetition here, and a lot of things hard-coded
for 5 quotes (no more, no less). The way each animation works is that each
quote is hidden at `-325px` (just out of sight, again, thanks to the *Trio of
Mystery*), and then when it's that quote's turn, it scrolls into view at 100%
preprocessor. There's a LOT of repetition here, and a lot of things hard-coded
for 5 quotes (no more, no less). The way each animation works is that each
quote is hidden at `-325px` (just out of sight, again, thanks to the _Trio of
Mystery_), and then when it's that quote's turn, it scrolls into view at 100%
opacity, and after 3 seconds, it fades (when really, its position is just moving
at the same time as the opacity is lowered to zero). Because each of the
at the same time as the opacity is lowered to zero). Because each of the
animations last the same amount of time and goes in one direction
(`15s linear infinite`), we just break up the 100% into approximately fifths so
that the quotes can be spread out (the first one "exiting" at 20%, the next at
@@ -66,12 +66,12 @@ around 40%, etc).
## But alas, what now?
Honestly, this works for what my original needs were. But, this mini-project
could DEFINITELY be improved. Some of my ideas for a next time:
Honestly, this works for what my original needs were. But, this mini-project
could DEFINITELY be improved. Some of my ideas for a next time:
- Use a pre-processor
- Save CSS variables for the number of quotes that exist
- Generate HTML code based on the number of quotes
- Divide the percentages for the animations based on the number of quotes
- Use a pre-processor
- Save CSS variables for the number of quotes that exist
- Generate HTML code based on the number of quotes
- Divide the percentages for the animations based on the number of quotes
Until next time!

View File

@@ -17,23 +17,23 @@ Today I got a message from a girl in NCWIT:
> This girl across from us wanted to learn HTML today at a hackathon and she was trying to watch some videos and I literally jumped out of my chair and was like "omggg i know the best guide ever!" and showed her your tutorial, and she loved it. I think she finally got some neat stuff together at the end.
> I've seen a lot of tutorials and guides and stuff, yours is hands down one of the best ones I've seen.
This made my day! I love getting positive feedback like this, it only makes me want to write more.
This made my day! I love getting positive feedback like this, it only makes me want to write more.
And then, I also got an email from one of the higher ups at Intuit today:
> We were just talking about you the other day, in relation to the Women in Technology initiative in QuickBooks Product Dev. We rolled out a formal goal of mentorship and sponsorship to develop a pipeline of women ready for director, group manager, principal engineer, and architect roles. Since we started... we have two new women group managers, a new woman principal engineer, and several new first-time managers. We have a monthly lunch with the women PD leaders, and we feature various guest speakers— mostly women execs at Intuit. Intuit also hosted a Girl Geek Dinner...
> Btw, your work on ...[things I worked on at Intuit]... default template is now live in QBO. So youve got a legacy at Intuit from your internship.
Between the two messages, I don't know which one made me more happy. I love hearing that my views on mentorship are being spread, and that my work I'm doing is making a real impact.
Between the two messages, I don't know which one made me more happy. I love hearing that my views on mentorship are being spread, and that my work I'm doing is making a real impact.
So anyway, to the point.
Feedback should be given more often. Good and bad, even a pat on the back, is more motivating than almost anything else! At a majority of my internships, I'd work on something and if I finished, I'd get another assignment, and that'd be that.
Feedback should be given more often. Good and bad, even a pat on the back, is more motivating than almost anything else! At a majority of my internships, I'd work on something and if I finished, I'd get another assignment, and that'd be that.
I wouldn't find out feedback from my coworkers and managers until my midpoint reviews, most of the time.
In fact (probably as a result of the impostor syndrome), I often thought I was doing terribly until I got such midpoint reviews, because I didn't hear any feedback until then.
Was it my fault for not asking for it? Probably. I ask for it more often now. But it makes me wonder about everyone out there who doesn't ask for feedback once in a while.
Some people might be stopping projects, giving up on problems, or even quitting jobs, just because they don't know they're doing well. There's plenty of articles out there about the importance of encouragement in the workplace.
Was it my fault for not asking for it? Probably. I ask for it more often now. But it makes me wonder about everyone out there who doesn't ask for feedback once in a while.
Some people might be stopping projects, giving up on problems, or even quitting jobs, just because they don't know they're doing well. There's plenty of articles out there about the importance of encouragement in the workplace.
But, there might not be as many articles about asking for feedback. I don't want to bore you with statistics and psychology. So, I'll leave it at this: Ask for feedback from someone this week.
Ask them about a project of yours, an assignment you've done, even about your attitude about work or school. It could be the extra kick in the pants you need to do more of what you're doing, or to work harder.
But, there might not be as many articles about asking for feedback. I don't want to bore you with statistics and psychology. So, I'll leave it at this: Ask for feedback from someone this week.
Ask them about a project of yours, an assignment you've done, even about your attitude about work or school. It could be the extra kick in the pants you need to do more of what you're doing, or to work harder.

View File

@@ -15,30 +15,30 @@ Finding a mentor isn't some magical moment where you meet and someone puts their
![pic](http://i.imgur.com/eucxwpW.gif)
Finding a mentor is really just a matter of keeping communication lines open. Once you meet someone, continue talking and building a relationship with them. There's so many ways to do this. Go to a meetup, chat with people in forums or Facebook groups, have a coffee chat, video chat someone, email someone (as if they're your pen pal, not like a cover letter).
Finding a mentor is really just a matter of keeping communication lines open. Once you meet someone, continue talking and building a relationship with them. There's so many ways to do this. Go to a meetup, chat with people in forums or Facebook groups, have a coffee chat, video chat someone, email someone (as if they're your pen pal, not like a cover letter).
## What you should look for in a mentor
- *Someone who wants a mentee*. Sometimes, you won't get a reply to that email asking for coffee. Sometimes, people won't chat with you. That's okay. You want someone who wants the relationship.
- *Someone you can be friends with*. Your mentor isn't just someone you suck advice from. You should enjoy your relationship with them, they should be someone around whom you can be yourself. If you have a very formal, not really comfortable relationship, you won't be able to easily converse with each other to get the guidance for which you're seeking.
- *Someone who doesn't compete with you*. You want someone that can help celebrate your accomplishments, not feel threatened by them.
- *Someone who drives you to succeed*. A good mentor will be someone who can push you to be the best that you can be, even if it's just by finding someone else that can answer your questions, or by just being a good role model.
- _Someone who wants a mentee_. Sometimes, you won't get a reply to that email asking for coffee. Sometimes, people won't chat with you. That's okay. You want someone who wants the relationship.
- _Someone you can be friends with_. Your mentor isn't just someone you suck advice from. You should enjoy your relationship with them, they should be someone around whom you can be yourself. If you have a very formal, not really comfortable relationship, you won't be able to easily converse with each other to get the guidance for which you're seeking.
- _Someone who doesn't compete with you_. You want someone that can help celebrate your accomplishments, not feel threatened by them.
- _Someone who drives you to succeed_. A good mentor will be someone who can push you to be the best that you can be, even if it's just by finding someone else that can answer your questions, or by just being a good role model.
## How to be a good mentee
- *Don't just suck information out of your mentor*. Nobody likes someone who is just in it for themselves, who is selfish with their information. Build a relationship that's give and take with your mentor, don't just email them once a month with your latest problem.
- *Lift as you climb*. As you move up with your career, help people who are like you who could use your own advice. A great mentee gives back.
- *Accept things your mentor tells you, even if it's not what you want to hear*. Sometimes it's hard to absorb frank feedback. But, it's necessary to do so if you really want to internalize the information you're getting. Sometimes things don't go the way you want, and sometimes you just want to be further along, like your mentor. It can be frustrating sometimes when things don't go your way, but trust the advice you get. Sure, that doesn't mean you have to follow *all* of it, but trust that it's coming from someone who cares.
- _Don't just suck information out of your mentor_. Nobody likes someone who is just in it for themselves, who is selfish with their information. Build a relationship that's give and take with your mentor, don't just email them once a month with your latest problem.
- _Lift as you climb_. As you move up with your career, help people who are like you who could use your own advice. A great mentee gives back.
- _Accept things your mentor tells you, even if it's not what you want to hear_. Sometimes it's hard to absorb frank feedback. But, it's necessary to do so if you really want to internalize the information you're getting. Sometimes things don't go the way you want, and sometimes you just want to be further along, like your mentor. It can be frustrating sometimes when things don't go your way, but trust the advice you get. Sure, that doesn't mean you have to follow _all_ of it, but trust that it's coming from someone who cares.
## Thank you to my mentors
My mentors are amazing women who I look up to every single day as they're making the world a better place. I'm going to link to their Twitter handles here, and tell you how I met each of them.
My mentors are amazing women who I look up to every single day as they're making the world a better place. I'm going to link to their Twitter handles here, and tell you how I met each of them.
- [Jennifer Arguello](https://twitter.com/engijen) - I met Jennifer at the White House Tech Inclusion Summit, where we hit it off talking about diversity in tech and her time with the Latino Startup Alliance. I made sure to keep in touch since I would be interning in the Bay Area, where she's located, and we've been chatting ever since.
- [Kelly Hoey](https://twitter.com/jkhoey) - I met Kelly at a women in tech hackathon, and then she ended up being on my team on the [British Airways UnGrounded Thinking hackathon](http://ungroundedthinking.com/). She and I both live in NYC, now, and we see each other regularly at speaking engagements and chat over email about networking and inclusion.
- [Rane Johnson](https://twitter.com/sfbayrane) - I met Rane at the [Grace Hopper Celebration for Women in Computing](http://gracehopper.org) in 2011, and then again when I interned at Microsoft in 2012. She and I started emailing and video chatting each other during my senior year of college, when I started working with her on the [Big Dream Documentary](http://bigdreammovement.com) and the International Women's Hackathon at the USA Science and Engineering Festival.
- [Ruthe Farmer](https://twitter.com/ruthef) - I first met Ruthe back in 2010 during my senior year of high school when I won the [Illinois NCWIT Aspirations Award](https://www.aspirations.org/). She and I have been talking with each other at events and conferences and meetups (and even just online) almost weekly since then about getting more girls into tech, working, and everything in between.
- [Jennifer Arguello](https://twitter.com/engijen) - I met Jennifer at the White House Tech Inclusion Summit, where we hit it off talking about diversity in tech and her time with the Latino Startup Alliance. I made sure to keep in touch since I would be interning in the Bay Area, where she's located, and we've been chatting ever since.
- [Kelly Hoey](https://twitter.com/jkhoey) - I met Kelly at a women in tech hackathon, and then she ended up being on my team on the [British Airways UnGrounded Thinking hackathon](http://ungroundedthinking.com/). She and I both live in NYC, now, and we see each other regularly at speaking engagements and chat over email about networking and inclusion.
- [Rane Johnson](https://twitter.com/sfbayrane) - I met Rane at the [Grace Hopper Celebration for Women in Computing](http://gracehopper.org) in 2011, and then again when I interned at Microsoft in 2012. She and I started emailing and video chatting each other during my senior year of college, when I started working with her on the [Big Dream Documentary](http://bigdreammovement.com) and the International Women's Hackathon at the USA Science and Engineering Festival.
- [Ruthe Farmer](https://twitter.com/ruthef) - I first met Ruthe back in 2010 during my senior year of high school when I won the [Illinois NCWIT Aspirations Award](https://www.aspirations.org/). She and I have been talking with each other at events and conferences and meetups (and even just online) almost weekly since then about getting more girls into tech, working, and everything in between.
These women have helped me probably more than they can imagine, even when they're just a listening ear when I'm asking endless questions about what I should do next with my career or how I should approach certain situations. They're amazing, influential, and make a *real* difference in hundreds (even thousands) of lives with their work, and I strive to be like them someday.
These women have helped me probably more than they can imagine, even when they're just a listening ear when I'm asking endless questions about what I should do next with my career or how I should approach certain situations. They're amazing, influential, and make a _real_ difference in hundreds (even thousands) of lives with their work, and I strive to be like them someday.
I hope that you find someone like them to work with. It's, in the realest sense of the phrase, life-changing.
I hope that you find someone like them to work with. It's, in the realest sense of the phrase, life-changing.

View File

@@ -4,11 +4,11 @@ title: "Hello, world"
slug: hello-world
description: "Lorem ipsum dolor sit amet"
added: "Aug 08 2022"
tags: [meta, technical]
tags: [meta, technical]
---
I decided to make my own little blog, but... more like the concept of a [digital garden](https://maggieappleton.com/garden-history). Sometimes I might update this a lot, sometimes I might not.
I want to have a space where I can write anything, not have it be confined to tech things, and not worry about it being particularly polished. That's what this is!
I built this in Astro, I pulled in some posts from blogs past, and... here we gooo!
I built this in Astro, I pulled in some posts from blogs past, and... here we gooo!

View File

@@ -7,35 +7,35 @@ added: "Mar 04 2014"
tags: [advice]
---
Hey cutie. Let's talk interviews. I've had what's felt like a billion interviews over the past several years, for everything from leadership positions to internships to jobs to scholarships.
Hey cutie. Let's talk interviews. I've had what's felt like a billion interviews over the past several years, for everything from leadership positions to internships to jobs to scholarships.
So, I thought I'd give you some advice based on what I've learned.
Right now.
##Study the usual interview questions, and fit in your own experiences.
## Study the usual interview questions, and fit in your own experiences.
All you have to do here is go on the internet and search, “common interview questions.”
Everything from “describe a time when you worked on a team” to “what was the most fun presentation youve ever had to plan?” is asked to everyone, engineers and business majors alike.
Make sure you follow STAR: *Situation* (what was the situation you were in), *Task* (what was your job, or task, to tackle the situation), *Action* (what were the actions to ultimately took), and *Results* (what were the responses you received and the results you achieved)!
Make sure you follow STAR: _Situation_ (what was the situation you were in), _Task_ (what was your job, or task, to tackle the situation), _Action_ (what were the actions to ultimately took), and _Results_ (what were the responses you received and the results you achieved)!
Now, if you're thinking about technical questions (which I'm a computer science chick too, I get it), my only advice here is to talk a LOT.
Too many engineers just go up to the white board and start coding then and there without explaining what they're doing.
Whenever I've interviewed with someone, I stay sitting and talk about the problem with the interviewer.
When you do it that way, they can see where you're going with your thought process when you start writing on the board.
And if you change what you're thinking, turn around, away from the board, and tell the interviewer your thought process again.
The *thought process* is what these companies are looking for, not just correct code.
The _thought process_ is what these companies are looking for, not just correct code.
It's better to have a good thought process and bad code than good code and a bad thought process.
##Know your story well.
## Know your story well.
Instead of reflecting all the time on interview questions and rehearsing answers, try reflecting on your school and career chronology until now!
Think about how you got started in your field, struggles you overcame, what youve learned over the years, where and how you developed certain skills, what youre most proud of, etc.
When you know your story, you can answer almost any question about anything because of your personal experiences and what you know already about yourself.
##Follow the PIE.
## Follow the PIE.
I mean this in both senses of the word. Pie is delicious.
BUT, what I really mean is, the best interviewees are the ones who are *Positive, Interested, and Engaged* in the interview conversations.
BUT, what I really mean is, the best interviewees are the ones who are _Positive, Interested, and Engaged_ in the interview conversations.
If you keep worrying about the next question and saying things perfectly, you might forget to have your positive game face showing.
Just remember to smile! If you look like youre happy to be there, theyll be more happy to interview you.
##Consider what the company (or organization or school, whatever) wants.
## Consider what the company (or organization or school, whatever) wants.
When youre at the career fair, ask companies what they look for, and what their culture is like.
You dont want to think, “oh yeah Ill just keep practicing, if I know what Im talking about and can show it, theyll hire me.”
Yes and no. You do want to show them that you know what youre talking about. But, they also want to feel that you are likable, and that youll fit in at the company!
@@ -43,5 +43,5 @@ Focus more on demonstrating aptitude while being likable rather than just spitti
Laugh with them, relax a bit, and let them see your personality! I mean, I like you, so why wouldnt they?
You personality is one of your skill sets that people often dont count. Believe me, it counts for a lot.
##Breathe.
Youre going to rock this! Just know that if it doesn't work out, it's not the end of the world, and if it does, that's even better. Have FUN and good luck!
## Breathe.
Youre going to rock this! Just know that if it doesn't work out, it's not the end of the world, and if it does, that's even better. Have FUN and good luck!

View File

@@ -7,7 +7,6 @@ added: "Apr 24 2014"
tags: [advice]
---
Hey cutie. Your laugh makes my morning, and your smile makes my afternoon.
So, Ive helped as a peer mentor, as an impromptu tutor, as a friend, and just as an upperclassman with a lot of homework problems. From math to science to computing to whatever, youll often run into something that you just cant figure out, and you need to ask for help.

File diff suppressed because it is too large Load Diff

View File

@@ -4,446 +4,447 @@ title: "HTML+CSS Tutorial, Part 1"
slug: html-css-part-1
description: "This is part 1 of a two-part tutorial for beginners as an introduction to HTML and CSS."
added: "Feb 10 2014"
tags: [tutorial]
tags: [tutorial]
---
###What
### What
In this tutorial, we'll start from the very beginning. You don't need to know anything about HTML and CSS or anything about code to start.
In this tutorial, we'll start from the very beginning. You don't need to know anything about HTML and CSS or anything about code to start.
I'll included some tutorial files for you to play with and check out here: [HTML+CSS Tutorial Files](https://github.com/cassidoo/HTML-CSS-Tutorial/archive/master.zip)
###When
### When
Now. Or whenever. I'm not planning on taking this down anytime soon. But you are only limited by your own schedule. Or set free by it. Whatever.
Now. Or whenever. I'm not planning on taking this down anytime soon. But you are only limited by your own schedule. Or set free by it. Whatever.
###Where
### Where
On a computer. Here.
On a computer. Here.
I have this tutorial hosted on [my GitHub account](https://github.com/cassidoo/HTML-CSS-Tutorial) if you'd like to look at it there, or if you'd like to suggest improvements!
###Why
### Why
Because this stuff is important. Whether you're a business person formatting your emails, an aspiring web designer wanting to get your feet wet, or just someone who is interested and hasn't tried any sort of coding, scripting, or programming before, **HTML and CSS are an essential part** of your learning curve.
Because this stuff is important. Whether you're a business person formatting your emails, an aspiring web designer wanting to get your feet wet, or just someone who is interested and hasn't tried any sort of coding, scripting, or programming before, **HTML and CSS are an essential part** of your learning curve.
##Table of Contents
* HTML
* Editors
* Tag Structure
* Text Structure
* Links
* Other tags
* Images
* Line Breaks
* Tables
* Making Things Gorgeous The Wrong Way
* Colors
* Width and Height
* Borders
* Text Styles
* The `<head>` tag
* Putting it all together so far
* CSS (this half is in a separate post, for your readability, because I care)
* Classes and IDs and other Segregation
* Classes
* IDs
* Other Segregation
* The `<span>` tag
* The `<div>` tag
* Background color
* Floating
* Positioning
* Margins and Padding
* Z-Index
* The `<link>` Tag, Comments, and other Developer Joys
* The `<link>` tag
* Commenting
* HTML Comments
* CSS Comments
* Other Developer Joys
* Forms
* HTML5 and CSS3
* How To Meet Ladies/Laddies (Get it? HTML Jokes are the best...)
* Final Project!
* And now, the end is near
## Table of Contents
##HTML Time. Let's Go.
- HTML
- Editors
- Tag Structure
- Text Structure
- Links
- Other tags
- Images
- Line Breaks
- Tables
- Making Things Gorgeous The Wrong Way
- Colors
- Width and Height
- Borders
- Text Styles
- The `<head>` tag
- Putting it all together so far
- CSS (this half is in a separate post, for your readability, because I care)
- Classes and IDs and other Segregation
- Classes
- IDs
- Other Segregation
- The `<span>` tag
- The `<div>` tag
- Background color
- Floating
- Positioning
- Margins and Padding
- Z-Index
- The `<link>` Tag, Comments, and other Developer Joys
- The `<link>` tag
- Commenting
- HTML Comments
- CSS Comments
- Other Developer Joys
- Forms
- HTML5 and CSS3
- How To Meet Ladies/Laddies (Get it? HTML Jokes are the best...)
- Final Project!
- And now, the end is near
###Editors
## HTML Time. Let's Go.
So the first thing you'll need is an editor to edit your jazz. There's tons of options out there.
### Editors
* Notepad (that's right, the stupid thing that comes on your PC) - This is about as basic as you can get. It's totally okay if you want to use this, but I recommend one of the editors below just so you can see code highlighting (which will help you out later on). But, if you want to be a purist, this'll work just fine.
* [Aptana Studio 3](http://aptana.com/) - This is what I typically use. It's fairly easy to navigate, you create projects in it and it supports standard web projects, PHP, and Ruby. If you're a beginner that probably means nothing to you. Anyway, a decent choice.
* [Sublime Text 2](http://www.sublimetext.com/2) - This is a pretty popular option, and for good reason. Very clean interface. Once you can navigate it (learning curve isn't that big), it's pretty dreamy. Like your face.
* [Notepad++](http://notepad-plus-plus.org/) - This is just one step up from Notepad. But it's pretty dece. Code highlighting is in it, and nothing else too fancy, which is what I like about it.
* [IDEcoder](http://icecoder.net/) - this is an in-browser code editor, which lets you code directly within the web browser, online or offline, it means you only need one program (your browser) to develop websites, which is cool
So the first thing you'll need is an editor to edit your jazz. There's tons of options out there.
- Notepad (that's right, the stupid thing that comes on your PC) - This is about as basic as you can get. It's totally okay if you want to use this, but I recommend one of the editors below just so you can see code highlighting (which will help you out later on). But, if you want to be a purist, this'll work just fine.
- [Aptana Studio 3](http://aptana.com/) - This is what I typically use. It's fairly easy to navigate, you create projects in it and it supports standard web projects, PHP, and Ruby. If you're a beginner that probably means nothing to you. Anyway, a decent choice.
- [Sublime Text 2](http://www.sublimetext.com/2) - This is a pretty popular option, and for good reason. Very clean interface. Once you can navigate it (learning curve isn't that big), it's pretty dreamy. Like your face.
- [Notepad++](http://notepad-plus-plus.org/) - This is just one step up from Notepad. But it's pretty dece. Code highlighting is in it, and nothing else too fancy, which is what I like about it.
- [IDEcoder](http://icecoder.net/) - this is an in-browser code editor, which lets you code directly within the web browser, online or offline, it means you only need one program (your browser) to develop websites, which is cool
There's a bunch of others [listed here](http://en.wikipedia.org/wiki/List_of_HTML_editors), I just listed the ones I've used and liked!
###HTML Tag Structure
### HTML Tag Structure
Here is a barebones HTML page, about as simple as you can get. You can open it up in the **1 - Structure** folder in the file part1.html. If you were to open the file in your favorite browser (which you can do, go ahead), you'll see a plain webpage with the title "My Website" and the words, "Hello, World!" written on the page.
Here is a barebones HTML page, about as simple as you can get. You can open it up in the **1 - Structure** folder in the file part1.html. If you were to open the file in your favorite browser (which you can do, go ahead), you'll see a plain webpage with the title "My Website" and the words, "Hello, World!" written on the page.
<!doctype html>
<html>
<head>
<title>
My Website
</title>
</head>
<body>
Hello, World!
</body>
</html>
<!doctype html>
<html>
<head>
<title>
My Website
</title>
</head>
<body>
Hello, World!
</body>
</html>
So, what are we looking at here?
HTML, short for *HyperText Markup Language*, consists of these things called tags, which are words written between `<` and `>` characters, like `<sometag>`. All tags (with just a few exceptions that we'll talk about later) have a matching closing tag, which has the same name as the opening tag, except that it contains `/` after the first `<`, like `</sometag>`.
HTML, short for _HyperText Markup Language_, consists of these things called tags, which are words written between `<` and `>` characters, like `<sometag>`. All tags (with just a few exceptions that we'll talk about later) have a matching closing tag, which has the same name as the opening tag, except that it contains `/` after the first `<`, like `</sometag>`.
For example, `<html>` is one tag and the closing tag for it is `</html>`, same with `<head>` and `</head>` and `<body>` and `</body>`, and so on. You get it.
The opening and closing tags together are an *element* (which also includes everything written in it). For example, `<title>My Website</title>` is one element. The text inside an element, in the title case, `My Website`, is called the *content* of an element.
For example, `<html>` is one tag and the closing tag for it is `</html>`, same with `<head>` and `</head>` and `<body>` and `</body>`, and so on. You get it.
The opening and closing tags together are an _element_ (which also includes everything written in it). For example, `<title>My Website</title>` is one element. The text inside an element, in the title case, `My Website`, is called the _content_ of an element.
Tags organize your page and tell the browser what your page consists of. There's tons of tags out there, some that you may never use.
Tags organize your page and tell the browser what your page consists of. There's tons of tags out there, some that you may never use.
Here's some lists of tags if you really care to see all of them at this point:
* [HTML Dog Tag List](http://www.htmldog.com/reference/htmltags/)
* [W3Schools Tag List](http://www.w3schools.com/tags/default.asp)
* [Quackit HTML Tag List](http://www.quackit.com/html/tags/)
So, if you look at our example, you can also put tags inside other tags (like we did with the `<title>` tags inside the `<head>` tags). This is called *nesting* elements.
In this case, we would say that the `<head>` *contains* the `<title>`. Sometimes when you have a lot of nested tags, it's hard to keep track, so you have to format your code with spacing, as shown. Typically, inner tags are spaced more than their outer tags (just as `<title>` is indented further than `<head>`).
- [HTML Dog Tag List](http://www.htmldog.com/reference/htmltags/)
- [W3Schools Tag List](http://www.w3schools.com/tags/default.asp)
- [Quackit HTML Tag List](http://www.quackit.com/html/tags/)
Let's take a look again at part1.html in the **1 - Structure** folder. You'll notice that the first line has `<!doctype html>`. Every HTML document and website has to have this special tag, as it tells the browser what language we're using. This is one of those special tags I mentioned that doesn't need a closing tag.
So, if you look at our example, you can also put tags inside other tags (like we did with the `<title>` tags inside the `<head>` tags). This is called _nesting_ elements.
In this case, we would say that the `<head>` _contains_ the `<title>`. Sometimes when you have a lot of nested tags, it's hard to keep track, so you have to format your code with spacing, as shown. Typically, inner tags are spaced more than their outer tags (just as `<title>` is indented further than `<head>`).
On the second line, you can see a `<html>` tag. Everything in the website is contained by this tag, and the last line of your entire document will always be `</html>`.
Let's take a look again at part1.html in the **1 - Structure** folder. You'll notice that the first line has `<!doctype html>`. Every HTML document and website has to have this special tag, as it tells the browser what language we're using. This is one of those special tags I mentioned that doesn't need a closing tag.
Inside `<html>`, there are two elements: `<head>`and `<body>`. Contained in `<head></head>`, we will put all kinds of information for the browser that the user doesn't necessarily need to see. For now, we just have `<title>`. The content of `<title>` will be used for the name of the tab of the browser, and also by search engines.
On the second line, you can see a `<html>` tag. Everything in the website is contained by this tag, and the last line of your entire document will always be `</html>`.
On the other side of the planet, we have `<body></body>`. Everything visible to the user is contained in these tags. Right now, all that consists of is "Hello, World!" Let's change that for fun. Replace "Hello, World!" with your own text in your favorite HTML editor, and then open the page in your browser. Neat!
Inside `<html>`, there are two elements: `<head>`and `<body>`. Contained in `<head></head>`, we will put all kinds of information for the browser that the user doesn't necessarily need to see. For now, we just have `<title>`. The content of `<title>` will be used for the name of the tab of the browser, and also by search engines.
###Structuring text
On the other side of the planet, we have `<body></body>`. Everything visible to the user is contained in these tags. Right now, all that consists of is "Hello, World!" Let's change that for fun. Replace "Hello, World!" with your own text in your favorite HTML editor, and then open the page in your browser. Neat!
Let's get juicy. We're going to talk about some new tags for structuring your text. Because you're not going to want just one style of text throughout your whole website, right?
### Structuring text
Check out part2.html in the **1 - Structure** folder. The tags that we'll be talking about here are `<h1>`, `<p>`, `<ul>`, and `<li>`. Open the file in the browser to try and understand what the heck is going on.
Let's get juicy. We're going to talk about some new tags for structuring your text. Because you're not going to want just one style of text throughout your whole website, right?
Check out part2.html in the **1 - Structure** folder. The tags that we'll be talking about here are `<h1>`, `<p>`, `<ul>`, and `<li>`. Open the file in the browser to try and understand what the heck is going on.
Now, let's talk about it.
First, we have `<h1>`, which adds a *heading* to our website. Basically, a heading is just text with a bigger font. But still. Important. We'll soon learn how to adjust any and all font sizes, but not yet. Just know that your headings should be in `<h1>` tags. Also, if you have a smaller heading, or *sub-heading*, you could use `<h2>`, which is smaller than `<h1>`, but bigger than regular text. You can keep going with more numbers until you reach `<h6>`, with each heading a bit smaller than the previous. Try adding some subheadings underneath our current heading!
First, we have `<h1>`, which adds a _heading_ to our website. Basically, a heading is just text with a bigger font. But still. Important. We'll soon learn how to adjust any and all font sizes, but not yet. Just know that your headings should be in `<h1>` tags. Also, if you have a smaller heading, or _sub-heading_, you could use `<h2>`, which is smaller than `<h1>`, but bigger than regular text. You can keep going with more numbers until you reach `<h6>`, with each heading a bit smaller than the previous. Try adding some subheadings underneath our current heading!
Next, we have `<p>` tags. `<p>` adds a *paragraph* of text to our website, which are blocks of text that have some space before and after them. Edit the text in the paragraphs given, and add your own to see what I mean!
Next, we have `<p>` tags. `<p>` adds a _paragraph_ of text to our website, which are blocks of text that have some space before and after them. Edit the text in the paragraphs given, and add your own to see what I mean!
And finally, we have `<ul>`. `<ul>` means a bulleted list (also known as an *unordered list*), where every `<li>` is an item in that list (called a *list item*). But what if you want a numbered list? You could change `<ul>` to `<ol>` (and don't forget its closing tag), it's that simple! `<ol>` is an *ordered list*, which has numbers instead of bullet points, and that is truly the only difference. Add some list items (`<li>`) to the list (make sure you stay inside the `<ul>` tags), and then change your `<ul>` tags to `<ol>`!
And finally, we have `<ul>`. `<ul>` means a bulleted list (also known as an _unordered list_), where every `<li>` is an item in that list (called a _list item_). But what if you want a numbered list? You could change `<ul>` to `<ol>` (and don't forget its closing tag), it's that simple! `<ol>` is an _ordered list_, which has numbers instead of bullet points, and that is truly the only difference. Add some list items (`<li>`) to the list (make sure you stay inside the `<ul>` tags), and then change your `<ul>` tags to `<ol>`!
###Links
### Links
Links are what makes the world/Internet go 'round. Seriously. So, let's learn about them.
Links are what makes the world/Internet go 'round. Seriously. So, let's learn about them.
Links are made with the `<a>` tag, which stands for *anchor*.
Links are made with the `<a>` tag, which stands for _anchor_.
Open up the **2 - Tags** folder, and add this piece of code right after your heading in page1.html:
<p>This paragraph <a href="http://www.lalalalalalalalalalalalalalalalalala.com/">has a totally awesome link.</a></p>
<p>This paragraph <a href="http://www.lalalalalalalalalalalalalalalalalala.com/">has a totally awesome link.</a></p>
Open page1.html in a browser and click on it! BEAUTIFUL.
Open page1.html in a browser and click on it! BEAUTIFUL.
Okay, so let's take a look at this. First of all, you can see the `<a>` tag there contained in the paragraph. Beautiful.
But what's that funky milk `href=`? Well, that syntax called an *attribute*. Attributes change the way a tag works, and are not visible to the website's user. You only add attributes to the opening tag, not a closing tag. Tags can have multiple attributes, for example:
Okay, so let's take a look at this. First of all, you can see the `<a>` tag there contained in the paragraph. Beautiful.
But what's that funky milk `href=`? Well, that syntax called an _attribute_. Attributes change the way a tag works, and are not visible to the website's user. You only add attributes to the opening tag, not a closing tag. Tags can have multiple attributes, for example:
<tag attribute="value1" attribute2="value2">Content of tag</tag>`
<tag attribute="value1" attribute2="value2">Content of tag</tag>`
Got it? Good. You're so good looking.
Got it? Good. You're so good looking.
So, anyway, the attribute 'href' tells us where the link is going to go when the user clicks on it (and for those curious, it stands for *hyperreference*). Try adding some more links to the page to different websites!
So, anyway, the attribute 'href' tells us where the link is going to go when the user clicks on it (and for those curious, it stands for _hyperreference_). Try adding some more links to the page to different websites!
Also, one thing you should note: Links don't have to be in `<p>` tags like I put above. You could put them in `<li>` tags in a list, `<h1>` tags for a linking header, or completely on their own!
Also, one thing you should note: Links don't have to be in `<p>` tags like I put above. You could put them in `<li>` tags in a list, `<h1>` tags for a linking header, or completely on their own!
####Adding links to other pages in your website
Let's just say you have a fully functioning website called fakewebsite.com. You have your homepage and your "Contact Us" page in the same directory or folder.
#### Adding links to other pages in your website
Let's just say you have a fully functioning website called fakewebsite.com. You have your homepage and your "Contact Us" page in the same directory or folder.
Normally when a beginner links to different pages on their website, they just make links that look like `<a href="http://www.fakewebsite.com/index.htmL">Home</a>` and `<a href="http://www.fakewebsite.com/contactus.htmL">Contact Us</a>`.
This is okay. BUT, you can do better. So, what if you change your domain name to reallyfakewebsite.com? When you edit your HTML, you'd have to edit every single one of the links to match the new domain. That's gross. There is a better way.
This is okay. BUT, you can do better. So, what if you change your domain name to reallyfakewebsite.com? When you edit your HTML, you'd have to edit every single one of the links to match the new domain. That's gross. There is a better way.
When you make a link to a page within your own directory or folder on your website, instead of putting in the whole URL, put in something more like this:
<a href="page2.html">Click here to go back to Page 2.</a>
<a href="page2.html">Click here to go back to Page 2.</a>
Paste this line of code into page1.html. Watch the magic happen.
Paste this line of code into page1.html. Watch the magic happen.
Now, if you were to change your domain or location of your files, you don't have to change a thing. Boo yah.
Now, if you were to change your domain or location of your files, you don't have to change a thing. Boo yah.
###Other tags
### Other tags
So, you can reference the links that I showed you before if you want to check out some jazzy stuff you can do with your page. There are some other ones though that you might want to see before we move on to cooler and bigger things.
So, you can reference the links that I showed you before if you want to check out some jazzy stuff you can do with your page. There are some other ones though that you might want to see before we move on to cooler and bigger things.
####Images
`<img>`. Let's just say you want to put an image on your website. This is probably a good tag to know.
#### Images
`<img>`. Let's just say you want to put an image on your website. This is probably a good tag to know.
Add the following to page1.html:
<img src="http://i.imgur.com/B9q0A.gif" />
<img src="http://i.imgur.com/B9q0A.gif" />
Open up the page in a browser. WHOA. Image! So, the `<img>` tag is one of those special tags. First of all, it doesn't have a closing tag. You just stick in a `/` at the end of the one tag and you're done. Secondly, it also has a `src` attribute (which is short for *source*), and in the value of that attribute you put the URL of the image (similar to `href` in the anchor tag).
Open up the page in a browser. WHOA. Image! So, the `<img>` tag is one of those special tags. First of all, it doesn't have a closing tag. You just stick in a `/` at the end of the one tag and you're done. Secondly, it also has a `src` attribute (which is short for _source_), and in the value of that attribute you put the URL of the image (similar to `href` in the anchor tag).
One attribute that might be good for you to remember for `<img>` tags is the `alt` attribute. If you changed the code above to:
One attribute that might be good for you to remember for `<img>` tags is the `alt` attribute. If you changed the code above to:
<img src="http://i.imgur.com/B9q0A.gif" alt="I could have danced all night" />
<img src="http://i.imgur.com/B9q0A.gif" alt="I could have danced all night" />
When you load the page in the browser, the image looks the same. But, if you roll your mouse over the image, you'll see some words appear! WOW. That's the `alt` attribute. It stands for the *alternate text* for an image, and it's used when a user can't view the image for whatever reason (using a screen reader, slow connection, error in the `src` attribute, etc.). Or, in the case of [XKCD](http://xkcd.com/), it's used to add more humor to the page (roll your mouse over all of the comics on the site, they always add another joke or two that a lot of people don't know about).
When you load the page in the browser, the image looks the same. But, if you roll your mouse over the image, you'll see some words appear! WOW. That's the `alt` attribute. It stands for the _alternate text_ for an image, and it's used when a user can't view the image for whatever reason (using a screen reader, slow connection, error in the `src` attribute, etc.). Or, in the case of [XKCD](http://xkcd.com/), it's used to add more humor to the page (roll your mouse over all of the comics on the site, they always add another joke or two that a lot of people don't know about).
####Line breaks
#### Line breaks
Let's just say you want to keep all your content in one paragraph `<p>`, but you still want to break it up.
That's easy.
So, there's two special tags here, `<hr>` and `<br>`. They are *empty tags*, meaning they have no closing tag.
So, there's two special tags here, `<hr>` and `<br>`. They are _empty tags_, meaning they have no closing tag.
`<hr>` stands for *horizontal rule*, and creates a visible line break.
`<hr>` stands for _horizontal rule_, and creates a visible line break.
`<br>` is a simple line break, all it does is split your paragraph up.
Try inserting these in between some of your `<p>` tags to try it out!
####Tables
Tables are really cool. They can also be a bit confusing. Open up tables.html (in the **2 - Tags** folder) in a browser to check out the example table I made for you there.
#### Tables
Tables are really cool. They can also be a bit confusing. Open up tables.html (in the **2 - Tags** folder) in a browser to check out the example table I made for you there.
There's several tags for tables, but the essential ones are `<table>`, `<tr>`, `<th>`, and `<td>`. Look at tables.html in your editor.
There's several tags for tables, but the essential ones are `<table>`, `<tr>`, `<th>`, and `<td>`. Look at tables.html in your editor.
We're going to make our own table again on this page. You can delete the one I made for you, or just make one underneath the current one there.
We're going to make our own table again on this page. You can delete the one I made for you, or just make one underneath the current one there.
So, to create a table, you start with the `<table>` tag. Simple enough.
So, to create a table, you start with the `<table>` tag. Simple enough.
This will contain all the parts of your table. Sometimes, tables have a `border` attribute that will equal some value for the thickness of the table's border (it's proper to have just "1" or nothing, for reasons we'll explain later). Go ahead and add one so it looks like this:
This will contain all the parts of your table. Sometimes, tables have a `border` attribute that will equal some value for the thickness of the table's border (it's proper to have just "1" or nothing, for reasons we'll explain later). Go ahead and add one so it looks like this:
<table border="1">
</table>
<table border="1">
</table>
Boom. Let's add some more.
Boom. Let's add some more.
The next tag we're gonna check out is `<tr>`, which is for a *table row*. Easy peasy. So, let's add 3 `<tr>` tags to our table.
The next tag we're gonna check out is `<tr>`, which is for a _table row_. Easy peasy. So, let's add 3 `<tr>` tags to our table.
<table border="1">
<tr>
</tr>
<tr>
</tr>
<tr>
</tr>
</table>
<table border="1">
<tr>
</tr>
<tr>
</tr>
<tr>
</tr>
</table>
And finally, we have the actual cells of the table. There are two types of tags for this, `<th>` (*table header*) and `<td>` (*table data*). As their names indicate, the former is for the header of the table and the latter is for all of the data in the table.
And finally, we have the actual cells of the table. There are two types of tags for this, `<th>` (_table header_) and `<td>` (_table data_). As their names indicate, the former is for the header of the table and the latter is for all of the data in the table.
In our first set of `<tr>` tags, add 4 `<th>` tags, and in the second and third `<tr>` tags add 4 `<td>` tags.
<table border="1">
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<table border="1">
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
Alright! Our table is all set up. We have a table with a `border=1` attribute, 3 rows, and 4 columns. Let's populate it with data so you can see a proper application of the `<table>` tag:
Alright! Our table is all set up. We have a table with a `border=1` attribute, 3 rows, and 4 columns. Let's populate it with data so you can see a proper application of the `<table>` tag:
<table border="1">
<tr>
<th>Item</th>
<th>Quantity</th>
<th>Rate</th>
<th>Cost</th>
</tr>
<tr>
<td>Candy</td>
<td>10</td>
<td>$.50</td>
<td>$5.00</td>
</tr>
<tr>
<td>Toothpaste</td>
<td>2</td>
<td>$3.00</td>
<td>$6.00</td>
</tr>
</table>
<table border="1">
<tr>
<th>Item</th>
<th>Quantity</th>
<th>Rate</th>
<th>Cost</th>
</tr>
<tr>
<td>Candy</td>
<td>10</td>
<td>$.50</td>
<td>$5.00</td>
</tr>
<tr>
<td>Toothpaste</td>
<td>2</td>
<td>$3.00</td>
<td>$6.00</td>
</tr>
</table>
Open the page in a browser and check out your work. Nice job! I'm truly impressed. Go eat something good and fattening.
Open the page in a browser and check out your work. Nice job! I'm truly impressed. Go eat something good and fattening.
One other fun thing you can try playing with are the `colspan` and `rowspan` attributes. If you add `colspan="2"` (or `rowspan`, or any other number) into a `<th>` or `<td>` tag, the cell will expand past their cell size. For example, `<th colspan="2">` will give you a table header that spans 2 columns, and `<td rowspan="3">` will yield a cell that is the height of 3 rows. Jazzy!
One other fun thing you can try playing with are the `colspan` and `rowspan` attributes. If you add `colspan="2"` (or `rowspan`, or any other number) into a `<th>` or `<td>` tag, the cell will expand past their cell size. For example, `<th colspan="2">` will give you a table header that spans 2 columns, and `<td rowspan="3">` will yield a cell that is the height of 3 rows. Jazzy!
You can also nest tables, but I won't get into that right now. If you want to play around with the code, try adding some `<tr>` and `<td>` tags inside your current `<td>` tags. MaGiCal ThInGs.
You can also nest tables, but I won't get into that right now. If you want to play around with the code, try adding some `<tr>` and `<td>` tags inside your current `<td>` tags. MaGiCal ThInGs.
###Making Things Gorgeous The Wrong Way
### Making Things Gorgeous The Wrong Way
So, your website right now looks pretty bland, and that's normal. But, we want a website that is hot, sexy, ravishing, and powerful. Yes, that's right, we want a website just like you.
So, your website right now looks pretty bland, and that's normal. But, we want a website that is hot, sexy, ravishing, and powerful. Yes, that's right, we want a website just like you.
So first, I will show you the wrong way to style your pages. You might ask why, but trust me, if you learn in this order, you'll understand HTML attributes a lot better, and then when you move on to CSS your mind will explode with joy. Explode.
So first, I will show you the wrong way to style your pages. You might ask why, but trust me, if you learn in this order, you'll understand HTML attributes a lot better, and then when you move on to CSS your mind will explode with joy. Explode.
####Colors
#### Colors
Alrighty. Let's get frisky. Open up the **3 - Styles** folder and the file style1.html. You might notice that this file is pretty bland right now, but that's what we're gonna fix. Be patient, my grasshopper.
Alrighty. Let's get frisky. Open up the **3 - Styles** folder and the file style1.html. You might notice that this file is pretty bland right now, but that's what we're gonna fix. Be patient, my grasshopper.
Add this line of code in the `<body>` somewhere below the header tags (I made a lot for fun...): `<p style="color: red">This text is hot like my body</p>`
Oh man. Load that baby in a browser. WHAT. MAGNIFICENT. COLOR.
Oh man. Load that baby in a browser. WHAT. MAGNIFICENT. COLOR.
The first thing we'll look at is the `style` attribute. You can style all kind of things in that, from colors to widths to heights to borders to weights. But for now, let's just talk color.
The first thing we'll look at is the `style` attribute. You can style all kind of things in that, from colors to widths to heights to borders to weights. But for now, let's just talk color.
So, you might wonder, "what the heck how does that work can I just type any color in that space where red is?" And the answer is no. You can type a ton of colors there, like `blue` and `yellow` and `cyan` and `magenta`, but you can't just say `oasisorange` or `electricwhite` and hope that that'll work.
So, you might wonder, "what the heck how does that work can I just type any color in that space where red is?" And the answer is no. You can type a ton of colors there, like `blue` and `yellow` and `cyan` and `magenta`, but you can't just say `oasisorange` or `electricwhite` and hope that that'll work.
How do you get a specific color of your liking? Well that's when you use RGB or HEX colors. This is kind of a pain to grasp, it took me a little bit, so I'll explain it as simply as I can: RGB stands for Red, Green, and Blue. You can have the values 0 to 255 in each to form pretty much any color in existance. Whoa. The way to form an RGB code similarly to the one above is simple: `style="color: rgb(255,0,0)"`. In this example, there's 255 reds, 0 greens, and 0 blues. So, it's all red. Boom, simple enough.
How do you get a specific color of your liking? Well that's when you use RGB or HEX colors. This is kind of a pain to grasp, it took me a little bit, so I'll explain it as simply as I can: RGB stands for Red, Green, and Blue. You can have the values 0 to 255 in each to form pretty much any color in existance. Whoa. The way to form an RGB code similarly to the one above is simple: `style="color: rgb(255,0,0)"`. In this example, there's 255 reds, 0 greens, and 0 blues. So, it's all red. Boom, simple enough.
Now HEX colors is very similar. It consists of the hashtag sign `#`, and then 6 *hexadecimal digits*, which are 0123456789ABCDEF, with F being the highest digit. Like RGB, the first two digits of HEX are reds, the second two digits are blues, and the third couple of digits are greens. So, to write the same color code above, you'd do `style="color: #FF0000"` to get red, because you have FF for reds, 00 for blues, and 00 for greens. Simple? Simple.
Now HEX colors is very similar. It consists of the hashtag sign `#`, and then 6 _hexadecimal digits_, which are 0123456789ABCDEF, with F being the highest digit. Like RGB, the first two digits of HEX are reds, the second two digits are blues, and the third couple of digits are greens. So, to write the same color code above, you'd do `style="color: #FF0000"` to get red, because you have FF for reds, 00 for blues, and 00 for greens. Simple? Simple.
Don't worry, you won't have to come up with RGB and HEX colors yourself. There's plenty of websites and programs and color pickers out there to help you with that. Here's a few:
Don't worry, you won't have to come up with RGB and HEX colors yourself. There's plenty of websites and programs and color pickers out there to help you with that. Here's a few:
* [Color Picker](http://www.colorpicker.com/)
* [HTML color codes and names](http://www.computerhope.com/htmcolor.htm)
* [HTML Color Codes](http://html-color-codes.info/)
* [HTML Color Picker](http://www.w3schools.com/tags/ref_colorpicker.asp)
- [Color Picker](http://www.colorpicker.com/)
- [HTML color codes and names](http://www.computerhope.com/htmcolor.htm)
- [HTML Color Codes](http://html-color-codes.info/)
- [HTML Color Picker](http://www.w3schools.com/tags/ref_colorpicker.asp)
Try adding colors to various tags on the page! You can make your `<h1>` the color `#005DFC`, your `<h3>` tag `rgb(242,127,56)`, and your `<p>` tag `lightblue`. Keep playing til you're happy.
Try adding colors to various tags on the page! You can make your `<h1>` the color `#005DFC`, your `<h3>` tag `rgb(242,127,56)`, and your `<p>` tag `lightblue`. Keep playing til you're happy.
Now, you might see the syntax in your HTML journey where you actually have the `color` attribute, like `<p color="red">wut</p>`. Though this is technically allowed, please don't do this. Please. You'll be so much happier in the long run, I promise.
Now, you might see the syntax in your HTML journey where you actually have the `color` attribute, like `<p color="red">wut</p>`. Though this is technically allowed, please don't do this. Please. You'll be so much happier in the long run, I promise.
####Width and Height
#### Width and Height
So, what if you want to make a picture or a paragraph a different size? Easy peasy.
So, what if you want to make a picture or a paragraph a different size? Easy peasy.
There are two options you can use, the `style` attribute and the `width` and `height` attributes. I'll show you both.
There are two options you can use, the `style` attribute and the `width` and `height` attributes. I'll show you both.
Take this block of code here and stick it into style1.html:
<img src="http://i.imgur.com/wjiVXJe.gif" />
<img src="http://i.imgur.com/wjiVXJe.gif" />
Now, let's just say you want the image to be an exact size, say, 600x800. All you need to do is add `width` and `height` attributes to do just that!
Now, let's just say you want the image to be an exact size, say, 600x800. All you need to do is add `width` and `height` attributes to do just that!
<img src="http://i.imgur.com/wjiVXJe.gif" width="600" height="800" />
<img src="http://i.imgur.com/wjiVXJe.gif" width="600" height="800" />
Load that baby in a browser. Boo yah. But, you'll notice that the proportions of the image are a little off. What a pain. That's actually pretty easy to fix. Let's say that you absolutely have to have the width at 600 pixels, but the height can slide. It's as easy as taking out the `height` attribute.
Load that baby in a browser. Boo yah. But, you'll notice that the proportions of the image are a little off. What a pain. That's actually pretty easy to fix. Let's say that you absolutely have to have the width at 600 pixels, but the height can slide. It's as easy as taking out the `height` attribute.
<img src="http://i.imgur.com/wjiVXJe.gif" width="600" />
<img src="http://i.imgur.com/wjiVXJe.gif" width="600" />
Refresh dat page. Huzzah. Same works for if you have a set height that you want, just include the `height` attribute and not the `width`.
Refresh dat page. Huzzah. Same works for if you have a set height that you want, just include the `height` attribute and not the `width`.
Now, you can also do these changes with the `style` attribute.
Now, you can also do these changes with the `style` attribute.
<img src="http://i.imgur.com/wjiVXJe.gif" style="width: 600px" />
<img src="http://i.imgur.com/wjiVXJe.gif" style="width: 600px" />
Simple enough! Now, we've looked at the `style` attribute a bit now but I haven't explained the syntax. The `style` attribute is for *inline styles*. This means that you're styling your HTML directly in each element, rather than using CSS. But, we haven't gotten that far yet, so I won't go into that part.
Simple enough! Now, we've looked at the `style` attribute a bit now but I haven't explained the syntax. The `style` attribute is for _inline styles_. This means that you're styling your HTML directly in each element, rather than using CSS. But, we haven't gotten that far yet, so I won't go into that part.
Now, the syntax within a `style` attribute is a little funky. It is always `style="property: value"`, where the *property* is literally a property of the tag you're editing (for example, `color`, `width`, `height`), and the *value* is to what you're changing or editing the property (for example `blue`, `600px`, `#FF0000`).
If you have more than one property that you want to style, for example both height and width, you put a semicolon between delarations. So, in our example, if you want to edit both height and width of our image in the `style` attribute, we'd do:
Now, the syntax within a `style` attribute is a little funky. It is always `style="property: value"`, where the _property_ is literally a property of the tag you're editing (for example, `color`, `width`, `height`), and the _value_ is to what you're changing or editing the property (for example `blue`, `600px`, `#FF0000`).
If you have more than one property that you want to style, for example both height and width, you put a semicolon between delarations. So, in our example, if you want to edit both height and width of our image in the `style` attribute, we'd do:
<img src="http://i.imgur.com/wjiVXJe.gif" style="width: 600px; height: 800px" />
<img src="http://i.imgur.com/wjiVXJe.gif" style="width: 600px; height: 800px" />
Why is the syntax this funky? Well, that's because it's secretly CSS syntax. But we'll get into that more later.
Why is the syntax this funky? Well, that's because it's secretly CSS syntax. But we'll get into that more later.
####Borders
#### Borders
What if we have a paragraph IN A BOX. That's right. Kind of like a table. But not. That'd be cool. Of course, there are plenty of other things that can have a border. Buttons (we'll get to those later), color blocks (also later), and images, and MORE can have them. Mmmhm.
What if we have a paragraph IN A BOX. That's right. Kind of like a table. But not. That'd be cool. Of course, there are plenty of other things that can have a border. Buttons (we'll get to those later), color blocks (also later), and images, and MORE can have them. Mmmhm.
Let's take the same image we played with before:
<img src="http://i.imgur.com/wjiVXJe.gif" />
<img src="http://i.imgur.com/wjiVXJe.gif" />
Now, you can add `border="5"` to this and you'll get a border with a thickness of 5 pixels around the image. But, this attribute is actually no longer supported for things other than tables (oh yeah, we used this for tables. Memories.), so we can do this a better way. You guessed it. `style` is coming to SAVE THE DAY.
Now, you can add `border="5"` to this and you'll get a border with a thickness of 5 pixels around the image. But, this attribute is actually no longer supported for things other than tables (oh yeah, we used this for tables. Memories.), so we can do this a better way. You guessed it. `style` is coming to SAVE THE DAY.
The styling for borders with the `style` attribute is a bit different than just adding `border="5"`, but it's also much more powerful. Let's change our code:
The styling for borders with the `style` attribute is a bit different than just adding `border="5"`, but it's also much more powerful. Let's change our code:
<img src="http://i.imgur.com/wjiVXJe.gif" style="border:5px solid black" />
<img src="http://i.imgur.com/wjiVXJe.gif" style="border:5px solid black" />
Whoa. That's a lot of crap in there. Let's break it down.
Whoa. That's a lot of crap in there. Let's break it down.
The first part of the declaration is obvious, `border`. This is the property that we're editing. Man, this is easy.
The first part of the declaration is obvious, `border`. This is the property that we're editing. Man, this is easy.
Next, we have 3 parts in the value section. The first part is `5px`. Firstly, `px` stands for *pixels*. We used this above for our width and heights as well. You always have to include the units (just like in 5th grade math) in your styling, and our units here are pixels. Now, that whole first part, `5px`, is the border's thickness. You guessed it: it's 5 pixels thick. Gosh you're smart.
The next part is the *border style*. You can plug in several words here, as indicated [on this webpage](http://www.w3schools.com/css/css_border.asp). We used `solid`, but you can also say `dotted`, `dashed`, or `double`. There are some other words you can use, but those depend on the color of the border.
Color? What? OH YEAH. That's the third part of the border style. You can stick in any color for that, but in this example, we have `black`.
Next, we have 3 parts in the value section. The first part is `5px`. Firstly, `px` stands for _pixels_. We used this above for our width and heights as well. You always have to include the units (just like in 5th grade math) in your styling, and our units here are pixels. Now, that whole first part, `5px`, is the border's thickness. You guessed it: it's 5 pixels thick. Gosh you're smart.
The next part is the _border style_. You can plug in several words here, as indicated [on this webpage](http://www.w3schools.com/css/css_border.asp). We used `solid`, but you can also say `dotted`, `dashed`, or `double`. There are some other words you can use, but those depend on the color of the border.
Color? What? OH YEAH. That's the third part of the border style. You can stick in any color for that, but in this example, we have `black`.
Let's mix it up a bit with different borders for you to check out. I'm just going to keep using the same image, you can replace it with whatever. Stick this in the `<body>` tags of style1.html and check it out, and play with the values yourself!
Let's mix it up a bit with different borders for you to check out. I'm just going to keep using the same image, you can replace it with whatever. Stick this in the `<body>` tags of style1.html and check it out, and play with the values yourself!
<img src="http://i.imgur.com/wjiVXJe.gif" style="border:5px dotted #ffcc00" />
<img src="http://i.imgur.com/wjiVXJe.gif" style="border:10px ridge rgb(77, 145, 99); width: 300px" />
<img src="http://i.imgur.com/wjiVXJe.gif" style="border:8px outset red" />
<img src="http://i.imgur.com/wjiVXJe.gif" style="border:3px double #333a21; height: 30px" />
<img src="http://i.imgur.com/wjiVXJe.gif" style="border:5px dotted #ffcc00" />
<img src="http://i.imgur.com/wjiVXJe.gif" style="border:10px ridge rgb(77, 145, 99); width: 300px" />
<img src="http://i.imgur.com/wjiVXJe.gif" style="border:8px outset red" />
<img src="http://i.imgur.com/wjiVXJe.gif" style="border:3px double #333a21; height: 30px" />
Notice how I added `width` and `height` to a couple of them. We're getting incestuous with our stylings. Aww yeah.
Notice how I added `width` and `height` to a couple of them. We're getting incestuous with our stylings. Aww yeah.
#### Text Styles
####Text Styles
Besides having header tags and colors, there are other text styles that you can use. What if you want bold text, or italics? Different sizes? Once again, the `style` attribute comes to the rescue.
Besides having header tags and colors, there are other text styles that you can use. What if you want bold text, or italics? Different sizes? Once again, the `style` attribute comes to the rescue.
Add the following to style1.html in **3 - Styles**:
<p style="text-align: center; font-weight: bold">This text is magnificent.</p>
<p style="text-align: center; font-weight: bold">This text is magnificent.</p>
Load that in a browser and check it out. YUS. You've got some magically centered, bolded text! The properties defined here are pretty simple to follow. `text-align` lets you align your text either `center`, `left`, or `right`. Mess around with that so you get it.
`font-weight`, you guessed it, edits the weight in your text. It can have the values `normal` for normally weighted text, `bold` for thick characters, `bolder` for thicker characters (specific, right?), `lighter` for lighter-weighted characters, and the numbers `100`, `200`, `300`, `400`, `500`, `600`, `700`, `800`, and `900` (where 400 is the same as normal and 700 is the same as bold).
Load that in a browser and check it out. YUS. You've got some magically centered, bolded text! The properties defined here are pretty simple to follow. `text-align` lets you align your text either `center`, `left`, or `right`. Mess around with that so you get it.
`font-weight`, you guessed it, edits the weight in your text. It can have the values `normal` for normally weighted text, `bold` for thick characters, `bolder` for thicker characters (specific, right?), `lighter` for lighter-weighted characters, and the numbers `100`, `200`, `300`, `400`, `500`, `600`, `700`, `800`, and `900` (where 400 is the same as normal and 700 is the same as bold).
Play with this one now:
<p style="font-family: Arial; font-style: italic">This text is magnificent.</p>
<p style="font-family: Arial; font-style: italic">This text is magnificent.</p>
Browser time. You've now got some text in the font Arial, and it's italic! WOOO HOOOOOO.
The properties we used here are `font-family` and `font-style`. For the former, you can choose a lot of fonts, but you have to be careful. Not every computer has the same fonts. This is just my personal opinion: don't put something here besides Arial unless you've done some JavaScript magic. And because I'm assuming you don't know JavaScript, don't use this unless you're changing this to Arial. At least not yet. :)
And for `font-style`, it can be `normal`, `oblique`, and `italic`. You can play with those now, it's pretty straightforward.
Browser time. You've now got some text in the font Arial, and it's italic! WOOO HOOOOOO.
The properties we used here are `font-family` and `font-style`. For the former, you can choose a lot of fonts, but you have to be careful. Not every computer has the same fonts. This is just my personal opinion: don't put something here besides Arial unless you've done some JavaScript magic. And because I'm assuming you don't know JavaScript, don't use this unless you're changing this to Arial. At least not yet. :)
And for `font-style`, it can be `normal`, `oblique`, and `italic`. You can play with those now, it's pretty straightforward.
###The `<head>` Tag
### The `<head>` Tag
Before we start going insane with how good you are at HTML, let's start looking at something that you haven't played with yet. The `<head>` tag.
Before we start going insane with how good you are at HTML, let's start looking at something that you haven't played with yet. The `<head>` tag.
I mentioned before that in the `<head>` is information that the user doesn't see, so it's not that big of a deal, right? WRONG. It's not all about looks. That's at least what I try to tell people when they see me.
I mentioned before that in the `<head>` is information that the user doesn't see, so it's not that big of a deal, right? WRONG. It's not all about looks. That's at least what I try to tell people when they see me.
So. What else can go in the `<head>`? We've already got `<title>`, which we've talked about already to help search engines find us. What if we want to help the search engines out a bit more? Incoming, the `<meta>` tag.
So. What else can go in the `<head>`? We've already got `<title>`, which we've talked about already to help search engines find us. What if we want to help the search engines out a bit more? Incoming, the `<meta>` tag.
The `<meta>` tag gives *metadata* about the HTML document. Metadata will not be displayed on the page, but machines can read it. An example of metadata not on a webpage is in a typical music file. When you have a music file on your computer and you open it in some media player of some kind, it shows the album title, the artist, the genre, and other information about the song. This information is metadata. The user can't see it directly in the music file, but your music players can read it and will tell you what it is.
The `<meta>` tag gives _metadata_ about the HTML document. Metadata will not be displayed on the page, but machines can read it. An example of metadata not on a webpage is in a typical music file. When you have a music file on your computer and you open it in some media player of some kind, it shows the album title, the artist, the genre, and other information about the song. This information is metadata. The user can't see it directly in the music file, but your music players can read it and will tell you what it is.
So, on a website, this metadata is used by search engines, your browser, and other web services to make your website easy to find, read, and display.
There are 4 important uses for the `<meta>` tag. There are plenty of other uses, but let's be honest, I don't care about them right now, and I don't think you do either.
Open up the **4 - Head** (heh get it? Forehead? I crack myself up.) folder, and open cooking.html in your favorite editor.
There are 4 important uses for the `<meta>` tag. There are plenty of other uses, but let's be honest, I don't care about them right now, and I don't think you do either.
Open up the **4 - Head** (heh get it? Forehead? I crack myself up.) folder, and open cooking.html in your favorite editor.
* *Defining keywords for search engines.* Let's say that you have a website that's about cooking, hence our filename. You want people searching for your website to be able to find it. So, you can add the following right before the `<title>` tag:
- _Defining keywords for search engines._ Let's say that you have a website that's about cooking, hence our filename. You want people searching for your website to be able to find it. So, you can add the following right before the `<title>` tag:
`<meta name="keywords" content="cooking, cook, recipe, food, microwave">`
Simple enough. Now, when people search using the terms cooking, cook, recipe, food, and microwave, your website is pushed up in the results. Nice!
Simple enough. Now, when people search using the terms cooking, cook, recipe, food, and microwave, your website is pushed up in the results. Nice!
* *Defining a description of your site.* Again, this one is for the search engines. Whenever you search for a website, there's a tiny description in the search results. Go search for anything right now, and you'll see it. So, you can define what that is with this snippet:
- _Defining a description of your site._ Again, this one is for the search engines. Whenever you search for a website, there's a tiny description in the search results. Go search for anything right now, and you'll see it. So, you can define what that is with this snippet:
`<meta name="description" content="The best cooking website in the entire universe. You're welcome.">`
`<meta name="description" content="The best cooking website in the entire universe. You're welcome.">`
Add this right after the keywords line in cooking.html. Now if people were searching for this, they'd get this description and instantly see that your website is the best cooking website in the universe.
Add this right after the keywords line in cooking.html. Now if people were searching for this, they'd get this description and instantly see that your website is the best cooking website in the universe.
* *Defining the author of a website.* Let's say that someone's looking for the author of your website, because your writing style is sexy. Or something. You can let them know who you are with the following:
- _Defining the author of a website._ Let's say that someone's looking for the author of your website, because your writing style is sexy. Or something. You can let them know who you are with the following:
`<meta name="author" content="Sexy McGoodlooking">`
Add this after your description line, and stick your name in it! I think I got it as close as possible.
Add this after your description line, and stick your name in it! I think I got it as close as possible.
* *Refreshing your document every 30 seconds.* This one is for your browser. Let's say that you have comments available on your recipes, and you want to have the page refresh so the comments can appear "live". Just add this:
- _Refreshing your document every 30 seconds._ This one is for your browser. Let's say that you have comments available on your recipes, and you want to have the page refresh so the comments can appear "live". Just add this:
`<meta http-equiv="refresh" content="30">`
And there you have it, a self-refreshing webpage. You're so good at this.
And there you have it, a self-refreshing webpage. You're so good at this.
###Putting it all together so far
### Putting it all together so far
Okay, you have a pretty solid understanding of stuff so far. I want you to take cooking.html, and make it shine.
Resize the images so the page is more uniform. Add borders to them. Change the font styles and weights. Change the colors. Add some keywords in the metadata and change the title of the page.
Okay, you have a pretty solid understanding of stuff so far. I want you to take cooking.html, and make it shine.
Resize the images so the page is more uniform. Add borders to them. Change the font styles and weights. Change the colors. Add some keywords in the metadata and change the title of the page.
Using the information I've given you so far, you can make a pretty good looking site!
##What, why did we stop?
## What, why did we stop?
This concludes Part 1 of this tutorial! You've done such a great job so far. You're so hot.
[You can find Part 2 here.](http://cassidoo.github.io/html/css/tutorial/2014/02/10/html-css-tutorial-part-2/) Go get 'em!
This concludes Part 1 of this tutorial! You've done such a great job so far. You're so hot.
[You can find Part 2 here.](http://cassidoo.github.io/html/css/tutorial/2014/02/10/html-css-tutorial-part-2/) Go get 'em!

View File

@@ -4,7 +4,7 @@ title: "L4 Digital: First Impressions"
slug: l4-digital-first-week
description: "This week was my first week at L4 Digital!"
added: "Dec 02 2016"
tags: [work]
tags: [work]
---
Hello, world!
@@ -14,11 +14,10 @@ This week was my first at L4 Digital. I came in as a new Seattleite, nervous and
On Monday, I officially joined and started setting up my computer and meeting people.  It was all sorts of HR-type stuff, filling out forms and getting an office tour.  The office is wonderful.  The building dates back to 1893, and inside there's classic elements like exposed brick and beamed ceilings surrounding the glass conference rooms and seas of monitors and gadgets.  One of the rooms is dedicated entirely to foosball (there was a team of people who even built a live scoreboard with bluetooth button score tracking and a Slack integration for it), and there's another room with various video games and a 3D printer that anyone can use!  One thing that I also really appreciated was L4's "phone museum" that is chock-full of old and new devices.  The Director of Engineering, Ben, told me about how difficult it was to program for those old Palm Pilots and Samsung flip phones.  I can only imagine!
On Tuesday and Wednesday, I got more integrated into the team.  I was put on a project and started configuring my computer for some exciting dev work.  While doing so I ended up open sourcing my vim configuration files, so anyone can get up and running with vim quickly:
https://github.com/cassidoo/vim-up
https://github.com/cassidoo/vim-up
Now Thursday was a special day (not that all days at L4 aren't).  Every first Thursday of the month, L4 has what they call "First Thursdays", which involves a company-wide meeting of updates, project demos, and introductions.  We talked about our new parent company, Globant, as well as a bunch of fun and interesting internal projects.  L4 has something called "L4ge" where people can work on projects with people outside of their teams.  Some of those projects included an Alexa receptionist, and a full-on classic arcade cabinet!  After the meeting, everyone headed to a company happy hour nearby, where I got to meet more coworkers and be social with everyone.
Finally, Friday, I got to dive into code!  My machine was finally all set up, so I made my first pull requests in the codebase.  I also got to play some Super Smash Brothers, watch a pushup contest (I politely declined participating when the first person did over 50 of them), join a book club, learn how to use the 3D printer, and try out some of the great office snacks.  Not bad for a Friday.
So, the first week is up!  L4 has made a great first impression on me.  I'm so excited to be a part of a creative, exciting group of people.  Everyone has such a diverse set of interests, and they really emphasize celebrating those here.  I know I made the right choice joining a team like L4, and I'm eagerly anticipating Monday!

View File

@@ -7,13 +7,13 @@ added: "Jul 26 2015"
tags: [technical]
---
I'm a Whitney Houston fan. Anyone who's known me for more than a [moment in time](https://www.youtube.com/watch?v=c84ogrNEds0) would know that (see, making references already, agh I'm so funny).
I'm a Whitney Houston fan. Anyone who's known me for more than a [moment in time](https://www.youtube.com/watch?v=c84ogrNEds0) would know that (see, making references already, agh I'm so funny).
Anyway, I took a nap the other day and I dreamt that I made a Whitney Houston API. So obviously I had to make one.
Anyway, I took a nap the other day and I dreamt that I made a Whitney Houston API. So obviously I had to make one.
But, I had never made an API from scratch before. [I had nothing](https://www.youtube.com/watch?v=FxYw0XPEoKE). But I had to try.
But, I had never made an API from scratch before. [I had nothing](https://www.youtube.com/watch?v=FxYw0XPEoKE). But I had to try.
First, I had to get all of the songs she ever recorded. Wikipedia came to save the day. I scraped [the article of all of her songs](https://en.wikipedia.org/wiki/List_of_songs_recorded_by_Whitney_Houston) with a Python script, and then got to work on parsing it. Let me tell you, it was not fun. The HTML in Wikipedia tables is a pain in the BUTT to deal with. Sure, I *could* do it, but I wouldn't wish that mess on anyone. So, I said to myself, [it's not right, but it's okay](https://www.youtube.com/watch?v=6J538b-OLRU), I'll get through this.
First, I had to get all of the songs she ever recorded. Wikipedia came to save the day. I scraped [the article of all of her songs](https://en.wikipedia.org/wiki/List_of_songs_recorded_by_Whitney_Houston) with a Python script, and then got to work on parsing it. Let me tell you, it was not fun. The HTML in Wikipedia tables is a pain in the BUTT to deal with. Sure, I _could_ do it, but I wouldn't wish that mess on anyone. So, I said to myself, [it's not right, but it's okay](https://www.youtube.com/watch?v=6J538b-OLRU), I'll get through this.
Once I filtered out a lot of crap (like stripping out the links and the special characters) and broke it down into something readable, it looked more like this:
```
@@ -25,9 +25,9 @@ Once I filtered out a lot of crap (like stripping out the links and the special
|-
```
So, it had the title of each song, the artists who sang (most of these were just Whitney), the writer(s), the albums on which the song appeared, and the year it was released. And the weird `|-` delimiter between them.
So, it had the title of each song, the artists who sang (most of these were just Whitney), the writer(s), the albums on which the song appeared, and the year it was released. And the weird `|-` delimiter between them.
The next stop was to convert all of this to JSON. I was all, "[I look to you](https://www.youtube.com/watch?v=5Pze_mdbOK8)" to [JSON API](http://jsonapi.org/) and Stack Overflow at this point so I could make sure I was formatting everything properly. Some kind folks helped me refactor my original script I wrote into this efficient one here:
The next stop was to convert all of this to JSON. I was all, "[I look to you](https://www.youtube.com/watch?v=5Pze_mdbOK8)" to [JSON API](http://jsonapi.org/) and Stack Overflow at this point so I could make sure I was formatting everything properly. Some kind folks helped me refactor my original script I wrote into this efficient one here:
```py
from itertools import groupby
@@ -42,14 +42,14 @@ The next stop was to convert all of this to JSON. I was all, "[I look to you](h
out.write("\n")
```
Thanks so much to [Padraic Cunningham](http://stackoverflow.com/users/2141635/padraic-cunningham) for the assistance with this one. I really wanted to make a reference to the song, [Same Script, Different Cast](https://www.youtube.com/watch?v=5FQgxxJ0Jrg) just because of the excellent pun but the show must go on.
Thanks so much to [Padraic Cunningham](http://stackoverflow.com/users/2141635/padraic-cunningham) for the assistance with this one. I really wanted to make a reference to the song, [Same Script, Different Cast](https://www.youtube.com/watch?v=5FQgxxJ0Jrg) just because of the excellent pun but the show must go on.
Anyway.
I finally had some clean JSON that I could work with!
At this point, I was doing a TON of research into how to actually make an API just from JSON. I didn't want anything fancy like a database or anything, because I figured just a GET would do for this project. After asking plenty of questions here and there and starting and restarting and asking myself [why does it hurt so bad](https://www.youtube.com/watch?v=_EHoj-Oe-Ws) to just do something simple, I found [Instant API](https://github.com/jbradforddillon/instant-api-py)! It was a great solution, and seemed pretty extensible.
At this point, I was doing a TON of research into how to actually make an API just from JSON. I didn't want anything fancy like a database or anything, because I figured just a GET would do for this project. After asking plenty of questions here and there and starting and restarting and asking myself [why does it hurt so bad](https://www.youtube.com/watch?v=_EHoj-Oe-Ws) to just do something simple, I found [Instant API](https://github.com/jbradforddillon/instant-api-py)! It was a great solution, and seemed pretty extensible.
After tweaking and adding some functionality of my own (like an `/all/album` route for example, for each of the groups), I had it! My first API. Sure, it's not perfect, and I'd like to add in functionality for lyrics and other queries, but for now, I'm [celebrating](https://www.youtube.com/watch?v=zgsIGEm3f7w)! [I learned from the best](https://www.youtube.com/watch?v=YFVnVuTcz9I) people on Stack Overflow and in various Facebook groups, so thanks to all of those who helped me understand all of this!
After tweaking and adding some functionality of my own (like an `/all/album` route for example, for each of the groups), I had it! My first API. Sure, it's not perfect, and I'd like to add in functionality for lyrics and other queries, but for now, I'm [celebrating](https://www.youtube.com/watch?v=zgsIGEm3f7w)! [I learned from the best](https://www.youtube.com/watch?v=YFVnVuTcz9I) people on Stack Overflow and in various Facebook groups, so thanks to all of those who helped me understand all of this!
[Here's a link to the Whitney Houston API](https://github.com/cassidoo/whitney-api). Again, it's still a work in progress, but it's been fun so far!
[Here's a link to the Whitney Houston API](https://github.com/cassidoo/whitney-api). Again, it's still a work in progress, but it's been fun so far!

View File

@@ -9,7 +9,7 @@ tags: [learning]
So a little while back I got the app [Sketch Club](http://app.sketchclub.com/), but I never really did anything with it besides using it to annotate photos.
But recently, I decided to stop playing games on the subway and instead try my hand at drawing instead. My conclusion: Sketch Club is AWESOME.
But recently, I decided to stop playing games on the subway and instead try my hand at drawing instead. My conclusion: Sketch Club is AWESOME.
It handles different brushes, layers, layer styles, recordings of drawings, and it's constantly being updated!
I personally like drawing cartoony-style doodles, here's a couple that I did recently:
@@ -19,4 +19,4 @@ I personally like drawing cartoony-style doodles, here's a couple that I did rec
![pic](/assets/totto.jpg)
I still have to improve myself on shading and drawing things other than animals that seem destructive. But hey, it's a great stress reliever, and it's a fun way to feel productive on the way to work. :)
I still have to improve myself on shading and drawing things other than animals that seem destructive. But hey, it's a great stress reliever, and it's a fun way to feel productive on the way to work. :)

View File

@@ -7,29 +7,28 @@ added: "Apr 30 2014"
tags: [advice, personal]
---
This week is my last as the president ISU CSE Club. I haven't been really emotional at all about graduating, but today, I felt it.
This week is my last as the president ISU CSE Club. I haven't been really emotional at all about graduating, but today, I felt it.
During the day I had some meetings with the department about my experience at ISU, and my advisor, Deb, thanked me on behalf of the department.
She was so nice, she said, "We might not get the chance to tell you later, but we're all so grateful for what you've done for the department."
I told her I'd be coming back. I hope to get Venmo on the Iowa State bandwagon.
I told her I'd be coming back. I hope to get Venmo on the Iowa State bandwagon.
I got an email from a high school student in New Jersey later. I had hung out with him and his mom when they visited Iowa State to answer their questions and give advice.
I got an email from a high school student in New Jersey later. I had hung out with him and his mom when they visited Iowa State to answer their questions and give advice.
> Hi Cassidy,
>
> Well I'm happy to say that I am now a Cyclone. Talking with you really helped me make my decision and I would just like to thank you once again. Im really excited about going to Iowa State because the school and the Computer Science Department had everything I was looking for. If you have any advice for me before I go it would be much appreciated. And good luck at Venmo, I'm sure your going to do a great job and enjoy New York.
> Well I'm happy to say that I am now a Cyclone. Talking with you really helped me make my decision and I would just like to thank you once again. Im really excited about going to Iowa State because the school and the Computer Science Department had everything I was looking for. If you have any advice for me before I go it would be much appreciated. And good luck at Venmo, I'm sure your going to do a great job and enjoy New York.
>
> Thanks,
> Glenn
> Glenn
I'm so happy that Glenn made this decision. He and his mom were so nice, and I think he's a very motivated young guy. He's going to be really successful someday.
I'm so happy that Glenn made this decision. He and his mom were so nice, and I think he's a very motivated young guy. He's going to be really successful someday.
Right before our final CSE Club meeting (for those of you who don't know by the way, it's the Computer Science and Software Engineering Club), I got an awesome email from one of our club members.
> Dear Cassidy,
>
> It was fun having as you as the president for my first year of Computer Science at ISU. I know I wasn't very active this second semester, but on top of my classes I had a lot more responsibilities at my church, so its been crazy. =) Being a 2nd degree student, however, last semester being my first semester at ISU, I thought I'd have a rough time finding people to connect with.
> It was fun having as you as the president for my first year of Computer Science at ISU. I know I wasn't very active this second semester, but on top of my classes I had a lot more responsibilities at my church, so its been crazy. =) Being a 2nd degree student, however, last semester being my first semester at ISU, I thought I'd have a rough time finding people to connect with.
>
> CSE club was a great place to meet people, and it helped my connect to others in my same situation. Knowing other 2nd degree students is a blessing. Having you as the face of the club really eased the transition I believe for a lot of people. You are fun, outgoing, a little crazy (don't worry, we all are), intelligent, and you are full of showmanship(show-womanship?). I know some other fellas in the club that also were able to open up to other beautiful women on campus, after being able to interact with you. I know that sounds a little out there, but some of my friends were shy enough around guys they didn't know and some of them even have girlfriends now. O_O
>
@@ -40,13 +39,13 @@ Right before our final CSE Club meeting (for those of you who don't know by the
> Sincerely, with best regards,
> Shawn
This email made my day! I've blogged before about feedback and how much I love it, but this was even beyond that. It made me feel like all of the work I put in was worth it.
This email made my day! I've blogged before about feedback and how much I love it, but this was even beyond that. It made me feel like all of the work I put in was worth it.
After CSE Club, I got some hugs from members, they're all so great.
One girl, Kelsey, came up to me and said, "I don't know if I'll get to tell you this later, but I stayed in computer science because of you. You're my role model, and you gave me something to strive for, and I wouldn't have been as successful as I am now without you. So thank you."
Oh my goodness. I almost cried. She's grown so much as a member of our computer science community. She's studying abroad next year, and she has a software internship this summer! I'm so proud of her.
One girl, Kelsey, came up to me and said, "I don't know if I'll get to tell you this later, but I stayed in computer science because of you. You're my role model, and you gave me something to strive for, and I wouldn't have been as successful as I am now without you. So thank you."
Oh my goodness. I almost cried. She's grown so much as a member of our computer science community. She's studying abroad next year, and she has a software internship this summer! I'm so proud of her.
And finally, I checked my email again, and my professor, Dr. Mitra, sent me an email. He's the CSE Club advisor.
And finally, I checked my email again, and my professor, Dr. Mitra, sent me an email. He's the CSE Club advisor.
> Dear Cassidy,
>
@@ -57,7 +56,7 @@ And finally, I checked my email again, and my professor, Dr. Mitra, sent me an e
> I am really so happy with you and your team. Your successor will have a tough time trying to fill your shoes!
> Simanta
I'm completely overwhelmed at the response my work has gotten. With finals coming next week, and my last official class tomorrow, I'm realizing how much I really will miss Iowa State and the community we have here.
I can only hope I'll have a taste of a warm community like this after school.
I'm completely overwhelmed at the response my work has gotten. With finals coming next week, and my last official class tomorrow, I'm realizing how much I really will miss Iowa State and the community we have here.
I can only hope I'll have a taste of a warm community like this after school.
I suppose though, if I can't find one, I'll build it myself.

View File

@@ -19,19 +19,23 @@ Its just about my growing up as a woman in STEM (Science, Tech, Engineering,
I hope it gives you some inspiration to go after what you want.
And, you know I like feedback! I'm so happy about some of the comments and discussions coming out of the video:
And, you know I like feedback! I'm so happy about some of the comments and discussions coming out of the video:
> "I particularly enjoyed this presentation. For some silly reason, many of the Math, Science and Engineering academic folks do not embrace Computer Science as a core element of STEM. In reality, Computer Science is the cortex of STEM. This young woman encorages everyone to have a passion, explore, network and have fun!
> She is combining her avocation with her vocation! I applaud her.. clap clap clap."
> "I particularly enjoyed this presentation. For some silly reason, many of the Math, Science and Engineering academic folks do not embrace Computer Science as a core element of STEM. In reality, Computer Science is the cortex of STEM. This young woman encorages everyone to have a passion, explore, network and have fun!
> She is combining her avocation with her vocation! I applaud her.. clap clap clap."
>
> - Arta Szathmary
> "I believe that Cassidy is a perfect STEM model for women and humankind."
>
> - Chris Pirillo
> "Cassidy will change the world, I am honored to know and work with her! Please show this video to all your daughters!"
> "Cassidy will change the world, I am honored to know and work with her! Please show this video to all your daughters!"
>
> - Rane Johnson-Stempson
> "Wonderful speech and thank you for being such an inspiration for young women everywhere! I can only hope that the doors you are working to open are there for my daughter when she gets older. Keep up the great work and keep inspiring everyone! <3"
> "Wonderful speech and thank you for being such an inspiration for young women everywhere! I can only hope that the doors you are working to open are there for my daughter when she gets older. Keep up the great work and keep inspiring everyone! <3"
>
> - Dee Sunday
I don't know if any of those people will read this post, but I hope they know how much I appreciated their thoughts!

View File

@@ -7,20 +7,20 @@ added: "Jul 13 2015"
tags: [work]
---
My goodness, I've been at Venmo for a year now. It's a little mind-blowing! I still feel like I just got here, and at the same time, I feel like I've been here forever.
My goodness, I've been at Venmo for a year now. It's a little mind-blowing! I still feel like I just got here, and at the same time, I feel like I've been here forever.
I keep this private journal (check out [Dabble.me](https://dabble.me/), it's awesome), and it's so funny reading my posts from a year ago.
> Today was my first full day of work! I admit I'm pretty intimidated by what lies ahead. I'll be working with languages I don't really know, and I'm using technologies I'm not familiar with. I hope I can learn quickly and show them what I can do!
> Today was my first full day of work! I admit I'm pretty intimidated by what lies ahead. I'll be working with languages I don't really know, and I'm using technologies I'm not familiar with. I hope I can learn quickly and show them what I can do!
As I read through some of them, during my first few months I was just so worried about my performance. I was convinced that I wasn't going anything right.
As I read through some of them, during my first few months I was just so worried about my performance. I was convinced that I wasn't going anything right.
And then, in November, something just clicked. I worked at a hackathon and had a really productive week, and one of my entries simply reads:
And then, in November, something just clicked. I worked at a hackathon and had a really productive week, and one of my entries simply reads:
> I have a sudden motivation to really stand out and be a leader at Venmo.
Almost all of my posts after this one about work are so positive! I didn't realize there was a shift then, but now I can see it over time. Ever since this post, I've been loving my work more and more. I'm getting to work on some cool projects, with some truly wonderful people, and I feel like the company is doing really well.
Almost all of my posts after this one about work are so positive! I didn't realize there was a shift then, but now I can see it over time. Ever since this post, I've been loving my work more and more. I'm getting to work on some cool projects, with some truly wonderful people, and I feel like the company is doing really well.
I love working at Venmo. I'm looking forward to helping the team grow and thrive, and I can't wait until the day Venmo can be used for any payment in the world.
I love working at Venmo. I'm looking forward to helping the team grow and thrive, and I can't wait until the day Venmo can be used for any payment in the world.
And who knows? Maybe, someday, I will get to lead something big at Venmo. Only time will tell. :)
And who knows? Maybe, someday, I will get to lead something big at Venmo. Only time will tell. :)

View File

@@ -7,19 +7,19 @@ added: "Jul 20 2015"
tags: [advice]
---
I love meeting with people. Coffee chats with different people is so fun!
I love meeting with people. Coffee chats with different people is so fun!
But, unfortunately, I don't scale well. After talking with my friend
But, unfortunately, I don't scale well. After talking with my friend
[Rebecca Garcia](http://www.geekgirlweb.com/), I realized I wasn't alone in
this. As you get more involved with work and the community, a coffee chat isn't
this. As you get more involved with work and the community, a coffee chat isn't
just a one-off, it's a constant stream of requests.
I've slowly gotten better at handling them, I use [Assistant.to](http://www.assistant.to/)
to schedule things and try to only meet with people a max of twice a week, but
that's created *quite* the backlog.
that's created _quite_ the backlog.
So, this is a post for you, the meeting requester, and for the benefit of you
and myself/anyone busy to whom you might be reaching out. This is how to ask a
and myself/anyone busy to whom you might be reaching out. This is how to ask a
busy person for a coffee chat.
### 1. Be specific.
@@ -29,16 +29,16 @@ brain! I'm free tomorrow."
I don't know what you mean.
You could want to literally pick pieces of their brain out for all I know. Not
to be dramatic. But you didn't specify.
You could want to literally pick pieces of their brain out for all I know. Not
to be dramatic. But you didn't specify.
Make sure you say *how* you met the person you're contacting, and why you're
contacting them. Simple stuff. Big impact.
Make sure you say _how_ you met the person you're contacting, and why you're
contacting them. Simple stuff. Big impact.
### 2. Be flexible.
You're asking the person to meet you and take time out of their day. So, you
should work with their schedule! Give them several options, let them pick a
You're asking the person to meet you and take time out of their day. So, you
should work with their schedule! Give them several options, let them pick a
location (or pick one that's convenient for them), give them an out, and don't
be sad if they aren't able to meet with you for a while (if at all).
@@ -48,32 +48,32 @@ they'll email you back!
### 3. Don't be afraid to ping them if they haven't gotten back to you in a week.
If someone emails me for a nonspecific coffee chat and I have a bunch of other
emails that day, I might not get back to them for a while. I personally really
appreciate pings. It's a friendly reminder, and it puts you back on someone's
radar. Now, if the busy person doesn't get back to you after a couple pings,
don't fret, and again, don't be sad. They're busy for a reason! There's plenty
of other fish in the sea. And people in the world, if fish isn't your thing.
emails that day, I might not get back to them for a while. I personally really
appreciate pings. It's a friendly reminder, and it puts you back on someone's
radar. Now, if the busy person doesn't get back to you after a couple pings,
don't fret, and again, don't be sad. They're busy for a reason! There's plenty
of other fish in the sea. And people in the world, if fish isn't your thing.
### 4. Be prepared.
If you're nonspecific in your email, that can be frustrating for a busy person
among their mass amounts of meet up requests. Outside of being specific, be
prepared. If they reply back with questions about what you mean, or with
details, be ready to give that information up right away. This is both for your
among their mass amounts of meet up requests. Outside of being specific, be
prepared. If they reply back with questions about what you mean, or with
details, be ready to give that information up right away. This is both for your
benefit and theirs, because you want to get the most out of it, and they want to
give relevant, efficient information and advice!
### That's it.
A *much* better email is something like, "hey, I'm interested in how you got to
where you are today. I'm a ________ at ________, I met you at/read about you in
________ and I just have a few questions about what classes I should take/which
role I should follow/how I should format my resume. Could we meet for coffee?
My treat! I'm pretty free over the next few weeks, Tuesdays and Thursdays are
best! I know you're a busy bee, so I can work around your schedule.
A _much_ better email is something like, "hey, I'm interested in how you got to
where you are today. I'm a **\_\_\_\_** at **\_\_\_\_**, I met you at/read about you in
**\_\_\_\_** and I just have a few questions about what classes I should take/which
role I should follow/how I should format my resume. Could we meet for coffee?
My treat! I'm pretty free over the next few weeks, Tuesdays and Thursdays are
best! I know you're a busy bee, so I can work around your schedule.
Let me know, and see you soon."
This is clear, it gives options for dates, it gives an out, and it lets the
person know what you want from them. If I got this email, I would meet with you.
person know what you want from them. If I got this email, I would meet with you.
Good luck!

View File

@@ -17,4 +17,4 @@ Back in college when my sleeping habits were horrid, I almost lost my vision. My
Anyway. Goodbye, crappy eyesight. I can't wait to be able to hang out at a beach and wear cheap sunglasses and not have to worry about sand getting in my contacts. I can't wait to shower without glasses and see my legs when I shave them. I can't wait to rub my eyes when I'm sleepy and not have to think about moving a contact lens around. I can't wait to not be nervous about going down stairs because my depth perception won't be warped between my glasses and the blurry space between my actual eye and the lens. I can't wait to be able to lay down on a pillow watching TV with no glasses frames pushing against my skin, and be able to fall asleep without worrying about taking my contacts out before doing so. I can't wait to wear a VR headset and not have to think, "am I wearing the skinny glasses so my head can fit in these?" I can't wait to wear headphones and not have to choose based on which ones push my glasses frames in weird ways. I can't wait to put on makeup and not have to push my face 2 inches from the mirror while I do it. I can't wait to see Joe make his silly faces in the morning that he does when I sleep in and he's trying to sneak up on me. I can't wait to hug people and not have to worry about their hair getting caught in my frames.
Tonight, I'll appreciate the blur. Tomorrow, we'll celebrate the clarity!
Tonight, I'll appreciate the blur. Tomorrow, we'll celebrate the clarity!

View File

@@ -4,7 +4,7 @@ title: "Subconscious Learning"
slug: subconscious-learning
description: "I've been learning about... learning lately, specifically subconscious learning. Here's what I've found!"
added: "Mar 16 2016"
tags: [learning]
tags: [learning]
---
One of the things I've done lately is try to passively learn Morse code. I added
@@ -30,7 +30,7 @@ which are released in response to stress. The switches are controlled by the
[amygdala](http://en.wikipedia.org/wiki/Amygdala), the part of the brain that's
responsible for both memory and emotional reactions. There's a really
interesting study by Schwabe, Tegenthoff, and Hoffken that talks about this. You
can read it [here](http://www.biologicalpsychiatryjournal.com/article/S0006-3223(13)00513-1/abstract).
can read it [here](<http://www.biologicalpsychiatryjournal.com/article/S0006-3223(13)00513-1/abstract>).
So, it turns out that when I said that I "operate well under stress" in college,
I wasn't actually making that up!

View File

@@ -7,33 +7,32 @@ added: "Jun 15 2015"
tags: [technical]
---
I remember clear as day several years ago (2007 to be more exact) when transparent PNGs (Portable Network Graphics) became a reality. I was pretty young, at 15 years old, and I was checking out this web design/development forum I regularly looked at for help as I was teaching myself to code.
I remember clear as day several years ago (2007 to be more exact) when transparent PNGs (Portable Network Graphics) became a reality. I was pretty young, at 15 years old, and I was checking out this web design/development forum I regularly looked at for help as I was teaching myself to code.
I logged on, and the site was UGLY. I was so confused. They had pictures of what could have been beautiful icons and graphics, but they all just had these horrible off-color borders and backgrounds.
I logged on, and the site was UGLY. I was so confused. They had pictures of what could have been beautiful icons and graphics, but they all just had these horrible off-color borders and backgrounds.
There was a banner at the top that told me to download Internet Explorer 7, and my life changed. The transparent PNG. Everything was beautiful and shiny. You could have a multi-color background and an image on top of that, and it wouldn't have to line up perfectly to line up with the background.
There was a banner at the top that told me to download Internet Explorer 7, and my life changed. The transparent PNG. Everything was beautiful and shiny. You could have a multi-color background and an image on top of that, and it wouldn't have to line up perfectly to line up with the background.
Now, later, I found out that Microsoft had this whole alpha channel transparency deal figured out since IE5.5, with a proprietary filter called `AlphaImageLoader`. You could add this chunk of CSS and be all set:
Now, later, I found out that Microsoft had this whole alpha channel transparency deal figured out since IE5.5, with a proprietary filter called `AlphaImageLoader`. You could add this chunk of CSS and be all set:
```css
img {
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(...);
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(...);
}
```
But, back then, there was no `filter` property in CSS. It was a totally proprietary extension by Microsoft that only worked in IE. And there were *so* many bugs with it back then, it was beautiful. If you used a PNG background image, links wouldn't often be clickable, and forms might have become unfocusable. It was slow to load. Background images couldn't be positioned nor repeated. Ah, the past. So broken. So delightful.
But, back then, there was no `filter` property in CSS. It was a totally proprietary extension by Microsoft that only worked in IE. And there were _so_ many bugs with it back then, it was beautiful. If you used a PNG background image, links wouldn't often be clickable, and forms might have become unfocusable. It was slow to load. Background images couldn't be positioned nor repeated. Ah, the past. So broken. So delightful.
The PNG was first specified in October of 1996, and became an official international standard in November of 2003. There was a [period of time though when it wasn't so popular](http://www.libpng.org/pub/png/slashpng-1999.html).
Fast forward to now, and the PNG is the most used lossless image compression format on the internet. It was originally created to be a replacement of the GIF, but alas, you can't replace this:
The PNG was first specified in October of 1996, and became an official international standard in November of 2003. There was a [period of time though when it wasn't so popular](http://www.libpng.org/pub/png/slashpng-1999.html).
Fast forward to now, and the PNG is the most used lossless image compression format on the internet. It was originally created to be a replacement of the GIF, but alas, you can't replace this:
![pic](http://i.imgur.com/7GuGra2.gif)
PNG was decided early on to be a single-image format. The developers of PNG tried to change that in 2001 (again, to compete with the GIF) by making the MNG (Multiple-image Network Graphics), but that never took off. Mozilla also tried by making the APNG (Animated Portable Network Graphics) in 2008, but that never really caught on, either.
PNG was decided early on to be a single-image format. The developers of PNG tried to change that in 2001 (again, to compete with the GIF) by making the MNG (Multiple-image Network Graphics), but that never took off. Mozilla also tried by making the APNG (Animated Portable Network Graphics) in 2008, but that never really caught on, either.
Outside of animation, though, the PNG excels relative to the GIF. A PNG file with the same information as a GIF is almost always smaller, by as much as 50%. Dang, son.
Outside of animation, though, the PNG excels relative to the GIF. A PNG file with the same information as a GIF is almost always smaller, by as much as 50%. Dang, son.
The PNG today is great.
It supports grayscale, transparency, palette-based images, non-palette-based RGB[A] images, *and* it's lossless. There's [whole books](http://www.libpng.org/pub/png/book/cover.html) dedicated to how revolutionary it was back in the day.
It supports grayscale, transparency, palette-based images, non-palette-based RGB[A] images, _and_ it's lossless. There's [whole books](http://www.libpng.org/pub/png/book/cover.html) dedicated to how revolutionary it was back in the day.
So take some time, [read up about it](https://en.wikipedia.org/wiki/Portable_Network_Graphics), and appreciate history, darn it.

View File

@@ -23,27 +23,29 @@ By the middle of my junior year, I was using a different laptop, that was actual
So, moral of the story, dont spend too much on the best, state-of-the-art laptop you can when you go to college. Every single one of my friends is on a different machine than the one they started with.
##So, what laptop SHOULD you buy?
## So, what laptop SHOULD you buy?
Well, that depends on what you want to do, and what you like!
Ill give you some general guidelines that should help you. I wont tell you straight up which laptop would be perfect for you, because everyones different (this is like Harry Potter getting a wand, oh boy oh boy), but these ideas should help you out.
*Disclaimer:* Im biased.
_Disclaimer:_ Im biased.
Also Im going to talk about computers that arent as expensive, which means I probably wont mention Macs much. But hey, Macs are good computers. They just cost an arm and a leg.
### For non-technical majors:
Im looking at you, you lovely people who write a lot of papers and proposals for your business classes and your education classes and your sociology classes. Hi. You could probably get away with something not too powerful, but still easy to use and efficient. A Chromebook might be good, if youre okay with using something like GoogleDocs for all of your files. A Microsoft Surface might also be an awesome solution for you, because its lightweight and still has all of Microsoft Office and other cool applications. If you want a more traditional laptop with Windows on it, I recommend the Lenovo ThinkPad E Series and L Series, as well as the Toshiba Satellite laptops. From what Ive seen, those computers are super functional and fast for what you need, and wont destroy your budget.
### For engineers, 3D-modelers, and drafters:
Hey, CAD-users. Youre going to need something with some pretty solid graphics and memory to handle all the things youre making. You should have at least a 2.8 GHz CPU/Processor Speed for an i3 processor, or 1.8 GHz for an i5 or i7 processor, a 500 GB Hard-disk drive, and 4-6 GB RAM. I dont think youll need as high as an i7 processor, but thats just speaking from experience. You might be making something that is greater than I could ever imagine. Anyway, the machines that might just rock your boat are the HP Envy laptops, Asus K-Series laptops, and the Lenovo T Series laptops. These are some pretty powerful machines thatll get the job done.
*For design majors:* Hey, artsy fartsy. For you, Im going to recommend a Mac. The entire Design college at my school uses Macs. They will want you to have a Mac, even if youve already bought a PC. So, get one. Sorry theres not much of an option here. But hey, it makes your choice easy. If you do get a PC, get one with a really good graphics card.
_For design majors:_ Hey, artsy fartsy. For you, Im going to recommend a Mac. The entire Design college at my school uses Macs. They will want you to have a Mac, even if youve already bought a PC. So, get one. Sorry theres not much of an option here. But hey, it makes your choice easy. If you do get a PC, get one with a really good graphics card.
###For programmers and scientific majors:
### For programmers and scientific majors:
Haaaayyyy hollerrrr. Im one of you. For you, you will need the extra RAM, at least 6-8GB, Id say. Youre going to be sticking a lot of data on your computer. Id also go with an i5 processor. You wont be using THAT much power, unless youre doing some extreme OpenGL programming (which if you are, youre brave, and should look at the engineering bullet above). I recommend an ultrabook for you. Itll give you the power and portability you need. I have an i5 Samsung ultrabook, and I really like it. Lenovo has some sexy ultrabooks too. If youre in the field more often (like for biological, animal, or agricultural sciences), I recommend something more like a Toshiba. Theyre really hardcore and can take a hit if you bring it outside.
Boom.
So, there you have it. Now, you might disagree with my laptop opinions here. Again, everyones different. But, these guidelines should give you a general idea of what could be best for you. And again, dont drop too much cash on a computer. Technology is moving fast, and you might end up getting a new one before you even graduate.
##Good luck!
## Good luck!