<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.3">Jekyll</generator><link href="https://dannysalzman.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://dannysalzman.com/" rel="alternate" type="text/html" /><updated>2024-06-30T05:07:34+00:00</updated><id>https://dannysalzman.com/feed.xml</id><title type="html">Danny Salzman</title><subtitle>Exploring Stale Assumptions</subtitle><author><name>Danny Salzman</name><email>me@dannysalzman.com</email></author><entry><title type="html">Weeping at 32</title><link href="https://dannysalzman.com/2024/06/27/weeping-at-32" rel="alternate" type="text/html" title="Weeping at 32" /><published>2024-06-27T00:00:00+00:00</published><updated>2024-06-27T00:00:00+00:00</updated><id>https://dannysalzman.com/2024/06/27/weeping-at-32</id><content type="html" xml:base="https://dannysalzman.com/2024/06/27/weeping-at-32"><![CDATA[<blockquote>
  <p>“Do you think,” said he, “I have not just cause to weep, when I consider that Alexander at my age had conquered so many nations, and I have all this time done nothing that is memorable?”</p>

  <p>— Julius Caesar, as recounted by Plutarch in <em>Parallel Lives</em></p>
</blockquote>

<p>Caesar was 32 at the time of the quote. The same age of Alexander the Great when he died. Alexander had created the largest empire of his time. I turned 32 this year as well. While my ambitions are lower I understand the feelings of Caesar. It’s reassuring to know that even Julius Caesar had imposter syndrome and achieved his greatest exploits later in life.</p>]]></content><author><name>Danny Salzman</name><email>me@dannysalzman.com</email></author><category term="quotes" /><summary type="html"><![CDATA[“Do you think,” said he, “I have not just cause to weep, when I consider that Alexander at my age had conquered so many nations, and I have all this time done nothing that is memorable?” — Julius Caesar, as recounted by Plutarch in Parallel Lives]]></summary></entry><entry><title type="html">Modding Alphasmart Neo for wireless BLE transfer</title><link href="https://dannysalzman.com/2024/06/20/modding-alphasmart-neo-for-wireless-ble-transfer" rel="alternate" type="text/html" title="Modding Alphasmart Neo for wireless BLE transfer" /><published>2024-06-20T00:00:00+00:00</published><updated>2024-06-20T00:00:00+00:00</updated><id>https://dannysalzman.com/2024/06/20/modding-alphasmart-neo-for-wireless-ble-transfer</id><content type="html" xml:base="https://dannysalzman.com/2024/06/20/modding-alphasmart-neo-for-wireless-ble-transfer"><![CDATA[<h2 id="tldr">TLDR</h2>
<p>I love the simplicity of writing on an Alphasmart Neo. I scored a few from a middle school. The one thing that I wish it had was wireless transfer capabilities. I added an ESP32 to act as a USB host and then emulate a BLE keyboard. This allows for easy transfer of text without modifying the original board or firmware.</p>

<h2 id="demo">Demo</h2>
<div style="padding:56.25% 0 0 0;position:relative;"><iframe src="https://player.vimeo.com/video/963920224?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479" frameborder="0" allow="autoplay; fullscreen; picture-in-picture; clipboard-write" style="position:absolute;top:0;left:0;width:100%;height:100%;" title="Alphasmart Neo - BLE USB transfer"></iframe></div>
<script src="https://player.vimeo.com/api/player.js"></script>

<h2 id="prototype-hardware-modification">Prototype Hardware Modification</h2>

<p><img src="/files/projects/neo-hw-1.jpeg" alt="Alphasmart Neo Mod" style="width:750px;" /></p>

<p>At the heart of the mod is ~$10 esp32-s3-devkitc-1 module. I picked this module since it splits out the USB Host port from the programming/serial port which reduces debugging time. The ESP takes 5V directly from the Alphasmart. I cut a micro USB cable to connect the ESP32 to the underside of the USB Type B plug. Power is switched so you can put the Alphasmart into BLE keyboard mode with power on. This is a first pass attempt so I just used Myler tape to secure the device and wire together. I did this on my second Neo and will do a “cleaner” install on my other one.</p>

<h2 id="next-steps">Next Steps</h2>

<ol>
  <li>Document the code and schematic.</li>
  <li>Add local OTA WiFi updating.</li>
  <li>Add command mode to firmware.</li>
  <li>Add Jekyll Blog posting capabilities.</li>
  <li>Add post to Twitter capabilities.</li>
</ol>]]></content><author><name>Danny Salzman</name><email>me@dannysalzman.com</email></author><category term="project" /><category term="hardware" /><summary type="html"><![CDATA[TLDR I love the simplicity of writing on an Alphasmart Neo. I scored a few from a middle school. The one thing that I wish it had was wireless transfer capabilities. I added an ESP32 to act as a USB host and then emulate a BLE keyboard. This allows for easy transfer of text without modifying the original board or firmware.]]></summary></entry><entry><title type="html">Test</title><link href="https://dannysalzman.com/2024/03/11/test" rel="alternate" type="text/html" title="Test" /><published>2024-03-11T00:00:00+00:00</published><updated>2024-03-11T00:00:00+00:00</updated><id>https://dannysalzman.com/2024/03/11/test</id><content type="html" xml:base="https://dannysalzman.com/2024/03/11/test"><![CDATA[<p>This is the content of the file.</p>]]></content><author><name>Danny Salzman</name><email>me@dannysalzman.com</email></author><summary type="html"><![CDATA[This is the content of the file.]]></summary></entry><entry><title type="html">Eliminate Bad Habits First</title><link href="https://dannysalzman.com/2024/02/09/bad-habits" rel="alternate" type="text/html" title="Eliminate Bad Habits First" /><published>2024-02-09T00:00:00+00:00</published><updated>2024-02-09T00:00:00+00:00</updated><id>https://dannysalzman.com/2024/02/09/bad-habits</id><content type="html" xml:base="https://dannysalzman.com/2024/02/09/bad-habits"><![CDATA[<p>In our constant quest for improvement, we often gravitate towards adding new habits, skills, or routines to our lives. It’s a forward-thinking approach, fueled by the optimistic belief that more of the right stuff will make us better, happier, and more successful. But there’s a hidden power in the opposite direction that we frequently overlook: the power of removing bad habits.</p>

