<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="http://abraidotti.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="http://abraidotti.github.io/" rel="alternate" type="text/html" /><updated>2026-11-08T05:10:55+00:00</updated><id>http://abraidotti.github.io/feed.xml</id><title type="html">Sandro Braidotti</title><subtitle>Web developer based in Philadelphia, PA.</subtitle><entry><title type="html">covid summer</title><link href="http://abraidotti.github.io/covid-summer/" rel="alternate" type="text/html" title="covid summer" /><published>2020-07-19T00:00:00+00:00</published><updated>2020-07-19T00:00:00+00:00</updated><id>http://abraidotti.github.io/covid-summer</id><content type="html" xml:base="http://abraidotti.github.io/covid-summer/"><![CDATA[<p><img src="../img/2020-07-19-covid-summer/san-pines.jpg" alt="Hot weather hiking in the Pine Barrens" title="Hot weather hiking in the Pine Barrens" class="img-responsive" /></p>

<p>Love (for the Pine Barrens) in time of Covid-19.</p>

<p>Otherwise, so much indoor time reading, coding, and video games. Trying to stay off <a href="https://twitter.com/sandy___beaches">Twitter</a> and slow down the news.</p>

<p>This website will soon disappear. You can check out my new <a href="https://sandrobraidotti.com">site</a> as I develop it.</p>

<p>♥ S</p>]]></content><author><name></name></author><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">August, 2019 - latest updates</title><link href="http://abraidotti.github.io/august-update/" rel="alternate" type="text/html" title="August, 2019 - latest updates" /><published>2019-08-04T00:00:00+00:00</published><updated>2019-08-04T00:00:00+00:00</updated><id>http://abraidotti.github.io/august-update</id><content type="html" xml:base="http://abraidotti.github.io/august-update/"><![CDATA[<p><img src="../img/2019-08-04-august-update/sandro-nockamixon.jpg" alt="Hot weather hiking in Nockamixon" title="Hot weather hiking in Nockamixon" class="img-responsive" /></p>

<p>Here’s me at Nockamixon State Park a couple weeks ago. Hot weather hiking is the best!</p>

<h2 id="todo">TODO</h2>

<h3 id="take-the-aws-developer-associate-exam-next-thursday-i-got-an-81-on-my-first-practice-test-so-im-feeling-good-about-it">take the AWS Developer Associate exam next Thursday. I got an 81% on my first practice test, so I’m feeling good about it</h3>

<h3 id="keep-playing-piano-this-summer">keep playing piano this summer</h3>

<h3 id="continue-winning-my-books-over-video-games-streak">continue winning my books-over-video-games streak</h3>

<h3 id="start-the-unreal-engine-tutorial-i-bought-the-other-day-and-eventually-make-some-maps-for-games">start the Unreal Engine tutorial I bought the other day and eventually make some maps for games</h3>

<h3 id="chill-and-enjoy-the-rest-of-the-summerli">chill and enjoy the rest of the summer&lt;/li&gt;</h3>

<h2 id="the-philadelphia-research-and-innovation-group-phrig-for-short-is-going-strong-heres-a-photo-of-the-other-phrig-dudes-at-a-recent-meetup--">The <a href="https://phrig.github.io/&quot;">Philadelphia Research and Innovation Group</a> (PhRIG for short) is going strong. Here’s a photo of the other PhRIG dudes at a recent meetup -</h2>

<p><img src="../img/2019-08-04-august-update/phrig-jj2.jpg" alt="JavaScript Jawn II" title="JavaScript Jawn II" class="img-responsive" /></p>

<p>We recently participated in 2017 <a href="https://technical.ly/philly/2017/11/03/final-projects-code4pa-hackathon/">Code4PA Hackathon</a> and our project has gotten some attention from the governor’s office. Check out <a href="https://phrig.github.io/2018-01-28-cashflow-pa-summary/">our post</a> on its current status</p>]]></content><author><name></name></author><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">Three Months Out of Bootcamp</title><link href="http://abraidotti.github.io/three-months-out/" rel="alternate" type="text/html" title="Three Months Out of Bootcamp" /><published>2018-04-04T00:00:00+00:00</published><updated>2018-04-04T00:00:00+00:00</updated><id>http://abraidotti.github.io/three-months-out</id><content type="html" xml:base="http://abraidotti.github.io/three-months-out/"><![CDATA[<p>I graduated NYCDA’s web intensive bootcamp three months ago, and I’ve branched out to learn as much as I can in the web dev world.</p>

