<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2482910242021681065</id><updated>2026-01-12T07:04:16.244-07:00</updated><category term="software"/><category term=".NET"/><category term="programming"/><category term="design patterns"/><category term="technology"/><category term="web development"/><category term="C#"/><category term="object-oriented"/><category term="ruby"/><category term="ruby on rails"/><category term="ASP.NET"/><category term="ASP.NET MVC"/><category term="Tedtalks"/><category term="computer science"/><category term="rails 3"/><category term="software development"/><category term=".NET api"/><category term="MVC"/><category term="computers"/><category term="education"/><category term="error"/><category term="heroku"/><category term="invalid byte sequence"/><category term="java"/><category term="linux"/><category term="model view controller"/><category term="motivation"/><category term="rails"/><category term="ruby 1.9.3"/><category term="software course"/><category term="software developer"/><category term="software engineering"/><category term="web"/><category term="web framework"/><category term="website"/><category term="4g"/><category term="Agile"/><category term="Amazon software"/><category term="App.config"/><category term="C# api functions"/><category term="C# api tutorial"/><category term="CERN"/><category term="Cap Theorem"/><category term="Hans Rosling"/><category term="IIS"/><category term="JSON"/><category term="LHC"/><category term="LXD"/><category term="Large Hadron Collider"/><category term="Linked Data"/><category term="MVC 2"/><category term="MVC for dummies"/><category term="MVC for noobs"/><category term="MVC tutorial"/><category term="Masud Khan"/><category term="SQL"/><category term="SQL Server"/><category term="SQL Server 2005"/><category term="SQL Server install"/><category term="SQL Server manual uninstall"/><category term="TDD"/><category term="Tesla"/><category term="Tim Berner-Lee"/><category term="absolute java"/><category term="actionscript"/><category term="adobe"/><category term="ai"/><category term="android"/><category term="apple"/><category term="autotest"/><category term="availability"/><category term="black hole"/><category term="boodhoo"/><category term="business"/><category term="calling api functions"/><category term="candle problem"/><category term="career"/><category term="career growth"/><category term="careers"/><category term="cars"/><category term="cell phone"/><category term="chatgpt"/><category term="chevrolet volt"/><category term="code"/><category term="coding"/><category term="collaboration"/><category term="configuration file"/><category term="consensus"/><category term="consistency"/><category term="coworkers"/><category term="dance"/><category term="deploy web site"/><category term="deployment"/><category term="design"/><category term="design reviews"/><category term="developer"/><category term="developwithpassion"/><category term="did you know"/><category term="distributed systems"/><category term="dllimport"/><category term="dyndns"/><category term="effective java"/><category term="electric cars"/><category term="elon musk"/><category term="engineering"/><category term="flash"/><category term="flex"/><category term="github copilot"/><category term="google app engine"/><category term="graphs"/><category term="hosting"/><category term="iphone"/><category term="jQuery"/><category term="javascript"/><category term="jobs"/><category term="joshua bloch"/><category term="largest science experiment"/><category term="leaf"/><category term="listener"/><category term="managed code"/><category term="masudio"/><category term="mentee"/><category term="mentor"/><category term="model s"/><category term="mono"/><category term="nexus one"/><category term="nissan leaf"/><category term="openai"/><category term="particle accelerator"/><category term="partition tolerance"/><category term="physics"/><category term="plug-in"/><category term="poverty"/><category term="python"/><category term="reddit"/><category term="rspec"/><category term="sad bread"/><category term="science"/><category term="scrum"/><category term="sedan"/><category term="senior engineer"/><category term="smartphone"/><category term="software architecture"/><category term="solutions"/><category term="spork"/><category term="statistics"/><category term="steve huffman"/><category term="steve jobs"/><category term="teams"/><category term="trust"/><category term="tryruby"/><category term="tryruby.org"/><category term="udacity"/><category term="unmanaged code"/><category term="views"/><category term="visual studio"/><category term="volt"/><category term="what does twitter run on"/><title type='text'>masudio - tech</title><subtitle type='html'>Systems good. Disarray bad. Arrays good.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>69</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-1980851853890633924</id><published>2025-05-16T11:55:00.000-06:00</published><updated>2025-05-16T11:55:22.298-06:00</updated><title type='text'>Uber&#39;s Michelangelo vs. Netflix&#39;s Metaflow</title><summary type="text">&amp;nbsp;Uber&#39;s Michelangelo vs. Netflix&#39;s MetaflowMichelangeloPain pointWithout michelangelo, each team at uber that uses ML (that’s all of them - every interaction with the ride or eats app involves ML) would need to build their own data pipelines, feature stores, training clusters, model storage, etc.&amp;nbsp; It would take each team copious amounts of time to maintain and improve their systems, and</summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/1980851853890633924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2025/05/ubers-michelangelo-vs-netflixs-metaflow.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/1980851853890633924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/1980851853890633924'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2025/05/ubers-michelangelo-vs-netflixs-metaflow.html' title='Uber&#39;s Michelangelo vs. Netflix&#39;s Metaflow'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-6547079606275582934</id><published>2023-01-01T15:10:00.004-07:00</published><updated>2023-01-01T15:10:51.118-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ai"/><category scheme="http://www.blogger.com/atom/ns#" term="chatgpt"/><category scheme="http://www.blogger.com/atom/ns#" term="github copilot"/><category scheme="http://www.blogger.com/atom/ns#" term="openai"/><category scheme="http://www.blogger.com/atom/ns#" term="software engineering"/><title type='text'>ChatGPT - How Long Till They Realize I’m a Robot?</title><summary type="text">I tried it first on December 2nd......and slowly the meaning of it started to sink in. It&#39;s January 1st and as the new year begins, my future has never felt so hazy.