<p>The concept of compounding is well understood in the realm of finance. Small, consistent investments grow exponentially over time, thanks to the magic of interest working on interest. This principle is celebrated for its ability to generate wealth, but it’s equally potent in a less celebrated domain: the compounding effects of our habits.</p>

<p>Just as positive habits can build up to create massive benefits over time, negative habits can compound, leading to increasingly detrimental effects. It’s not just a matter of bad habits taking up time or energy that could be better spent. It’s about the way these habits can erode our foundations, bit by bit, day by day, in a silent crescendo of consequences.</p>

<p>Consider this: removing a bad habit is akin to stopping a compounding loss. It’s not merely about getting back the time, money, or health that the habit consumes; it’s about halting a negative compounding effect that can be profoundly damaging over time. The absence of a bad habit doesn’t just return us to a neutral state; it lifts a burden that’s been doubling down on our potential, holding us back in unseen ways.</p>

<p>This isn’t to say that adopting positive habits isn’t worthwhile. It absolutely is. But there’s an asymmetry in the impact of negative versus positive habits that we must acknowledge. A bad habit can have a more significant, more immediate detrimental effect on our lives than the addition of a good habit can have a beneficial one. The reason is simple: bad habits often directly counteract our efforts to improve, creating a constant need to overcome self-imposed obstacles.</p>

<p>The process of removing a bad habit often involves deep self-reflection, acknowledgment of the harm it causes, and the implementation of strategies to break the cycle. It’s not easy, and it’s not quick. But the payoff is immense. By removing just one significant bad habit, you can potentially unlock a future that’s been stifled, bit by bit, by the compound interest of poor choices.</p>

<p>So, while you’re considering what new habits to build, take a moment to look in the other direction. What habits are holding you back? What negative compounding can you stop today? The power of compounding works both ways, and sometimes, the most effective way to move forward is to first take something away.</p>]]></content><author><name>Danny Salzman</name><email>me@dannysalzman.com</email></author><category term="essay" /><summary type="html"><![CDATA[An essay]]></summary></entry><entry><title type="html">Welcome to shortcuts!</title><link href="https://dannysalzman.com/2022/03/11/test" rel="alternate" type="text/html" title="Welcome to shortcuts!" /><published>2022-03-11T00:00:00+00:00</published><updated>2022-03-11T00:00:00+00:00</updated><id>https://dannysalzman.com/2022/03/11/test</id><content type="html" xml:base="https://dannysalzman.com/2022/03/11/test"><![CDATA[<h1 id="welcome">Welcome</h1>

<p><strong>Hello world</strong>, this is my first Jekyll blog post from ios shortcuts.</p>

<p>I hope you like it!</p>]]></content><author><name>Danny Salzman</name><email>me@dannysalzman.com</email></author><summary type="html"><![CDATA[Welcome]]></summary></entry><entry><title type="html">Learning [2009]</title><link href="https://dannysalzman.com/2020/11/17/learning-2009" rel="alternate" type="text/html" title="Learning [2009]" /><published>2020-11-17T00:00:00+00:00</published><updated>2020-11-17T00:00:00+00:00</updated><id>https://dannysalzman.com/2020/11/17/learning-2009</id><content type="html" xml:base="https://dannysalzman.com/2020/11/17/learning-2009"><![CDATA[<p><em>An essay I wrote in high school in the style of Thoreau. I still struggle with and contemplate these ideas ten years later</em></p>

<p>These last three days I have partaken in
an experiment of my own devising.
Testing my own will to succeed, to better my own well being,
pushing myself from the mold of normalcy
to a higher plateau of moral righteousness.</p>

<p>I departed to a port of higher learning,
battling the sea monsters and dragons
that I met on the way.</p>

<p>Many in today’s modern world have abandoned ship
and are left floating in this Sea of Ambiguity,
not able to reach the shores of enlightenment.</p>

<p>I do not understand, with the amount of information
available to the average citizen
through the marvels of technology,
how little people are actually learning.</p>

<p>They learn facts and dates, but they don’t become
any wiser because of them.
They learn of Hitler and Mao’s Cultural Revolution,
but not the effects they had on our own existence.</p>

<p>They are learning, but not becoming any wiser.
They study for grades and college credit.
They have become machines that know only facts and equations.
They are puzzled by true questions of wisdom.</p>

<p>Confucius stated that:
“Learning without thought is labor lost;
thought without learning is perilous.”</p>

<p>I have created my experiment for those
that do not know the true meaning of knowledge
and go through life living like a tree without roots.</p>

<p>A clever man without wisdom
is like a beautiful flower without fragrance.
The younger generations today
are growing up without substance,
but it is never too late to start learning.</p>