<p>Click on the arrows to see what I’ve explored:</p>

<h3 id="react">React</h3>
<details>
  <summary>
    Render component
  </summary>
  <p>I started by watching as many of Dan Abramov's conference videos and doing the tutorial on the official React site.</p>
  <p>I then read through the <a href="https://developer.mozilla.org/en-US/docs/Web/Web_Components">MDN Web Component docs</a> to learn how React wraps existing HTML features.</p>
  <p>After that, it was a matter understanding the props and state cycle. I'm still working on using the component lifecycle methods best, and I look forward to using the new Context API.</p>
  <p>Check out my baby single-page app made with React + React Router: <a href="http://reallyphilly.herokuapp.com">Really Philly</a>. My goal is to work on it some more and open it up to interested local developers.</p>
  <img src="/img/projects/really-philly-screenshot.png" />
  <p>Up Next: rewriting my existing weather app, <a href="http://drizzl.herokuapp.com">drizzl</a>, in React.</p>
</details>

<h3 id="unity">Unity</h3>
<details>
  <summary>
    Load assets!
  </summary>
  <p>I've always been interested in game design, so I downloaded the Unity engine and did the roll-a-ball and space shooter tutorials.</p>
  <p>This has been a great introduction to C# and asset scripting, and I'd like to work on this kind of programming in the future, either for game design or animation. VR would be cool.</p>
  <img src="/img/2018-04-04-three-months-out/space-shooter.png" />
  <p>Space can be so very lonely.</p>
</details>

<h3 id="elixir">Elixir</h3>
<details>
  <summary>
    defp details do: click
  </summary>
  <p>I had heard awesome things about Elixir, including its humble origins as a telephony language. Back in bootcamp, I put it on the list of topics to explore when I got some time.</p>
  <p>I decided to start chronologically, back in the early 1980s, and I read about Ericsson's problems with their contemporary telephony code. This led me through the Erlang documentation and <a href="https://www.youtube.com/watch?v=uKfKtXYLG78">Erlang: The Movie</a>. (Definitely check that out.)</p>
  <p>I found an awesome exercise, <a href="http://elixirkoans.io/">Elixir Koans</a>, and a couple Phoenix tutorials.</p>
  <img src="/img/2018-04-04-three-months-out/elixir-pattern-matching.png" />
  <p>My favorite Elixir feature so far is pattern matching, as seen above.</p>
</details>

<h3 id="devops">DevOps</h3>
<details>
  <summary>
    Instantiate
  </summary>
  <p>I've come to realize I'm very much interested in back-end development, specifically in CI/CD engineering. That's not something I can easily practice outside of a professional production environment, so I've taken every opportunity I can find to learn.</p>
  <p>Recently, I participated in The Item's <a href="https://www.meetup.com/THEITEM/events/247233926/">Day Zero Hackathon</a>, at which I learned about various approaches to the CI/CD pipeline. I got to drive in my small group and instantiated an EC2 server and installed Jenkins.</p>
</details>

<h3 id="cash-flow-pa-and-tdd">Cash Flow PA and TDD</h3>
<details>
  <summary>
    describe "details" do
  </summary>
  <p><a href="http://cashflowpa.org">Cash Flow PA</a> lives! You can learn more about this open-source project I started with some friends on <a href="http://phrig.org/2018-01-28-cashflow-pa-summary/">PhRIG's site</a>.</p>
  <p>Our meeting with the Pennsylvania Governor's Office staff went really well! I've documented Cash Flow PA's current development in a <a href="http://phrig.org/2018-03-28-release-and-roadmap/">separate blog post</a>.</p>
  <p>As we rolled out v1, we've decided to shore up the app, which includes writing tests. Here's an example of a couple rspec tests I contributed to this past weekend.</p>
  <img src="/img/2018-04-04-three-months-out/cash-flow-pa-rspec.png" />