It helps me write code.

At my new company I&#39;m writing golang, which is new for me, and one day on a whim I think &quot;hmmm maybe ChatGPT will give me some ideas about the library I need to use.&quot; Lo-and-behold it knew the library. It </summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/6547079606275582934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2023/01/chatgpt-how-long-till-they-realize-im.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/6547079606275582934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/6547079606275582934'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2023/01/chatgpt-how-long-till-they-realize-im.html' title='ChatGPT - How Long Till They Realize I’m a Robot?'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXC5Z6go-camZ8dwi0zYhmoeG94Q4b8T0iaxMUDRUANDROpRiIsXG-UTJxlC18EvTtBryjZ6KImowcdgEypju6OKSlQHG0H2Tynjz0OavhyHxF8kPNSzwmpRqXrbZJPNu-hWgoasjl3DgQ3Me4Rx_DVyivqusSvx32ba00K2IPYA_Y2n5A2QzQlpIN/s72-c/DALL%C2%B7E%202023-01-01%2014.02.43%20-%20paul%20revere%20warning%20the%20town%20chased%20by%20robots,%20digital%20art.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Seattle, WA, USA</georss:featurename><georss:point>47.6062095 -122.3320708</georss:point><georss:box>19.295975663821153 -157.4883208 75.916443336178844 -87.1758208</georss:box></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-3690313018843175597</id><published>2020-10-19T23:49:00.003-06:00</published><updated>2020-10-19T23:49:20.349-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="career"/><category scheme="http://www.blogger.com/atom/ns#" term="career growth"/><category scheme="http://www.blogger.com/atom/ns#" term="developer"/><category scheme="http://www.blogger.com/atom/ns#" term="software"/><category scheme="http://www.blogger.com/atom/ns#" term="software architecture"/><category scheme="http://www.blogger.com/atom/ns#" term="software engineering"/><title type='text'>Architectural Characteristics - Transcending Requirements</title><summary type="text">Building a system means meeting a set of requirements dictated by the customer.&amp;nbsp; But the customer isn&#39;t always going to translate what they want into engineering terms.&amp;nbsp; Even if you say please, they might not even know how.&amp;nbsp; If they ask for an online ordering system, they probably won&#39;t specify that it needs to be available 24/7 and auditable for tax purposes.&amp;nbsp; Yet these </summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/3690313018843175597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2020/10/architectural-characteristics.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/3690313018843175597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/3690313018843175597'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2020/10/architectural-characteristics.html' title='Architectural Characteristics - Transcending Requirements'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/g_vZasFzMN4/default.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-8857450916603849745</id><published>2020-10-18T21:27:00.006-06:00</published><updated>2020-10-18T21:29:33.160-06:00</updated><title type='text'>Laws of Software Architecture</title><summary type="text">As the discipline of software engineering matures, few things remain constant.&amp;nbsp; A few years ago, a large portion of the community thought that TDD was always the best methodology to use - after all, you move faster by being thorough and preventing bugs.&amp;nbsp; Nowadays it&#39;s clear that unit tests do not ensure a successful project - when you&#39;re A/B testing new features or products and you&#39;re </summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/8857450916603849745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2020/10/laws-of-software-architecture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/8857450916603849745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/8857450916603849745'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2020/10/laws-of-software-architecture.html' title='Laws of Software Architecture'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdpFI9-q8tgxvEXV2Z16WM5oL3ZryqUeBwite5SR9OGjaCbOQefqSEcyXe97RO9kG23w5Y-IevNGKqr_3rJP5IArjqDr1c9QDR_kRbabnmoW4J_-X8aEYXBg_bMz_IP6pKZn4yhNojpvA/s72-c/Screen+Shot+2020-10-18+at+7.51.38+PM.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-4021033865467933473</id><published>2020-10-12T22:34:00.000-06:00</published><updated>2020-10-12T22:34:00.525-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="collaboration"/><category scheme="http://www.blogger.com/atom/ns#" term="consensus"/><category scheme="http://www.blogger.com/atom/ns#" term="design reviews"/><category scheme="http://www.blogger.com/atom/ns#" term="engineering"/><category scheme="http://www.blogger.com/atom/ns#" term="software"/><category scheme="http://www.blogger.com/atom/ns#" term="teams"/><category scheme="http://www.blogger.com/atom/ns#" term="trust"/><title type='text'>Consensus: The Hard Kind</title><summary type="text">You&#39;re on a team, undoubtedly.&amp;nbsp; You have been tasked with solving a customer problem and you have a design ready and waiting for review.&amp;nbsp; One team member reviewed an early version and asked for some tweaks, but after an iteration they agreed it was the optimal path forward.&amp;nbsp; You open it up to a wider audience for further review.&amp;nbsp; But then another team member pipes up...&quot;This </summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/4021033865467933473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2020/10/consensus-hard-kind.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/4021033865467933473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/4021033865467933473'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2020/10/consensus-hard-kind.html' title='Consensus: The Hard Kind'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia8QcmWx9kjuQS7dwy4HixXhRvzk9aQlhHgWc0pfThmVRbjxm3cmq0wkV5s_Semmy5tNO2esttOZ1UHNJ-_k2V21wvpHCGbTxyERlwWHKxME0qges85aMQoqTE6fPkNI9lFRutDPLAnUg/s72-c/iStock-1223386639.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-8642951439064249586</id><published>2020-10-04T22:08:00.003-06:00</published><updated>2020-10-04T22:08:33.521-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mentee"/><category scheme="http://www.blogger.com/atom/ns#" term="mentor"/><category scheme="http://www.blogger.com/atom/ns#" term="senior engineer"/><category scheme="http://www.blogger.com/atom/ns#" term="software"/><title type='text'>Mentoring a Software Engineer</title><summary type="text">Whether it&#39;s about raising a small child or directing a full grown engineer towards her next promotion, mentoring requires a great deal of patience, honesty and self-awareness.&amp;nbsp; One wrong step and you could trigger a shame spiral.&amp;nbsp; Or just as bad, you could push your mentee to leave the team for a place with better career and/or learning opportunities.&amp;nbsp; There are clear rules of </summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/8642951439064249586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2020/10/mentoring-software-engineer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/8642951439064249586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/8642951439064249586'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2020/10/mentoring-software-engineer.html' title='Mentoring a Software Engineer'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnGpfDZyuIZyUGFwHKrIZmYIfA84fxsostfBk6UAWPkcHEniyukYMCWT17STZBJFlC6RNHfbgbAaXqqU5HMUZQG6relmAy8zZZ1ZSIaz0lfzIjAkrnP_XV2ivsz0EvpGjT_rF2tvT1mn8/s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-5827063524509810845</id><published>2020-07-11T15:15:00.005-06:00</published><updated>2020-07-11T15:30:27.965-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="careers"/><category scheme="http://www.blogger.com/atom/ns#" term="computer science"/><category scheme="http://www.blogger.com/atom/ns#" term="computers"/><category scheme="http://www.blogger.com/atom/ns#" term="coworkers"/><category scheme="http://www.blogger.com/atom/ns#" term="education"/><category scheme="http://www.blogger.com/atom/ns#" term="motivation"/><category scheme="http://www.blogger.com/atom/ns#" term="software"/><category scheme="http://www.blogger.com/atom/ns#" term="software course"/><category scheme="http://www.blogger.com/atom/ns#" term="software developer"/><category scheme="http://www.blogger.com/atom/ns#" term="software development"/><category scheme="http://www.blogger.com/atom/ns#" term="technology"/><title type='text'>Grow Your Career, Be A Senior Engineer</title><summary type="text">My personal experience with navigating a career in software engineering has been dotted by fits and starts.&amp;nbsp; 9 years into my professional life I can look back and see what worked, what didn&#39;t, and why.&amp;nbsp; I want to share that knowledge so other young engineers can do more with their first 9 years than I did.&amp;nbsp; Plus it&#39;s just fun to reminisce and will help me visualize the next steps&amp;</summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/5827063524509810845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2020/07/grow-your-career-be-senior-engineer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/5827063524509810845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/5827063524509810845'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2020/07/grow-your-career-be-senior-engineer.html' title='Grow Your Career, Be A Senior Engineer'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEFqn29Py2hnFVprg4pqcjRdYIqM467zZddE5fme_DYiISOW-ls5WyyUt_LkLRFQO9XSF0dM42SjrRUcP0mZAeR-3hnTNBBIRgJV6j_S-56LlyofZVrvMUoy6l8KDe0DqF_dLt6gwi4lg/s72-c/iStock-1161176817.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-4355374961654705231</id><published>2020-06-13T14:31:00.001-06:00</published><updated>2020-06-13T14:31:48.348-06:00</updated><title type='text'>The Terms that Blind Us</title><summary type="text">Blacklist.&amp;nbsp; Master-Slave Architecture.&amp;nbsp; Black Hat.&amp;nbsp; These terms helped build the foundations of software development as we know it today.&amp;nbsp; But do they support the narrative that black is bad and white is good?&amp;nbsp; And that having masters and slaves is ok?&amp;nbsp; Is it a racist act to continue to use them?Let&#39;s first address the &#39;rolling my eyes&#39; crowd.&amp;nbsp; It&#39;s true that, </summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/4355374961654705231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2020/06/the-terms-that-blind-us.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/4355374961654705231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/4355374961654705231'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2020/06/the-terms-that-blind-us.html' title='The Terms that Blind Us'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-4584939298430637083</id><published>2020-02-01T13:27:00.002-07:00</published><updated>2020-02-01T13:27:50.579-07:00</updated><title type='text'>Why are Distributed Systems So Hard?</title><summary type="text">Isn&#39;t it true you can just write deterministic code and if you do it right and work to fix all the bugs, eventually you&#39;ll have a simple that never does the wrong thing?&amp;nbsp; If that&#39;s not the case then why not?&amp;nbsp; Computers are deterministic - they&#39;re predictable and they only ever do exactly what you ask them to do and nothing more...right?