<p>My journey through the government funded education system
has been a never ending cycle of redundancy.
I can hardly remember my past studies,
since I never truly learned them.</p>

<p>I was taught how to manipulate the information
and obtain the wanted outcome,
but I didn’t learn how these manipulations occur
and what that manipulation meant.</p>

<p>I have learned more from conversing with a wiser man
than I have learned in years of study.
Our schools preach to “commit minds to inquiry,
hearts to compassion, and lives to the service of humanity,”
but they only teach a system of self advancement;
a human assembly line fabricating children
for the dreariness of adult life.</p>

<p>People are so swept into this system set for them
that they are not their own person,
but rather just a template filled in.</p>

<p>You must follow your own independent path.
Choose how to react to the stimuli of nature;
follow your heart, not the rhythmic march of society.
I’d rather follow a dismal path that I have chosen
than a paved road that was selected for me.</p>

<p>As I previously stated, learning is meaningless
unless one applies it to their own existence;
bearings for their own life journey.</p>

<p>For my experiment, I did not learn for the sake of learning,
but for the betterment of my own understanding,
to apply knowledge to my own life.</p>

<p>In school we learn many things, but never
how these things can better our own existence.
Without applying ones knowledge to their lives
you create a generation of robots,
stunted in their ability to think for themselves,
losing the rich diversity that makes life so interesting.</p>

<p>Trying to seek this state of personal knowledge
I began to relate all of my studies to my own experience.
I became more somber and quiet during studies
not to merely listen to the lectures, but to absorb
and then analyze for relevant information.</p>

<p>Immediately, I was isolated from my fellow classmates
because of a lack of communication
that I normally partake in throughout classes.</p>

<p>I feel separated. I hear echoing chatter of colleges,
the future, and grade point averages.
I know that I should be worried about these things,
but I just don’t think college and my future
need, or have to be, a constant focus of attention.</p>

<p>Everyone at New Trier will go to college.
So why does everyone worry?
As I listened to voice thread presentations,
I wondered how all these motifs,
that we spend such an extravagant amount of time researching,
effect our lives in our own small worlds?</p>

<p>I know how the theme of “By the People”
pertains to the Presidential Election,
but how does it effect my life? Why should I care?
I feel a sense of pointlessness and frustration
in the breadth of our lessons.</p>

<p>I think of the way that we are taught,
the system of memorizing until one’s brain
just can’t contain the mess of facts and dates,
and then begins the system of forgetting.</p>

<p>This cycle leaves us as confused as when we started.
We learn a lot about nothing.
If the human race strived to learn
at the higher capacity that I speak of,
it would result in a renaissance of the spirit of mankind.</p>

<p>While one might assume that to be their own persons
one needs to be independent of other’s ideas,
if you take directions along the way,
but keep your destination,
haven’t you kept your own path?</p>

<p>To achieve a happy and honest life
one needs to listen to others
no matter what you might think of their character
or your feelings toward them
because everyone has something wise to contribute.</p>

<p>During discussions, we are all too preoccupied
by our own questions to listen to the answers
given by our fellow students.
We are like horses with blinders
galloping across intersections.
We fail to realize that much of our own questions
are already answered.</p>

<p>During discussions, I felt it hard to contain my own opinion
and listen to the opinions of my classmates,
isolating me from my normal role
of the classroom’s “devil’s advocate.”</p>

<p>I devised a system of virtual advocating,
writing down the thoughts of others
and relating them to each other.
Listening is the most powerful tool a student can use.
Without it, one cannot progress
to any higher level of thought.</p>

<p>While we haven’t reached the level of dystopia of “1984”,
society is becoming more and more singular.
On the surface, there seems to be more choices,
but this can be deceiving.</p>

<p>I have marched to my own step,
danced to my own tune,
and forged my own paths.</p>

<p>We all must consider our path in life.
Is it a sensational adventure,
or a forced march?</p>

<p>As a society, we must learn to listen to one another
and actually think about each other’s opinions.</p>

<p>As the roots of a tree spread down into the moist soil,
they grow in all directions, independent of one another,
but they work together searching for water and nutrients
that keep the tree as a whole growing strong.</p>]]></content><author><name>Danny Salzman</name><email>me@dannysalzman.com</email></author><category term="essay" /><category term="learning" /><summary type="html"><![CDATA[An essay]]></summary></entry><entry><title type="html">Kudoos - How to Train your Remote Employee</title><link href="https://dannysalzman.com/2020/08/25/how-to-train-remote-employee" rel="alternate" type="text/html" title="Kudoos - How to Train your Remote Employee" /><published>2020-08-25T00:00:00+00:00</published><updated>2020-08-25T00:00:00+00:00</updated><id>https://dannysalzman.com/2020/08/25/how-to-train-remote-employee</id><content type="html" xml:base="https://dannysalzman.com/2020/08/25/how-to-train-remote-employee"><![CDATA[<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>How to Train your Remote Employee</title><style>
/* webkit printing magic: print all background colors */
html {
	-webkit-print-color-adjust: exact;
}
* {
	box-sizing: border-box;
	-webkit-print-color-adjust: exact;
}

html,
body {
	margin: 0;
	padding: 0;
}
@media only screen {
	body {
		margin: 2em auto;
		max-width: 900px;
		color: rgb(55, 53, 47);
	}
}

body {
	line-height: 1.5;
	white-space: pre-wrap;
}

a,
a.visited {
	color: inherit;
	text-decoration: underline;
}

.pdf-relative-link-path {
	font-size: 80%;
	color: #444;
}