</details>

<p>Otherwise, I’ve been cooking a lot, reading (latest rec: Patricia Lockwood’s <em><a href="https://www.npr.org/2017/05/10/527629781/priestdaddy-shimmers-with-wonderful-obscene-life">Priestdaddy</a></em>), and playing some Overwatch here and there. ¡Apagando las luces!</p>]]></content><author><name></name></author><summary type="html"><![CDATA[I graduated NYCDA’s web intensive bootcamp three months ago, and I’ve branched out to learn as much as I can in the web dev world.]]></summary></entry><entry><title type="html">An ugly day in Philly; a beautiful day for Drizzl.</title><link href="http://abraidotti.github.io/drizzl/" rel="alternate" type="text/html" title="An ugly day in Philly; a beautiful day for Drizzl." /><published>2018-01-12T00:00:00+00:00</published><updated>2018-01-12T00:00:00+00:00</updated><id>http://abraidotti.github.io/drizzl</id><content type="html" xml:base="http://abraidotti.github.io/drizzl/"><![CDATA[<div style="width:100%;height:0;padding-bottom:75%;position:relative;"><iframe src="https://giphy.com/embed/3ohc1dKFDkDjQW1Yfm" width="100%" height="100%" style="position:absolute" frameborder="0" class="giphy-embed" allowfullscreen=""></iframe></div>

<p>I recently developed <a href="http://drizzl.herokuapp.com">Drizzl</a>, a generative weather-art toy, for my final project at NYCDA’s three-month web-development intensive program.</p>

<p>Inspired by <a href="https://teropa.info/">Tero Parviainen’s</a> excellent presentation on generative art, <a href="https://teropa.info/loop/">“How Generative Music Works”</a>, I set out to make an interactive app that uses weather data, rather than an algorithm, to inform the app’s visual elements.</p>

<p>I discovered a number of emergent aspects during development. Here are a few:</p>

<p><strong>Discovery #1</strong>: The best way I found to create the app’s interactive elements is by procedural generation.</p>

<p>The app first queries the <a href="https://darksky.net/">Dark Sky</a> weather API with the user’s location and then iterates through the forecast returned to the client as a JSON object. (If you’d like, you can open the browser’s console and examine the forecast object.) It then generates a button for each forecast key:</p>

<p><img src="../img/2018-1-12-drizzl/2018-01-12-drizzl-object-keys.png" alt="Buttons from forecast keys" title="Buttons from forecast keys" class="img-responsive" /></p>

<p>The result: there are no statically generated buttons. For example, when I input the lat and lng of the <a href="https://en.wikipedia.org/wiki/Bouvet_Island">most remote island on earth</a>, I get the following buttons and a pretty sparse animation:</p>

<p><img src="../img/2018-1-12-drizzl/2018-01-12-bouvet-island.png" alt="Drizzl on Bouvet Island" title="Drizzl on Bouvet Island" class="img-responsive" /></p>

<p>This scarcity of buttons confused me at first, but I now presume the lack of forecast data is due to the low demand for weather (and weather equipment) at that spot. The same happens if you search other remote locations, like Antarctica.</p>

<p><strong>Discovery #2</strong>:</p>

<p>I figured out how to shoehorn as many variables as possible into an  <a href="https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API">html canvas element</a> animation.</p>

<p>Learning to make the animation itself was tricky. I started by searching for html canvas animations on <a href="https://codepen.io/search/pens?q=canvas%20animation">CodePen</a>, copying or forking them, breaking them, and then trying to fix them. After about 10 animations, I learned enough to create my own simple particle flow. You can hit up Drizzl’s <a href="https://github.com/abraidotti/drizzl">github repo</a> for the full code, but as you can see below, I implemented quite a few animation variables for interactivity:</p>