It&#39;s complicated.





On a single node (computer</summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/4584939298430637083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2020/02/why-are-distributed-systems-so-hard.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/4584939298430637083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/4584939298430637083'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2020/02/why-are-distributed-systems-so-hard.html' title='Why are Distributed Systems So Hard?'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvzXOwd3tlP6qGkfBMa16EX53AEm_TdiU2jf6MyYjIjI1V1RWKM9Zj0J4RfDcxWy3KCj7ZF87NAPtwpFr5p-2OLB-TDmRqh6jF88qzVVvHqjKKbzW4VZ1IIjCBYqARZbNg7Oy1E3VSAd0/s72-c/man-shrug-clueless-ss-1920-800x450.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-5899622265708317552</id><published>2020-01-22T10:02:00.001-07:00</published><updated>2020-01-22T10:02:53.283-07:00</updated><title type='text'>Cluster Management at LinkedIn</title><summary type="text">



In 2014 LinkedIn released a cluster management solution called Helix. Helix solves some problems that arise when a system scales to be too large to manage even on just a few hosts. A successful system will start to go through a few transition states that, when large enough, will become frequent enough to require an automated solution.

First, your system will become too large to host on a </summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/5899622265708317552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2020/01/cluster-management-at-linkedin.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/5899622265708317552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/5899622265708317552'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2020/01/cluster-management-at-linkedin.html' title='Cluster Management at LinkedIn'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9U4Uv_rAoS-gXTZ1UnXAS8UlcajFetrz3nMnO7ZaxORLM5BRr8KrVi9fm4vArWBc3gLIFihUBf6aJdp8_za72Op-FiFmV6q6C3PQW1QbHyA7KeLnxItmfGwlDfkLgETqVFYiFMuacwQM/s72-c/4F4E62B9-F78D-45E6-BDEE-6F8710F71D59.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-2394914955050599260</id><published>2019-12-21T02:54:00.000-07:00</published><updated>2019-12-21T02:54:56.604-07:00</updated><title type='text'>The Curious Case of the Document Database</title><summary type="text">




Let’s talk about an oft-overlooked NoSQL database type. It’s got all the best parts of a k-v store and allows limited SQL-like query-ability too! They’re called document databases and they’re all the rage.

A document database stores objects that can be serialized to JSON or some similar serialization format. These JSON ‘documents’ are keyed by an ID, similar to how k-v stores work. When you</summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/2394914955050599260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2019/12/the-curious-case-of-document-database.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/2394914955050599260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/2394914955050599260'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2019/12/the-curious-case-of-document-database.html' title='The Curious Case of the Document Database'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV24jRi41EiP0mXBzwSHNWOhDk630zRIjtTMYaZGHERCruhuonTrVSrhzV4Jq3ID7qR5qz6wHkAvmIjjXF14qoZOlacttEKraDvyScCTNA1tz_8EwP2ebYS6AG9iPf0wrz2FiZ8LDANHI/s72-c/8A67C32F-38DB-4594-98E2-6FEACFBE7823.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-8433140019271195462</id><published>2019-12-13T18:46:00.002-07:00</published><updated>2019-12-13T18:46:36.367-07:00</updated><title type='text'>Consistency in Redis</title><summary type="text">

Most uses of Redis will focus more on latency and availability rather than consistency - that’s because at its core, Redis is essentially a cache. Generally speaking, you store things in Redis in memory and you update or read them extremely quickly. You need to make sure that the cache is always available, so in most cases you’d only choose Redis if you’re leaning towards an A class system (A </summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/8433140019271195462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2019/12/consistency-in-redis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/8433140019271195462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/8433140019271195462'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2019/12/consistency-in-redis.html' title='Consistency in Redis'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRsCE8ErfZL4BJ5YL1hu3GCpUpG9lqt2bkKrwb7DoZ6bfmKoxTm4VaWK8YvODSInINpEkDjBw5ptG_O2GA6kUnxlpSDEv8Ou3106BdkZa0cTrAOvTmhlv-C5ThEAMmRQ5AFBuNsNtQJXs/s72-c/5FA1F2C9-8D3E-4C37-A832-3417AB839F17.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-4400196099117585001</id><published>2019-12-08T10:45:00.000-07:00</published><updated>2019-12-08T12:18:44.247-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="availability"/><category scheme="http://www.blogger.com/atom/ns#" term="Cap Theorem"/><category scheme="http://www.blogger.com/atom/ns#" term="consistency"/><category scheme="http://www.blogger.com/atom/ns#" term="distributed systems"/><category scheme="http://www.blogger.com/atom/ns#" term="partition tolerance"/><category scheme="http://www.blogger.com/atom/ns#" term="sad bread"/><title type='text'>CAP Theorem Explained</title><summary type="text">When building large-scale software systems today, you have to make tradeoffs.&amp;nbsp; You can&#39;t have an ACID compliant data store with infinite storage/throughput/connections that&#39;s always available in any part of the world with super low latency where clients can read/write concurrently without any risk of inconsistencies that&#39;s free.&amp;nbsp; If you could, the problem would be solved and our </summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/4400196099117585001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2019/12/cap-theorem-explained.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/4400196099117585001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/4400196099117585001'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2019/12/cap-theorem-explained.html' title='CAP Theorem Explained'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOkNwQayWAAX88MoxfTNLqXtKG0cVyFWm_6e3VWoNksFYERD60NXFhyphenhyphen97dKIj9ydQLX1Mx0eI9FQ90W-2-RG9krMi8SzBdIpvNVyE9OG76p45Ee3BP62j4M7ee1-o6V5qoejp6DowhiF8/s72-c/280158667017211.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-8742981856767322359</id><published>2019-12-01T15:31:00.000-07:00</published><updated>2019-12-02T23:33:36.461-07:00</updated><title type='text'>XFN Development - What&#39;s it all About?</title><summary type="text">

XFN (cross-functional) work is one of the challenges of a senior engineer in most tech companies.&amp;nbsp; Broadly, it means to interact with team members of a different team than your own.&amp;nbsp; Concretely, this can mean anything from aligning goals or gathering feedback from other teams to inform your roadmap, to pair programming to flesh out the design of a new interface.&amp;nbsp; Your team wants </summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/8742981856767322359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2019/12/xfn-work-whats-it-all-about.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/8742981856767322359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/8742981856767322359'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2019/12/xfn-work-whats-it-all-about.html' title='XFN Development - What&#39;s it all About?'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPdgn_EOrFx2Zx2w68c9O_N17hOYKwr158t4WHIgwVSWQfIMNoqCt5pSbsZF3m6ySIhiavGqQmYFhOGMgTapoyqI7JUcaNebSzbkk6hdDNUd7QhY5vJz9s23HbA9pyb4GogEMSvrxHKHo/s72-c/stack-of-work_gg64510621.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-8275363373700319492</id><published>2019-11-24T18:36:00.004-07:00</published><updated>2019-11-27T00:26:27.989-07:00</updated><title type='text'>Redis!...Huh? What ISN&#39;T it good for?</title><summary type="text">Redis is an in-memory key-value data store that allows you store your actual data structures rather than having a mapping layer between your application and your storage.&amp;nbsp; Support exists for any data type you&#39;d need including lists, sets and hashes/maps.

It&#39;s in-memory but also has options to push to disk - you can push to disk on every write with a huge performance cost, or at some regular</summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/8275363373700319492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2019/11/redishuh-what-isnt-it-good-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/8275363373700319492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/8275363373700319492'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2019/11/redishuh-what-isnt-it-good-for.html' title='Redis!...Huh? What ISN&#39;T it good for?'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWd9iHafuhOmLkthK6XtbvqUx5C0AYFgZNQT9blxYgSn-aHGfbtpA3TfNn3fmWkXLyCWYAEK9mY2Xm4EDtWcdT2QATw9OjX__3SCS-2PLXD7yBzcxBgnZcXJJ1JkPsQWslzJzaPm5mm68/s72-c/download.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-7348841198262706969</id><published>2019-11-15T22:46:00.003-07:00</published><updated>2019-11-15T22:56:22.738-07:00</updated><title type='text'>Don&#39;t NOT Repeat Yourself!</title><summary type="text">Sometimes duplicate code is good!!





...what?&amp;nbsp; What do you mean?&amp;nbsp; You&#39;re &#39;on to me&#39;? .... Ok ok ok hold on, just hear me out!

Picture it: you&#39;re writing unit tests.&amp;nbsp; Headphones on, hoody blowing in the cold wind from your AC unit in your dark apartment.



You&#39;ve written all your tests, they&#39;re passing and you&#39;re feeling great.&amp;nbsp; You refactor.&amp;nbsp; The tests have a lot of </summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/7348841198262706969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2019/11/dont-not-repeat-yourself.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/7348841198262706969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/7348841198262706969'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2019/11/dont-not-repeat-yourself.html' title='Don&#39;t NOT Repeat Yourself!'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUd91mfhHVerYBeYTi1m2Mz2qg7xn-uKfZXMrMpVs4q9MpFHTO-X29QrRG4eNz5ocHcE-6Ka7s-B3JCLNYX-zsJ63WJvJy91SAu7Pcjx4MpIxNpKU-n8TKOH6EhelaeapoENy6oxMK5xE/s72-c/gang.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-1215780148649745560</id><published>2019-11-13T19:30:00.000-07:00</published><updated>2019-11-13T19:30:08.571-07:00</updated><title type='text'>Dependency Injection Hell-o World!!</title><summary type="text">

When new, wide-eyed engineers first start out writing maintainable, readable, extensible {insert-everything-good}ible software, they will quickly stumble upon the concepts of Dependency Injection (DI) and interfaces.&amp;nbsp; Combined with interface programming, DI prescribes software engineers to inject dependencies into a class via a constructor or setter method. For example, you might inject 2 </summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/1215780148649745560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2019/11/dependency-injection-hell-o-world.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/1215780148649745560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/1215780148649745560'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2019/11/dependency-injection-hell-o-world.html' title='Dependency Injection Hell-o World!!'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTEKwFPXBM2pLsc6xn2M6ZDHPKgOGs5LSh3Be1kneEAewVI6L4WvJCP5wTkHSEDnurA-AJwkB9aKuJZ2svij4D1lfHc5ZLF7gGuhy_KNpb5GKVqDufWgMg1uwUub6JcqWU7blWq_HJ2sw/s72-c/Screenshot+2019-11-13+18.02.40.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-2248116907175753387</id><published>2019-10-28T09:10:00.002-06:00</published><updated>2019-10-28T09:10:29.866-06:00</updated><title type='text'>How to Frame Metric Collection</title><summary type="text">




Depending on the type of software development you’re doing, it can be tough to figure out what metrics you need to collect. An iterative process (aka fancy words for trial-and-error) will work to get you to where you need to be eventually, but along the way the MTTR of outages will suffer and you might lose users/revenue.

There’s a simple way to think about metrics that will help you build </summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/2248116907175753387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2019/10/how-to-frame-metric-collection.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/2248116907175753387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/2248116907175753387'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2019/10/how-to-frame-metric-collection.html' title='How to Frame Metric Collection'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXVLxg_a6z-U3aYM539C0NQCukLJzn-F-Kg7xH86VCqM17TuPgbosA2KITKyA7vBU35let882qXPb0NPDvE6ZNUJ6t4PzPcVwjMgghyphenhyphenz9SnMK4LN37zJZHcXd33kbf818e3cbpRMPFSU0/s72-c/9EF2643A-E497-485C-8D88-E448BE117F5E.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-5215030886209432317</id><published>2019-10-23T07:41:00.000-06:00</published><updated>2019-10-23T07:41:08.386-06:00</updated><title type='text'>Cassandra’s Data Model</title><summary type="text">I did a previous post on Cassandra but that one focused on its fault tolerance, network architecture and scalability. This one focuses on the structure of data stored in Cassandra.

Cassandra is a wide columnar data store. &amp;nbsp;Logically, you can think of data stored in Cassandra like a compound index in a conventional SQL data store. If you know the row key and the column names you want, you </summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/5215030886209432317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2019/10/cassandras-data-model.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/5215030886209432317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/5215030886209432317'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2019/10/cassandras-data-model.html' title='Cassandra’s Data Model'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXlUMEluvDlyHK3V1vQjzCkI3H_36YUGCK-LstJQAAv1eqXp4sHCipaDZBAIUHFgs-S61QLFYhlGvuXetAEhTT5WOyFlaV4EfGUNe33UUHj6D9sv5z-8xpkBxiIn02sbsUTjInS2G_hP4/s72-c/957C3D27-6435-4FAE-8E8E-10FB68BADAD1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-698967760229526895</id><published>2019-10-13T02:12:00.002-06:00</published><updated>2019-10-13T02:12:19.595-06:00</updated><title type='text'>The case for caching</title><summary type="text">Though the concept of caching seems quite simple to most engineers, there is actually a lot of intriguing nuance to it. The choices for caching and the reasons to use it vs. not are varied, but let’s try to simplify.

First thing to ask is ‘what for?’ Caching is useful when you want decrease latency and/or decrease load on components of your system. You can use it in places where there is a </summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/698967760229526895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2019/10/the-case-for-caching.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/698967760229526895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/698967760229526895'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2019/10/the-case-for-caching.html' title='The case for caching'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-8808993415927106070</id><published>2019-10-06T17:40:00.004-06:00</published><updated>2019-10-06T17:40:44.060-06:00</updated><title type='text'>Cassandra: A Case Study</title><summary type="text">Cassandra was developed at Facebook and some would say it&#39;s an intersection between Amazon&#39;s Dynamo and Google&#39;s BigTable.&amp;nbsp; It&#39;s an open source distributed active-active NoSQL column-oriented data store with tuning capabilities that optimize for write-heavy workloads.&amp;nbsp; It uses quorum reads and writes to balance consistency with availability and automatically manages replication of data </summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/8808993415927106070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2019/10/cassandra-case-study.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/8808993415927106070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/8808993415927106070'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2019/10/cassandra-case-study.html' title='Cassandra: A Case Study'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-2362530875396013524</id><published>2019-06-27T23:43:00.001-06:00</published><updated>2019-06-27T23:43:13.362-06:00</updated><title type='text'>Paxos vs. Blockchain: A User&#39;s Perspective</title><summary type="text">A robust distributed system can tolerate partial failures in the system - that means that the system should continue to work as expected even if parts of it are failing.&amp;nbsp; There are 3 main &#39;partial failures&#39; that the field of Distributed Systems tries to solve for:

1.) Out-of-sync system clocks
2.) Process pauses
3.) RPC requests with no response