h1,
h2,
h3 {
	letter-spacing: -0.01em;
	line-height: 1.2;
	font-weight: 600;
	margin-bottom: 0;
}

.page-title {
	font-size: 2.5rem;
	font-weight: 700;
	margin-top: 0;
	margin-bottom: 0.75em;
}

h1 {
	font-size: 1.875rem;
	margin-top: 1.875rem;
}

h2 {
	font-size: 1.5rem;
	margin-top: 1.5rem;
}

h3 {
	font-size: 1.25rem;
	margin-top: 1.25rem;
}

.source {
	border: 1px solid #ddd;
	border-radius: 3px;
	padding: 1.5em;
	word-break: break-all;
}

.callout {
	border-radius: 3px;
	padding: 1rem;
}

figure {
	margin: 1.25em 0;
	page-break-inside: avoid;
}

figcaption {
	opacity: 0.5;
	font-size: 85%;
	margin-top: 0.5em;
}

mark {
	background-color: transparent;
}

.indented {
	padding-left: 1.5em;
}

hr {
	background: transparent;
	display: block;
	width: 100%;
	height: 1px;
	visibility: visible;
	border: none;
	border-bottom: 1px solid rgba(55, 53, 47, 0.09);
}

img {
	max-width: 100%;
}

@media only print {
	img {
		max-height: 100vh;
		object-fit: contain;
	}
}

@page {
	margin: 1in;
}

.collection-content {
	font-size: 0.875rem;
}

.column-list {
	display: flex;
	justify-content: space-between;
}

.column {
	padding: 0 1em;
}

.column:first-child {
	padding-left: 0;
}

.column:last-child {
	padding-right: 0;
}

.table_of_contents-item {
	display: block;
	font-size: 0.875rem;
	line-height: 1.3;
	padding: 0.125rem;
}

.table_of_contents-indent-1 {
	margin-left: 1.5rem;
}

.table_of_contents-indent-2 {
	margin-left: 3rem;
}

.table_of_contents-indent-3 {
	margin-left: 4.5rem;
}

.table_of_contents-link {
	text-decoration: none;
	opacity: 0.7;
	border-bottom: 1px solid rgba(55, 53, 47, 0.18);
}

table,
th,
td {
	border: 1px solid rgba(55, 53, 47, 0.09);
	border-collapse: collapse;
}

table {
	border-left: none;
	border-right: none;
}

th,
td {
	font-weight: normal;
	padding: 0.25em 0.5em;
	line-height: 1.5;
	min-height: 1.5em;
	text-align: left;
}

th {
	color: rgba(55, 53, 47, 0.6);
}

ol,
ul {
	margin: 0;
	margin-block-start: 0.6em;
	margin-block-end: 0.6em;
}

li > ol:first-child,
li > ul:first-child {
	margin-block-start: 0.6em;
}


ul.to-do-list {
	text-indent: -1.7em;
}

ul.to-do-list > li {
	list-style: none;
}

.to-do-children-checked {
	text-decoration: line-through;
	opacity: 0.375;
}

ul.toggle > li {
	list-style: none;
}

ul {
	padding-inline-start: 1.7em;
}

ul > li {
	padding-left: 0.1em;
}

ol {
	padding-inline-start: 1.6em;
}

ol > li {
	padding-left: 0.2em;
}

.mono ol {
	padding-inline-start: 2em;
}

.mono ol > li {
	text-indent: -0.4em;
}

.toggle {
	padding-inline-start: 0em;
	list-style-type: none;
}

/* Indent toggle children */
.toggle > li > details {
	padding-left: 1.7em;
}

.toggle > li > details > summary {
	margin-left: -1.1em;
}

.selected-value {
	display: inline-block;
	padding: 0 0.5em;
	background: rgba(206, 205, 202, 0.5);
	border-radius: 3px;
	margin-right: 0.5em;
	margin-top: 0.3em;
	margin-bottom: 0.3em;
	white-space: nowrap;
}

.collection-title {
	display: inline-block;
	margin-right: 1em;
}

time {
	opacity: 0.5;
}

.icon {
	display: inline-block;
	max-width: 1.2em;
	max-height: 1.2em;
	text-decoration: none;
	vertical-align: text-bottom;
	margin-right: 0.5em;
}

img.icon {
	border-radius: 3px;
}

.user-icon {
	width: 1.5em;
	height: 1.5em;
	border-radius: 100%;
	margin-right: 0.5rem;
}

.user-icon-inner {
	font-size: 0.8em;
}

.text-icon {
	border: 1px solid #000;
	text-align: center;
}

.page-cover-image {
	display: block;
	object-fit: cover;
	width: 100%;
	height: 30vh;
}

.page-header-icon {
	font-size: 3rem;
	margin-bottom: 1rem;
}

.page-header-icon-with-cover {
	margin-top: -0.72em;
	margin-left: 0.07em;
}

.page-header-icon img {
	border-radius: 3px;
}

.link-to-page {
	margin: 1em 0;
	padding: 0;
	border: none;
	font-weight: 500;
}

p > .user {
	opacity: 0.5;
}

td > .user,
td > time {
	white-space: nowrap;
}

input[type="checkbox"] {
	transform: scale(1.5);
	margin-right: 0.6em;
	vertical-align: middle;
}

p {
	margin-top: 0.5em;
	margin-bottom: 0.5em;
}

.image {
	border: none;
	margin: 1.5em 0;
	padding: 0;
	border-radius: 0;
	text-align: center;
}

