<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Bruno Aguirre on Medium]]></title>
        <description><![CDATA[Stories by Bruno Aguirre on Medium]]></description>
        <link>https://medium.com/@cuerbot?source=rss-b5b82b589930------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*HBckT2mo4lEVoD5LbsSPqg.png</url>
            <title>Stories by Bruno Aguirre on Medium</title>
            <link>https://medium.com/@cuerbot?source=rss-b5b82b589930------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 14 Nov 2026 14:42:44 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@cuerbot/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[A year in perspective]]></title>
            <link>https://medium.com/unsplash/a-year-in-perspective-2125c7b0f8bd?source=rss-b5b82b589930------2</link>
            <guid isPermaLink="false">https://medium.com/p/2125c7b0f8bd</guid>
            <category><![CDATA[api]]></category>
            <category><![CDATA[articles]]></category>
            <category><![CDATA[coding]]></category>
            <dc:creator><![CDATA[Bruno Aguirre]]></dc:creator>
            <pubDate>Fri, 28 Feb 2020 13:57:58 GMT</pubDate>
            <atom:updated>2020-02-28T14:26:34.560Z</atom:updated>
            <content:encoded><![CDATA[<h4>365 days of API</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*K-L6DqqzJXEYg74l" /><figcaption>Photo by <a href="https://unsplash.com/@goshua13?utm_source=medium&amp;utm_medium=referral">Joshua Aragon</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>It’s hard to be able to condense a full year of hard work in a few paragraphs but there’s a reason why people say that a picture is worth a thousand words:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F5x49IlWLars%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D5x49IlWLars&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F5x49IlWLars%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/a0f5313d2b5620d5cd69b48370819474/href">https://medium.com/media/a0f5313d2b5620d5cd69b48370819474/href</a></iframe><p>This is a video of what happened in the Unsplash API codebase during the last year.</p><p>It’s naive to talk about the future without taking a step back and looking at what we’ve accomplished the past 365 days of building the Unsplash API.</p><p>The API received ~19.5 billion requests during 2019. That means we had almost two times more traffic than in 2018.</p><p>The team merged 731 PRs in just the API repository, excluding all of the satellite apps, like the frontend, data pipeline, CDNs, and helper services.</p><p>All of this was supported by a team of three people and a Rails application that day by day becomes less Rails and more pure Ruby.</p><p>A lot of people make Unsplash work everyday but this is a small recap of what a team of three can do.</p><h4>Monitor every heartbeat</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*pFDF2sO5YRCklffp" /><figcaption>Photo by <a href="https://unsplash.com/@srd844?utm_source=medium&amp;utm_medium=referral">Stephen Dawson</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>There’s a lot happening within Unsplash, a lot of services, databases and different teams. Our current weapon of choice for monitoring is DataDog. We not only have agents in most of our runtimes but we also have specific metrics we use through our monitors.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lC3f4fp1_2TYqEefNedWUg.png" /></figure><p>Monitors exist within DataDog as a way to identify outliers, anomalies or just things passing a threshold. Mostly we use them to check response times across our architecture but they can serve other purposes like checking if some fail safes are in place or if our experiments are running smoothly.</p><p>Experiments did you say? Yes. We run performance experiments when we want to try refactors while ensuring that performance is not going to be affected. All of that data goes to DataDog.</p><h4>Recaptcha</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*e-PBq3us6YSJnmHT" /><figcaption>Photo by <a href="https://unsplash.com/@phillipglickman?utm_source=medium&amp;utm_medium=referral">Phillip Glickman</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>We love bots, we have some doing tasks for us and a special one we use for chatops. But if we learned something from Terminator it’s that eventually they go rogue.</p><p>2019 saw a rise in spam accounts and finally we took the decision to force ReCaptcha on our Join page</p><p>This was not an easy decision but as bots become smarter and smarter, we decided to add that filter to keep the content quality high.</p><p>There are also some internal tools that detect bots on the platform but that’s a post for another day.</p><h4>Penumbra</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*wsXWK1PhLBygMxpV" /><figcaption>Photo by <a href="https://unsplash.com/@christinhumephoto?utm_source=medium&amp;utm_medium=referral">Christin Hume</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Search is a big and complicated problem to solve and for the past year we’ve been migrating to solutions more close to the metal than before.</p><p>To allow better interactions and more responsibility in our code we built Penumbra, a Ruby library to interact with our Elastic cluster, handle mappings, data migrations and search algorithms.</p><p>We feel that taking ownership of the core features of our app allows us to take it to the next level. This is obviously a long path that involves a lot of learning but it’s the only one that allow us to squeeze our servers to the fullest and take control of every part of the experience.</p><p>Eventually Penumbra will be released as open source.</p><h4>Autobahn</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*d9CQkWgvagxsa9Mf" /><figcaption>Photo by <a href="https://unsplash.com/@mphotographym?utm_source=medium&amp;utm_medium=referral">Moritz Mentges</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Popularity comes to the cost of DOS, crawlers and abusive api applications so certain things need to be put in place to ensure that the uptime of the public API is met.</p><p>Autobahn is a small middleware that allows us to ban and block IPs based on their behaviour. Since speed is key the backend of it is Redis.</p><p>Dynamically stopping abusive IPs was was key to keeping our response times low in 2019.</p><h4>Goodbye Cervantes, hello Lisboa</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*lJnZn0EvZIE5Oc0F" /><figcaption>Photo by <a href="https://unsplash.com/@gabrielvissoto?utm_source=medium&amp;utm_medium=referral">Gabriel Vissoto</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Taking ownership of our search algorithms allowed us to start experimenting with different iterations of them. Everything happened behind the curtains and via different experiment flags.</p><p>The initial set of algorithms after migrating to Penumbra was aptly called <a href="https://en.wikipedia.org/wiki/Miguel_de_Cervantes">Cervantes</a>. Its main goal was to keep all of the old features without affecting conversion rates, so strictly speaking it did nothing new but did everything the old version did.</p><p>We tweak the algorithms quite often but from time to time when the time is right and the changes are big enough we “bump” the name.</p><p>Lisboa was the next version of search from which involved a lot of work of one of our teammates: Roberta. Due to that extreme commitment to the craft we named it because of <a href="https://en.wikipedia.org/wiki/Adriana_Lisboa">Adriana Lisboa</a> which shares, among other things, the same nationality as her.</p><p>This version significantly improved multi-keyword searches versus the prior versions multi keyword searches from the prior version.</p><h4>Color filtering</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*a9nRFXrxIX9Lx4lR" /><figcaption>Photo by <a href="https://unsplash.com/@plushdesignstudio?utm_source=medium&amp;utm_medium=referral">Plush Design Studio</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>As part of our ongoing integrations with the Data team we collaborated to add color filtering to search.</p><p>An AI will “look” at the photos and check for color coverage to return color information. All of this was later on added to our search cluster so now we can use the new specific color information to allow filtering among the photos.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/555/1*6jaVfeNOTiPDPTvA_ulDAA.png" /></figure><p>Due to the vast amount of fantastic black and white photography and the limitations of AI, the black and white filtering was more challenging to implement and get right.</p><p>This colorful version of search is an example of the many experiments we run on regular basis to test new features.</p><h4>Specialized workers</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Gdo19ztIZjAnSBX-" /><figcaption>Photo by <a href="https://unsplash.com/@guiccunha?utm_source=medium&amp;utm_medium=referral">Guilherme Cunha</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>As one would expect a lot of the work that happens on our servers happens asynchronously and we have a lot of it.</p><p>Due to that and with the spirit of <a href="https://en.wikipedia.org/wiki/Don%27t_repeat_yourself">DRY</a> we are migrating some of our workers to enqueue jobs as we do normally but process them in bulk.</p><p>This <a href="https://en.wikipedia.org/wiki/MapReduce">MapReduce</a> approach allows us to reduce our execution time for things that need to happen in the background but can wait so the load in our databases/services is not that big.</p><p>To homogenize our asynchronous work we started migrating our current cron jobs to be part of the background jobs queue so we get better retry capabilities and cleaner code overall.</p><h4>Safer together</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*I-TcpjPEQPJ-GtNW" /><figcaption>Photo by <a href="https://unsplash.com/@fantasyflip?utm_source=medium&amp;utm_medium=referral">Philipp Katzenberger</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>I don’t want to end this year in perspective without saying thanks to the security researchers that use their time to check our security practices, send emails and communicate with us.</p><p>Their love to the craft and help is invaluable to make Unsplash the website it is. Some of them are found here <a href="https://unsplash.com/security">https://unsplash.com/security</a> and we are truly thankful for their support.</p><h4>Future</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*1-hdxx80x5afQPnY" /><figcaption>Photo by <a href="https://unsplash.com/@fabiolucas_foto?utm_source=medium&amp;utm_medium=referral">Fábio Lucas</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>There’s so much stuff already for the 2020 edition. I’d love to tell you all it but you’ll have to wait.</p><p>As a sneak peek we are shipping a new statistics cluster which is being fed by our first <a href="https://en.wikipedia.org/wiki/Go_(programming_language)">Go</a> service that handles the ingestion and transformation of data.</p><p>A lot is happening on API right now and we’ll have a lot to share this year while we push the greatest photo library to the next level.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2125c7b0f8bd" width="1" height="1" alt=""><hr><p><a href="https://medium.com/unsplash/a-year-in-perspective-2125c7b0f8bd">A year in perspective</a> was originally published in <a href="https://medium.com/unsplash">Unsplash Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Dance like no one is watching. Code like everyone is.]]></title>
            <link>https://medium.com/unsplash/dance-like-no-one-is-watching-code-like-everyone-is-73c26936eee5?source=rss-b5b82b589930------2</link>
            <guid isPermaLink="false">https://medium.com/p/73c26936eee5</guid>
            <category><![CDATA[ruby]]></category>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[unsplash]]></category>
            <dc:creator><![CDATA[Bruno Aguirre]]></dc:creator>
            <pubDate>Wed, 30 Jan 2019 19:25:09 GMT</pubDate>
            <atom:updated>2019-02-01T18:43:54.370Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*6qtIUpsN1cFGobts" /><figcaption>Photo by <a href="https://unsplash.com/@5tep5?utm_source=medium&amp;utm_medium=referral">Alexander Popov</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>As you may know (and expect) Unsplash is built on the shoulders of giants by leveraging open source and proven projects. There’s a bird’s eye view by Luke <a href="https://medium.com/unsplash/scaling-unsplash-with-a-small-team-fbdd55571906">here</a>.</p><p>I’m not here to tell the same ol’ story about how open source is the best and using it is the way to go.</p><p>Since I’m the product of an open source community I take it very seriously, not only by doing open source and talks myself but also pushing the cultural part of it.</p><p>Lately I’ve been working on tools that try to solve specific problems we’ve encountered but with a twist: treating it like open source, coding like everyone is watching.</p><h3>Penumbra</h3><p><em>The 24 hour bookstore</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*zj75HW3AfXfH8bjV" /><figcaption>Photo by <a href="https://unsplash.com/@thepootphotographer?utm_source=medium&amp;utm_medium=referral">Janko Ferlič</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>The name of this library comes from a book that I really enjoyed some years ago called <a href="https://en.wikipedia.org/wiki/Mr._Penumbra%27s_24-Hour_Bookstore">Mr. Penumbra’s 24 hour bookstore</a> that tells the story of a web designer working in a library, Ruby and the importance of books.</p><p>It was the perfect name for our internal Elastic Search library ^_^.</p><p>Penumbra was born with a specific purpose: being the nuts and bolts of our new search autocomplete.</p><p>However, there were some specifics to be resolved since it was supposed to be stupidly fast and accurate with the recommendations.</p><p>I think that the best tools are the ones that solve a specific problem without adding layers of complexity while being honest and clear about what’s going on.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/f0ab8151679059ab64a9037c8bfc2e1b/href">https://medium.com/media/f0ab8151679059ab64a9037c8bfc2e1b/href</a></iframe><p>Any fancy stuff happening behind the scenes? Nah, just a `proc`.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/3569b69bbaa87a3ed54bccf47456a459/href">https://medium.com/media/3569b69bbaa87a3ed54bccf47456a459/href</a></iframe><p>Since we were building something for us — with the idea of making it open source — I started with this paradigm:</p><p>People want a tool to make the job easier, not to be completely oblivious to what’s happening so Penumbra is a tool. It does not force you to do anything, it will just try to make things easier.</p><p>For example: we have <strong>a lot</strong> of photos so reindexing takes time. That’s a problem. As a result, Penumbra’s sole focus is to make that fast and safe so that you spend less time being worried, and instead spend more time on what actually matters: building a better algorithm.</p><h3>MRQ</h3><p><em>Mr Q — Map/Reduce Queue</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*z_HPXbqDN5QvZv65" /><figcaption>Photo by <a href="https://unsplash.com/@coastaljay?utm_source=medium&amp;utm_medium=referral">Jason Olliff</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>The name comes from the beloved <a href="https://sv.wikipedia.org/wiki/Q_(James_Bond)">MrQ</a> from the James Bond series. That sweet man in charge of all the gizmos and gadgets… and also happens to describe what it actually does: a map/reduce queue for Ruby.</p><p>We have a lot of sources of information here at Unsplash, different systems that extract and process all we can get from a photo.</p><p>But one thing is important: most of these systems are not dependent on each other, they just extract data so they can be run in parallel.</p><p>For that we use <a href="http://concurrent-ruby.com/">concurrent-ruby</a> and push the tool to a feature complete state-meaning it will do one thing and one thing only: map then reduce.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/e3ef677fa7b4cd1cd9d4def9e65967cb/href">https://medium.com/media/e3ef677fa7b4cd1cd9d4def9e65967cb/href</a></iframe><p>Every map runs in a thread fetching information and the reduce will give you everything once all the sources are ready.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/391/1*2LLwP6wkxPhHTwhjNtcK9Q.png" /></figure><h3>Present Proofing</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*BEIip9LIGFufxeXP" /><figcaption>Photo by <a href="https://unsplash.com/@clarktibbs?utm_source=medium&amp;utm_medium=referral">Clark Tibbs</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>I like to feel like I’m able to predict the future. That I’ll be able to know where the codebase should be a week, a month.</p><p>I like to feel that I do, that I can reach the code utopia I feel we deserve. That I’m no different from Wayne Gretzky saying this:</p><blockquote>I skate to where the puck is going to be, not where it has been.</blockquote><p>The truth is that I don’t. I have no clue where we are going to be.<br>Don’t get me wrong, I really know our codebase and I have an idea of where it’s headed-but code is only a tiny percentage of our product.</p><p>Businesses will change, performance will fluctuate, team mates might be different, an AI might overtake the world.</p><p>However, the thing I’m certain of is the now. So instead of future-proofing for a future that most likely will not be as I imagine it, I prefer to present-proof the code.</p><p>And that’s by solving the actual problem that we’re having in the most simple, elegant and real way.</p><p>If something is painful for the team, if it takes too much time, if it’s not reliable or if we don’t have the control we need, we must change it.</p><p>Ruby will change, JavaScript will definitely change, we will change so instead of imagining the best and fanciest palace that will be nice to look at, but completely useless, let’s just build the stairs we need; one step at a time.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=73c26936eee5" width="1" height="1" alt=""><hr><p><a href="https://medium.com/unsplash/dance-like-no-one-is-watching-code-like-everyone-is-73c26936eee5">Dance like no one is watching. Code like everyone is.</a> was originally published in <a href="https://medium.com/unsplash">Unsplash Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Exposure is useless]]></title>
            <link>https://medium.com/unsplash/exposure-is-useless-fff3b8e972c4?source=rss-b5b82b589930------2</link>
            <guid isPermaLink="false">https://medium.com/p/fff3b8e972c4</guid>
            <category><![CDATA[articles]]></category>
            <category><![CDATA[unsplash]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[life-stories]]></category>
            <dc:creator><![CDATA[Bruno Aguirre]]></dc:creator>
            <pubDate>Mon, 23 Jul 2018 15:56:48 GMT</pubDate>
            <atom:updated>2018-08-09T18:26:19.337Z</atom:updated>
            <content:encoded><![CDATA[<p>What I enjoy besides coding… is telling stories, so I’m going to do that for you today.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/0*d-VuJsIYd3nNvc9j" /><figcaption><a href="https://unsplash.com/photos/LteEIdMqTFw">Photo of a photo by me on Unsplash</a></figcaption></figure><p>I was born in Montevideo, the capital of Uruguay, a small country in the south side of the world on a rainy Tuesday. Anxiety was always my thing I guess since I was born 2 months early.</p><p>Uruguay was exiting a dictatorship that decade so things (and people) were trying to find a place in this new republic.</p><p>People want to belong somewhere and I wanted to belong as well. As the son of a single mom we have our struggles, things were not easy, and hard decisions had to be made.</p><p>I made the decision that I wanted to work. I wanted to stop seeing my mother sleep only a few hours a day, starve herself and walk miles to her job just to allow me the opportunities that she never had.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/0*VsCgG3RZNwU9xr0O" /><figcaption><a href="https://unsplash.com/photos/Kaw6v5cBV0I">Photo by <br>Elijah O’Donell on Unsplash</a></figcaption></figure><h3>How can you change your reality if you don’t have the money to go through a career?</h3><p>You start from the bottom.</p><p>My first job was when I was 15 and when I was 17 I started working at a cyber café on the night shift on a regular basis. It was a quiet and calm time to read and learn. Eventually, I started fixing the computers and understanding how the underlying network worked. Having unlimited internet access, during a time that it was unthinkable to have that in your own house, gave me an endless world of information and I took every bit I could.</p><p>PHP was the thing I learned thanks to the Uruguay Linux Group and a person that took time of his life to give me pointers and teach me that in the internet no one cares about where are you from or how much money you have.</p><p>I got a job as a web designer. HTML, ajax, and all that early 2000s tech. Only two people on that company coded, me and an old school C developer. He shared what he knew with me because I took the time to learn.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/0*sTlc8kHgISYJUsRU" /><figcaption><a href="https://unsplash.com/photos/2xEQDxB0ss4">Photo by <br>Dlanor S on Unsplash</a></figcaption></figure><p>Then in my next job, something changed. The internet changed. Communities changed. <a href="http://github.com/">GitHub</a> was there, letting everyone share their code, millions of lines of code to read, of projects, of ideas.</p><p>If you’re not from the world of open source software, you need to understand how alien the idea of sharing all the things you know, all the information it might take you years to learn, all the shortcuts. Free? Why? Why would someone do that? What’s the catch?</p><p>I learned, I coded, I kept trying and (more often than not) failing, but I had a million teachers, so I learned <a href="http://javascript.com/">Javascript</a>, then <a href="http://ruby-lang.org/">Ruby</a>, worked on <a href="http://rubyonrails.org/">Ruby on Rails</a>.<br>I gave a talk for the <a href="http://python.org/">Python</a> community about distributed systems.</p><p>My code was reviewed by a lot of people, most of them I didn’t know their faces, nor did they know mine.</p><p>I gave talks in <a href="https://www.youtube.com/watch?v=hOaF1ZgFNZo">Argentina</a>, <a href="https://vimeo.com/44025029">Netherlands</a>, <a href="https://vimeo.com/67075694">Scotland</a>, etc. All opportunities from which I gained exposure, pushing my limits every time.</p><p>A career built on top of sharing what I knew led me to spend some months in NYC working on a project with <a href="http://icann.org/">ICANN</a>, and then working for several startups in San Fransisco. Only because I shared my code and I learned from people I had never met, but I cherish deeply.</p><p>I’ve been working for <a href="http://unsplash.com/">Unsplash</a> for almost two years now, and I love the product and the people behind it, but frankly: I know better than anyone the effect of sharing, the effect of just sharing because you have something to give, to learn, and to try.</p><p>It’s been a long trip with ups and downs but let me tell you something, I chuckle when someone tells me that exposure is useless.<br>Because it is useless, you can’t take 10 exposures and change it for food. But it’s <strong>NOT </strong>worthless.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/0*b24hkWcQLONbOude" /><figcaption><a href="https://unsplash.com/photos/GO2atRL73uE">Photo by <br>Joshua Earle on Unsplash</a></figcaption></figure><p>Exposure and its side effects not only gave me a career, it gave me the tools to grow.</p><p>My life changed thanks to exposure, thanks to a community of people that wanted the profession to grow beyond what anyone would expect.</p><p>They didn’t care that I was born in a third world country, nor that I learned English thanks to HBO.</p><p>They cared about what I’m capable of doing and for one I’m proud of working with people which mission is to accomplish the same in the photography community.</p><p>One day I hope I meet people that changed their lives, their reality, thanks to <a href="http://unsplash.com/">Unsplash</a>.</p><p>There are people out there that want to learn, that want to change their life. They have hope that one day, the career they love so passionately will give them a chance.</p><p>I started this post talking about part of my story but, as the knowledge that I have, this story is not only mine. There’s a lot of people out there like me, like you.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FA_yEnZlZFnM%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DA_yEnZlZFnM&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FA_yEnZlZFnM%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/a66318b135a2aa23e8a3090d682cdeb9/href">https://medium.com/media/a66318b135a2aa23e8a3090d682cdeb9/href</a></iframe><p>A Liberian man looking for an opportunity with a limited set of tools labeled as a scammer who proved his valor by literally taking photos.</p><p>It took someone doubting him, thinking it was a trap, trying to make him lose his time, to change the life of one person, of one village, of a lot of kids.</p><p>There are people like Michele:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FFHNrw7aiKOE%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DFHNrw7aiKOE&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FFHNrw7aiKOE%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/d3ba36b12b6b5c2560879bc5834b6025/href">https://medium.com/media/d3ba36b12b6b5c2560879bc5834b6025/href</a></iframe><p>A woman that wanted to change her life by becoming a programmer got a free ticket and became a speaker herself.</p><p>For my story and the things in between, you might now see the world how I see it. Or you could still think that exposure is useless and that’s okay. But for me, my friend… exposure is priceless.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=fff3b8e972c4" width="1" height="1" alt=""><hr><p><a href="https://medium.com/unsplash/exposure-is-useless-fff3b8e972c4">Exposure is useless</a> was originally published in <a href="https://medium.com/unsplash">Unsplash Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>