<p><img src="../img/2018-1-12-drizzl/2018-01-12-drizzl-variables.png" alt="Drizzl animation variables" title="Drizzl animation variables" class="img-responsive" /></p>

<p>To see each of these variables in action, open the console when the app is running and you’ll see messages indicating what each button does.</p>

<p><strong>Discovery #3</strong>:</p>

<p>As a novice to web development, but an old (and quite amateur) hand at art, I rediscovered a lesson that consistently rings true: you’re never really done art until you package it up, ship it off, and move on to the next project.</p>

<p>With that said, I began to implement but ultimately dropped effective use of a database so users can save and share forecasts. If you take a look at app.js, you’ll see I’ve already set up an Mlab database, but I haven’t implemented its use. That also begs the question: would users actually save and share their forecasts? I don’t see a reason to do so right now. Maybe if a user could save the state of their interactivity and then share it, they would, but that will remain unsolved until I learn a dynamic view library like React.</p>

<p>Still, I want to point out that even though this is a single page app, the forecast is requested by the server and rendered to the client:</p>

<p><img src="../img/2018-1-12-drizzl/2018-01-12-routing.png" alt="Drizzl routing" title="Drizzl routing" class="img-responsive" /></p>

<p>I initially struggled with rendering the forecast back from the server to the client, but I solved this problem by hiding the forecast in an H3 tag, grabbing it, and then deleting the H3 tag:</p>

<p><img src="../img/2018-1-12-drizzl/2018-01-12-forecast-hack.png" alt="Server-client forecast hack" title="Server-client forecast hack" class="img-responsive" /></p>

<p>I have no doubt there’s a routine, elegant solution to this problem, but I like my quick fix for its novelty. That reminds me: a long time ago, I used to work the 6 am shift at a <a href="http://www.clearflourbread.com/">great bakery in Boston</a>. That early in the morning, I rarely had the wherewithal to check the weather. This could be punishing. Later that afternoon, covered in flour, having forgotten an umbrella, I wasn’t afraid to wear a trash bag on the bike ride home back to Jamaica Plain. You gotta do what works.</p>

<p>Thanks for reading!</p>]]></content><author><name></name></author><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">Gotta start somewhere. I’m starting with Sinatra.</title><link href="http://abraidotti.github.io/first-post/" rel="alternate" type="text/html" title="Gotta start somewhere. I’m starting with Sinatra." /><published>2017-11-21T00:00:00+00:00</published><updated>2017-11-21T00:00:00+00:00</updated><id>http://abraidotti.github.io/first-post</id><content type="html" xml:base="http://abraidotti.github.io/first-post/"><![CDATA[<p>I’m currently a student at <a href="http://nycda.com">NYCDA’s</a> three-month Web Development Intensive bootcamp. There are about 18 other people in my cohort.</p>

<p>Our latest assignment is to use the Sinatra framework to create a message board-style app.</p>

<p>My costudents Chris, George, and I finished ours up a day early. Chris and George are great. The class took about a week to get through Sinatra routing basics, but George clued me in to using embedded Ruby (aka ERB) with dexterity.
Let’s take a look at the first example:</p>

<p><img src="../img/2017-11-21-first-post/2017-11-21.msg-maker-nav.png" alt="msg maker nav code" title="Msg Maker Nav code" class="img-responsive" /></p>

<p>As you can see in the commentary, George and I made some dynamically-updating buttons all in ERB, without using an javascript. Here’s a video of the nav in action.</p>

<div style="width:100%;height:0;padding-bottom:63%;position:relative;"><iframe src="https://giphy.com/embed/xUNd9LkX4s4Myu24GQ" width="100%" height="100%" style="position:absolute" frameborder="0" class="giphy-embed" allowfullscreen=""></iframe></div>

<p>Sure, we could have designed a functional, maybe even elegant, solution with some Javascript event listeners, but George’s minimal approach worked even better. It takes up fewer lines of code, less processing power, and it’s all there in one file.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[I’m currently a student at NYCDA’s three-month Web Development Intensive bootcamp. There are about 18 other people in my cohort.]]></summary></entry></feed>