.code,
code {
	background: rgba(135, 131, 120, 0.15);
	border-radius: 3px;
	padding: 0.2em 0.4em;
	border-radius: 3px;
	font-size: 85%;
	tab-size: 2;
}

code {
	color: #eb5757;
}

.code {
	padding: 1.5em 1em;
}

.code-wrap {
	white-space: pre-wrap;
	word-break: break-all;
}

.code > code {
	background: none;
	padding: 0;
	font-size: 100%;
	color: inherit;
}

blockquote {
	font-size: 1.25em;
	margin: 1em 0;
	padding-left: 1em;
	border-left: 3px solid rgb(55, 53, 47);
}

.bookmark {
	text-decoration: none;
	max-height: 8em;
	padding: 0;
	display: flex;
	width: 100%;
	align-items: stretch;
}

.bookmark-title {
	font-size: 0.85em;
	overflow: hidden;
	text-overflow: ellipsis;
	height: 1.75em;
	white-space: nowrap;
}

.bookmark-text {
	display: flex;
	flex-direction: column;
}

.bookmark-info {
	flex: 4 1 180px;
	padding: 12px 14px 14px;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
}

.bookmark-image {
	width: 33%;
	flex: 1 1 180px;
	display: block;
	position: relative;
	object-fit: cover;
	border-radius: 1px;
}

.bookmark-description {
	color: rgba(55, 53, 47, 0.6);
	font-size: 0.75em;
	overflow: hidden;
	max-height: 4.5em;
	word-break: break-word;
}

.bookmark-href {
	font-size: 0.75em;
	margin-top: 0.25em;
}