Paxos is one algorithm that tries to solve </summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/2362530875396013524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2019/06/paxos-vs-blockchain-users-perspective.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/2362530875396013524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/2362530875396013524'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2019/06/paxos-vs-blockchain-users-perspective.html' title='Paxos vs. Blockchain: A User&#39;s Perspective'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-874589303970184201</id><published>2019-06-23T20:41:00.005-06:00</published><updated>2019-06-23T20:41:39.769-06:00</updated><title type='text'>The Best Intro to Distributed Systems</title><summary type="text">I recently switched teams at Facebook.&amp;nbsp; I went from working on user-facing search technologies to running the distributed systems that allow other teams at my company to move fast.&amp;nbsp; To be clear, I used to bake the break, now I build the bakers an oven!&amp;nbsp; Although I had some background in these systems, things change quickly and the field is deep with decades of knowledge to pull </summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/874589303970184201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2019/06/the-best-intro-to-distributed-systems.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/874589303970184201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/874589303970184201'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2019/06/the-best-intro-to-distributed-systems.html' title='The Best Intro to Distributed Systems'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-7522703806061553975</id><published>2016-12-31T11:16:00.002-07:00</published><updated>2017-01-03T01:11:07.051-07:00</updated><title type='text'>Docker on RPi</title><summary type="text">
Here are a few important commands I&#39;ve learned about docker so far. &amp;nbsp;I&#39;ve been working on getting Docker running on RPi which now has support for it. &amp;nbsp;It&#39;s a little different on RPi because RPi boards use the ARM architecture rather than the intel architecture, which most all other CPUs use. &amp;nbsp;That means that although Docker containers are supposed to be able to run on any machine </summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/7522703806061553975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2016/12/docker-on-rpi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/7522703806061553975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/7522703806061553975'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2016/12/docker-on-rpi.html' title='Docker on RPi'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2482910242021681065.post-6112308073219553217</id><published>2016-12-28T13:08:00.001-07:00</published><updated>2016-12-28T13:08:21.763-07:00</updated><title type='text'>WordPress on RPi</title><summary type="text">I got it working on the RPi - this one didn&#39;t take too long because there weren&#39;t too many hiccups.


Step1:&amp;nbsp;https://www.raspberrypi.org/learning/lamp-web-server-with-wordpress/worksheet/ - start at section 4, as the previous blog posts here have outlined how to do the previous steps already. &amp;nbsp;One thing you&#39;ll need is to remember the password you created for MySQL - the username is &#39;</summary><link rel='replies' type='application/atom+xml' href='http://masudio.blogspot.com/feeds/6112308073219553217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://masudio.blogspot.com/2016/12/wordpress-on-rpi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/6112308073219553217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2482910242021681065/posts/default/6112308073219553217'/><link rel='alternate' type='text/html' href='http://masudio.blogspot.com/2016/12/wordpress-on-rpi.html' title='WordPress on RPi'/><author><name>masudio</name><uri>http://www.blogger.com/profile/13608131469913352543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVR_lsNChemSeSB4NnhZ6QY-qyRUQGsCPC8llTqcagFQTtGP8Jwh8uvjORy72t6kWEuYI1_O8S3QIgVefcwX-cMpciAPCeJW1dAYYTQ2b_O2gn7IOuxkGEZ12hl8wJSQ/s113/E723F40E-07CF-4C6C-813F-88AB766A6D0B.JPG'/></author><thr:total>0</thr:total></entry></feed>