.sans { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, "Apple Color Emoji", Arial, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol"; }
.code { font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; }
.serif { font-family: Lyon-Text, Georgia, YuMincho, "Yu Mincho", "Hiragino Mincho ProN", "Hiragino Mincho Pro", "Songti TC", "Songti SC", "SimSun", "Nanum Myeongjo", NanumMyeongjo, Batang, serif; }
.mono { font-family: iawriter-mono, Nitti, Menlo, Courier, monospace; }
.pdf .sans { font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, "Apple Color Emoji", Arial, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol", 'Twemoji', 'Noto Color Emoji', 'Noto Sans CJK SC', 'Noto Sans CJK KR'; }

.pdf .code { font-family: Source Code Pro, "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace, 'Twemoji', 'Noto Color Emoji', 'Noto Sans Mono CJK SC', 'Noto Sans Mono CJK KR'; }

.pdf .serif { font-family: PT Serif, Lyon-Text, Georgia, YuMincho, "Yu Mincho", "Hiragino Mincho ProN", "Hiragino Mincho Pro", "Songti TC", "Songti SC", "SimSun", "Nanum Myeongjo", NanumMyeongjo, Batang, serif, 'Twemoji', 'Noto Color Emoji', 'Noto Sans CJK SC', 'Noto Sans CJK KR'; }

.pdf .mono { font-family: PT Mono, iawriter-mono, Nitti, Menlo, Courier, monospace, 'Twemoji', 'Noto Color Emoji', 'Noto Sans Mono CJK SC', 'Noto Sans Mono CJK KR'; }

.highlight-default {
}
.highlight-gray {
	color: rgb(155,154,151);
}
.highlight-brown {
	color: rgb(100,71,58);
}
.highlight-orange {
	color: rgb(217,115,13);
}
.highlight-yellow {
	color: rgb(223,171,1);
}
.highlight-teal {
	color: rgb(15,123,108);
}
.highlight-blue {
	color: rgb(11,110,153);
}
.highlight-purple {
	color: rgb(105,64,165);
}
.highlight-pink {
	color: rgb(173,26,114);
}
.highlight-red {
	color: rgb(224,62,62);
}
.highlight-gray_background {
	background: rgb(235,236,237);
}
.highlight-brown_background {
	background: rgb(233,229,227);
}
.highlight-orange_background {
	background: rgb(250,235,221);
}
.highlight-yellow_background {
	background: rgb(251,243,219);
}
.highlight-teal_background {
	background: rgb(221,237,234);
}
.highlight-blue_background {
	background: rgb(221,235,241);
}
.highlight-purple_background {
	background: rgb(234,228,242);
}
.highlight-pink_background {
	background: rgb(244,223,235);
}
.highlight-red_background {
	background: rgb(251,228,228);
}
.block-color-default {
	color: inherit;
	fill: inherit;
}
.block-color-gray {
	color: rgba(55, 53, 47, 0.6);
	fill: rgba(55, 53, 47, 0.6);
}
.block-color-brown {
	color: rgb(100,71,58);
	fill: rgb(100,71,58);
}
.block-color-orange {
	color: rgb(217,115,13);
	fill: rgb(217,115,13);
}
.block-color-yellow {
	color: rgb(223,171,1);
	fill: rgb(223,171,1);
}
.block-color-teal {
	color: rgb(15,123,108);
	fill: rgb(15,123,108);
}
.block-color-blue {
	color: rgb(11,110,153);
	fill: rgb(11,110,153);
}
.block-color-purple {
	color: rgb(105,64,165);
	fill: rgb(105,64,165);
}
.block-color-pink {
	color: rgb(173,26,114);
	fill: rgb(173,26,114);
}
.block-color-red {
	color: rgb(224,62,62);
	fill: rgb(224,62,62);
}
.block-color-gray_background {
	background: rgb(235,236,237);
}
.block-color-brown_background {
	background: rgb(233,229,227);
}
.block-color-orange_background {
	background: rgb(250,235,221);
}
.block-color-yellow_background {
	background: rgb(251,243,219);
}
.block-color-teal_background {
	background: rgb(221,237,234);
}
.block-color-blue_background {
	background: rgb(221,235,241);
}
.block-color-purple_background {
	background: rgb(234,228,242);
}
.block-color-pink_background {
	background: rgb(244,223,235);
}
.block-color-red_background {
	background: rgb(251,228,228);
}
.select-value-color-default { background-color: rgba(206,205,202,0.5); }
.select-value-color-gray { background-color: rgba(155,154,151, 0.4); }
.select-value-color-brown { background-color: rgba(140,46,0,0.2); }
.select-value-color-orange { background-color: rgba(245,93,0,0.2); }
.select-value-color-yellow { background-color: rgba(233,168,0,0.2); }
.select-value-color-green { background-color: rgba(0,135,107,0.2); }
.select-value-color-blue { background-color: rgba(0,120,223,0.2); }
.select-value-color-purple { background-color: rgba(103,36,222,0.2); }
.select-value-color-pink { background-color: rgba(221,0,129,0.2); }
.select-value-color-red { background-color: rgba(255,0,26,0.2); }

.checkbox {
	display: inline-flex;
	vertical-align: text-bottom;
	width: 16;
	height: 16;
	background-size: 16px;
	margin-left: 2px;
	margin-right: 5px;
}

.checkbox-on {
	background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%2358A9D7%22%2F%3E%0A%3Cpath%20d%3D%22M6.71429%2012.2852L14%204.9995L12.7143%203.71436L6.71429%209.71378L3.28571%206.2831L2%207.57092L6.71429%2012.2852Z%22%20fill%3D%22white%22%2F%3E%0A%3C%2Fsvg%3E");
}

.checkbox-off {
	background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20x%3D%220.75%22%20y%3D%220.75%22%20width%3D%2214.5%22%20height%3D%2214.5%22%20fill%3D%22white%22%20stroke%3D%22%2336352F%22%20stroke-width%3D%221.5%22%2F%3E%0A%3C%2Fsvg%3E");
}
	
</style></head><body><article id="a8786e28-940e-481a-88b6-5224ae91fc6e" class="page sans"><header></header><div class="page-body"><figure id="9908aef5-23a6-4991-a859-9bcc2b75d3af"><div class="source"><iframe src="https://player.vimeo.com/video/422640276" width="640" height="360" frameborder="0" allow="autoplay; fullscreen" allowfullscreen=""></iframe>
</div></figure><h1 id="2a4b2c92-b4d9-44b3-b7c7-4ad5fbd88f48" class="">What is Kudoos?</h1><p id="1cd3001f-a94e-407c-8984-290fc480de35" class="">Using <a href="https://www.thesprucepets.com/ways-to-reward-a-dog-1118276">p</a>ositive reinforcement to train your employee means you reward the behaviors you like and ignore the behaviors you do not like. You can use praise, life rewards (such as awards, a bonus, or recognition to reward your employees. </p><p id="d65ba3f3-eb84-4ad8-92d4-a70f35f737c0" class="">
</p><p id="263d2fcb-e82e-4f9e-86b7-4a5cb576fb54" class="">The Kudoos is a another effective method to for remote managers to positively reinforce good work for their employees. It’s automatic, safe, and easy!</p><p id="0fbebc76-8f57-4895-9356-c6e0ad14a537" class="">
</p><p id="a0bd861b-11b8-4d8e-88c7-290094860d2c" class="">The Kudoos is an internet connected smart device that dispenses your employees favorite treat when they complete actions or goals specified by their manager. This could be completing a Jira task or crushing a presentation. Kudoos has integrations into Jira, Slack, and Zoom! </p><p id="1995bc0d-074a-4eb3-a44f-3492ccaca93a" class="">
</p><p id="866ee7a3-2c49-41e3-bd6a-b239c3d1ecf6" class="">Use the Kudoos slash command to quickly reward a teammate for a great idea. It’s immediate feedback! They will love it. </p><h2 id="221c5e03-cf83-47c9-922d-746b02e4bf05" class="">Slack Integration 😃</h2><p id="8be6ca5f-721c-4874-bc8b-9934711bc42c" class="">Kudoos also has a custom slack integration to quickly give your team member some Kudoos. </p><h3 id="c7ce9347-9ede-4105-8395-63202283de27" class="">Did they just squash a massive bug? </h3><p id="70d722ee-e23c-4b70-9b78-833e946dc493" class="">Give some Kudoos. </p><h3 id="1900ba19-4c18-4e3a-8111-d74e3976f5e3" class="">Did your employee stay up late crushing some new code? </h3><p id="8edfac47-88d0-4cd5-a836-3f54d2fe63bf" class="">Give some Kudoos.</p><h3 id="f04de163-b370-4780-8abe-35e6adc4b821" class="">Did your badass team grind out another killer sprint to make your deadline? </h3><p id="0580b504-aac6-467b-a3b0-f0689d7f0634" class="">Give some Kudoos. </p><pre id="22d94418-54d8-44cd-aa1f-207964f3981a" class="code"><code>/feed [employee #] [amount] </code></pre><p id="9e79b77d-9238-4b4a-8dcb-f3f1b89b35ff" class="">
</p><h1 id="2397ab48-94c3-4391-8291-3e875c81bf1b" class="">JIRA Integration</h1><p id="b6332038-f25c-4710-afc3-f156f163cd37" class="">Kudoos integrates seamlessly with JIRA to dispense treats when stories or tasks are completed. You can even make the Kudoos dispense based on the story points! </p><h2 id="a87296c6-1f5e-4073-9fd0-179222161b82" class="">Apple Shortcuts Widget</h2><p id="81c3cd31-cfde-45d4-b5c5-27cbba294303" class="">Create a custom iOS home screen button for every employee for instant feedback. You can even use Siri to invoke as well!</p><figure id="defb0ba5-cec1-4fc3-8d1c-66a95cc7f184"><div class="source"><iframe src="https://player.vimeo.com/video/422643406" width="640" height="1138" frameborder="0" allow="autoplay; fullscreen" allowfullscreen=""></iframe>
</div></figure><h2 id="7d18639b-8f6c-48e9-9aa7-16c2a15f7794" class="">What People are Saying</h2><blockquote id="9ce69a02-1a78-4faa-ae67-600aa07607d5" class="">I feel more connected with my team and manager</blockquote><p id="02c2269e-6663-4bb5-8853-033eb822d58b" class="">
</p><h2 id="761768b5-8368-4d52-852c-96d96efd7213" class="">Where do I get a Kudoos? </h2><p id="9990ac6e-1032-4ab0-b3ab-b579075bbc49" class="">There is currently a long waitlist. Please send your order request to givemekudoos (at) fastmail.com</p><p id="e08685a4-6894-4f52-b9e9-ce0ac413598c" class="">
</p></div></article></body></html>]]></content><author><name>Danny Salzman</name><email>me@dannysalzman.com</email></author><category term="project" /><category term="IoT" /><category term="Satire" /><summary type="html"><![CDATA[How to Train your Remote Employee]]></summary></entry><entry><title type="html">Map of PPP Funding</title><link href="https://dannysalzman.com/2020/07/07/map-of-ppp-funding" rel="alternate" type="text/html" title="Map of PPP Funding" /><published>2020-07-07T00:00:00+00:00</published><updated>2020-07-07T00:00:00+00:00</updated><id>https://dannysalzman.com/2020/07/07/map-of-ppp-funding</id><content type="html" xml:base="https://dannysalzman.com/2020/07/07/map-of-ppp-funding"><![CDATA[<h4 id="please-be-patient">Please be patient.</h4>
<p>All data is first downloaded locally for viewing (<s>128MB</s> 79MB!). This is a single static HTML file!</p>

<p><a style="font-size:32px;" href="/files/ppp_map_v1.html">Click here for Full screen visualization</a></p>

<!-- <div>
	 <iframe width="900px" height="700px" frameborder="0" src="/files/ppp_map_v1.html" allowfullscreen="allowfullscreen">unwantedtext</iframe>
</div> -->

<h2 id="gif-of-interactive-map">GIF of Interactive Map</h2>
<p><img src="/files/projects/ppp_dashboard.gif" /></p>

<h2 id="legend">Legend</h2>

<ol>
  <li>Color of the points is based on the approx loan size. The darker the color the higher the loan.</li>
  <li>The size of the points is based on the # of jobs retained. The larger the number the larger the dot.</li>
</ol>

<p>You can edit these parameters and use the built in filtering functionality yourself!</p>

<h2 id="data-disclaimer">Data Disclaimer</h2>

<p>Data is based on the csv from SBA
 PPP Raw Data: <a href="https://home.treasury.gov/policy-issues/cares-act/assistance-for-small-businesses/sba-paycheck-protection-program-loan-level-data">https://home.treasury.gov/policy-issues/cares-act/assistance-for-small-businesses/sba-paycheck-protection-program-loan-level-data</a> [661,218 records total]</p>

<p>As reported this dataset is a big mess and I could not geocode every record. 
 Currently I have 486,701 records which is 73.6% of the original dataset. I’m not completely certain if these records are correct and my current geocoder method wasn’t working, or if there are actual mistakes in the data, my guess is the latter. I might try to take the remaining records through Google’s Geocoder since I used the US Census’s geocoder from the first run. (Getting value for my tax $’s :))</p>

<h2 id="enrichment">Enrichment</h2>
<ol>
  <li>Added an estimateLoan column which is an average of the loan range values</li>
  <li>Added the textual description of the NCID code for every firm.</li>
</ol>

<p>## Updates 
 7/9/2020</p>
<ol>
  <li>Removed columns [RaceEthnicity,	Gender,	Veteran, NonProfit, loanRange, DateApproved] to reduce data loading times and increase performance.</li>
  <li>Removed full addresses and changed to State and Zipcode columns. Allows for filtering by State and Zipcodes.</li>
</ol>]]></content><author><name>Danny Salzman</name><email>me@dannysalzman.com</email></author><category term="project" /><category term="viz" /><category term="data" /><summary type="html"><![CDATA[Please be patient. All data is first downloaded locally for viewing (128MB 79MB!). This is a single static HTML file!]]></summary></entry><entry><title type="html">I Plasti Dipped my Neo Alphasmart</title><link href="https://dannysalzman.com/2020/07/02/i-plasti-dipped-my-neo-alphasmart" rel="alternate" type="text/html" title="I Plasti Dipped my Neo Alphasmart" /><published>2020-07-02T00:00:00+00:00</published><updated>2020-07-02T00:00:00+00:00</updated><id>https://dannysalzman.com/2020/07/02/i-plasti-dipped-my-neo-alphasmart</id><content type="html" xml:base="https://dannysalzman.com/2020/07/02/i-plasti-dipped-my-neo-alphasmart"><![CDATA[<h2 id="ahhh-i-remember-that-thing">Ahhh I remember that thing</h2>

<p>I recently stumbled upon an article on Hacker News that triggered an intense nostalgia.</p>

<p><a href="https://onezero.medium.com/this-35-keyboard-for-children-transformed-me-into-a-novelist-436a55370ee5">This $35 Keyboard for Children Transformed Me Into a Novelist</a></p>

<p>In the early 2000’s I was in middle school and learning about computers on neon blue iMacs and learning to type on little green Neo AlphaSmarts.</p>

<p>After reading the article, I reached out to my mother who actually worked and still worked at my middle school. She talked with the school’s IT guy and before I knew I had a garbage bag with four Neo AlphaSmarts.</p>

<p>Popping in three fresh AA batteries and it powered right back up. It’s gloriously simple. It’s 6 line screen shows just enough text to force you to keep going and not get stuck on a single section of writing. In modern standards, the battery life is “OK” with 700 hours :). When you want to transfer your writing to a computer for posting all it takes is a USB cable and the AlphaSmart simulates a USB keyboard and types your text. No software required.</p>

<h2 id="bonus-story">Bonus Story</h2>

<p>Here is an original story that was still saved on one of the AlphaSmarts. Pretty good for a fourth grader.</p>

<blockquote>
  <p>Once upon a time in a refrigerator their lived one onion named Oniotto, a pepper named piper and a jalopeno named Jalo. One day Jalo wanted to eat a pepper while piper was spy-cing.Piper was so mad. She pushed Jalo! Onioto stopeed piper before she could push Jalo again. Jalo said,”I want to tost a pepper!” Oniotto scrimed “stop your both are acting like 2 year olds!Jalo slammed the refrigereator. Bang! Piper slammed the referigereator. Bang! Oniotto followed Jalo and Piper. Piper walked to the hardware store and got a few things to  make a sling shot.The next day Jalo woke up early and snuck out of the refrigerator.He went to the hardware store to buy stuff for an ax. Piper said,”where is low? oniotto sighed, “hu.why are you acting like this? Why did you call Jalo low? You know this is just stupid Piper
said. Lets tell Jalo that”it was bad to do this.” they found Jalo at the park. Piper said,”this is stupid. Jalo said you’re right.”Lets go home and watch a movie and eat popcorn.” They lived happily aver after.</p>
</blockquote>

<h2 id="we-can-do-better">We can do better</h2>

<p>I wanted to freshen up the old Neo AlphaSmart.</p>

<p>So I followed the instructions to dissasemble one of the Neo AlphaSmarts here <a href="https://sites.google.com/site/dutchg/home">https://sites.google.com/site/dutchg/home</a></p>

<p><img src="/files/projects/unassembled-neo.jpeg" alt="screenshot" style="width:750px;" /></p>

<p>I then used some good old black plast dip spray paint to give the case a more simple and rugged look. The grippy texture also makes it easier to carry for on the go writing.</p>

<p><img src="/files/projects/plasti-dipped-neo.jpeg" alt="screenshot" style="width:750px;" /></p>

<p><em>Drafted on my Neo AlphaSmart</em></p>]]></content><author><name>Danny Salzman</name><email>me@dannysalzman.com</email></author><category term="writing" /><category term="project" /><summary type="html"><![CDATA[My Values]]></summary></entry><entry><title type="html">Swimming as Meditation</title><link href="https://dannysalzman.com/2020/07/02/swimming-as-meditation" rel="alternate" type="text/html" title="Swimming as Meditation" /><published>2020-07-02T00:00:00+00:00</published><updated>2020-07-02T00:00:00+00:00</updated><id>https://dannysalzman.com/2020/07/02/swimming-as-meditation</id><content type="html" xml:base="https://dannysalzman.com/2020/07/02/swimming-as-meditation"><![CDATA[<p>Swimming is well known to be one of the the best exercises. It’s an all body workout with zero strain on your joints. I’ve always enjoyed swimming for this reason and it’s been an activity that I deeply enjoy.</p>

<p>I’m very relaxed when I am swimming. I often have an unusually clear head as well.</p>

<p>What I’ve realized recently is that for me at least this is driven  by the fact that swimming is one of the few activities that by it’s very structure forces you to breath correctly, slowly and deeply from the stomach.</p>

<p>The deep and rhythmic breaths between strokes forces you into a type of moving meditation that I would struggle to obtain in any other activity.</p>

<p>It is a true reminder that meditation is not an act, but a state of mind and  body. It’s not just for people who sit cross legged and say ‘OMMMM’.</p>

<p>I would recommend to anyone  who is attempting to start a mindfulness practice to look first at activities that they already enjoy like walking or swimming and leverage them first to practice controlling your attention.</p>

<p>One, you will be more enthusiastic about working on this practice on a daily basis since you already enjoy the underlying activity. Too often is the strict traditional meditation practice too over whelming for people and  it’ quickly abandoned. It’s not all or nothing!</p>

<p>Two, breath control  is such a  large part of any mindfulness practice that using a tool like swimming that forces you to take deliberate, deep,and spaced out breaths will accelerate your practice.</p>

<p>Stroke, Stroke, Stroke, Breath. Stroke, Stroke, Stroke, Breath. Stroke, Stroke, Stroke, Breath.</p>

<p>Drafted on my Neo AlphaSmart</p>]]></content><author><name>Danny Salzman</name><email>me@dannysalzman.com</email></author><category term="personal" /><category term="health" /><summary type="html"><![CDATA[Stroke, Stroke, Stroke, Breath.]]></summary></entry></feed>