<?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-4319254486096748997</id><updated>2026-10-13T13:25:16.187-07:00</updated><category term="windows"/><category term="A paper a day keeps the doctor away"/><category term="books"/><category term="general"/><category term="distributed systems"/><category term="health"/><category term="life"/><category term="Mac OS X"/><category term="Samsung"/><category term="algorithms"/><category term="apple"/><category term="technology"/><category term="Android"/><category term="big data"/><category term="cs"/><category term="database"/><category term="food"/><category term="language"/><category term="linux"/><category term="microsoft"/><category term="phone"/><category term="reading"/><category term="software engineering"/><category term="tech"/><category term="wsl"/><category term="Firefox"/><category term="Kindle"/><category term="algebra"/><category term="amazon"/><category term="backup"/><category term="battery life"/><category term="browsers"/><category term="computer science"/><category term="computers"/><category term="email"/><category term="etymology"/><category term="fitness"/><category term="iPhone"/><category term="macbook air"/><category term="monitoring"/><category term="mutt"/><category term="networking"/><category term="physics"/><category term="probability"/><category term="python"/><category term="randomized algorithms"/><category term="time machine"/><category term="travel"/><category term="wifi"/><category term="wsl2"/><category term="x11"/><category term="64-bit"/><category term="ABC"/><category term="AI"/><category term="Fitbit"/><category term="HTML"/><category term="IoT"/><category term="Microsoft Word"/><category term="Mozilla"/><category term="PDF"/><category term="advertising"/><category term="approximate counting"/><category term="arithmetic"/><category term="babies"/><category term="barn"/><category term="behaviors"/><category term="black holes"/><category term="build"/><category term="carplay"/><category term="cars"/><category term="cascading"/><category term="catalina"/><category term="chromeOS"/><category term="chromebook"/><category term="classic"/><category term="code complexity"/><category term="code maintenance"/><category term="coding"/><category term="coffee"/><category term="color temperature"/><category term="communication"/><category term="conferences"/><category term="cortado"/><category term="customer service"/><category term="data"/><category term="data mining"/><category term="devices"/><category term="diesel"/><category term="driver"/><category term="eating"/><category term="edge"/><category term="eigenvalue"/><category term="eigenvector"/><category term="emacs"/><category term="engines"/><category term="eye strain"/><category term="farm"/><category term="flex"/><category term="flux"/><category term="font"/><category term="fonts"/><category term="formal systems"/><category term="generations"/><category term="generative AI"/><category term="hadoop"/><category term="hbr"/><category term="hyper-v"/><category term="hyperion"/><category term="hypervisor"/><category term="iPad"/><category term="idling"/><category term="internet explorer"/><category term="interns"/><category term="ir"/><category term="iron oxide"/><category term="juice"/><category term="kids"/><category term="las vegas"/><category term="leadership"/><category term="learning"/><category term="linear algebra"/><category term="mac book pro"/><category term="macbook pro"/><category term="management"/><category term="matrix"/><category term="memory"/><category term="memory lane"/><category term="mobile"/><category term="music"/><category term="nosql"/><category term="onedrive"/><category term="oreilly"/><category term="pagerank"/><category term="pandora"/><category term="paper"/><category term="piql"/><category term="polynomial equivalence"/><category term="power method"/><category term="printer"/><category term="printing"/><category term="progress"/><category term="quantified self"/><category term="questions"/><category term="rare"/><category term="react"/><category term="reactive systems"/><category term="recommendations"/><category term="red"/><category term="requirements"/><category term="restore"/><category term="review"/><category term="router"/><category term="san francisco"/><category term="sandwich"/><category term="scala"/><category term="school"/><category term="search"/><category term="selling"/><category term="sensor"/><category term="sign language"/><category term="spotify"/><category term="sql"/><category term="stars"/><category term="statistics"/><category term="stores"/><category term="stream processing"/><category term="streaming"/><category term="tea"/><category term="theory"/><category term="tla"/><category term="ubuntu"/><category term="upgrades"/><category term="vitamin"/><category term="walking"/><category term="water"/><category term="web"/><category term="weight loss"/><category term="wsl1"/><title type='text'>Adventures in Tech</title><subtitle type='html'>Musings about technology and life in general.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>88</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-7858658289109607633</id><published>2025-09-19T16:24:00.000-07:00</published><updated>2025-09-19T16:24:03.993-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="fonts"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><category scheme="http://www.blogger.com/atom/ns#" term="wsl"/><title type='text'> Emacs on WSL2: From Monochrome Misery to Modern Elegance</title><content type='html'>&lt;p&gt;Windows Subsystem for &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=what+is+Linux&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7858658289109607633&quot; target=&quot;_blank&quot;&gt;Linux&lt;/a&gt; (WSL) has come a long way—especially under &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=Windows+11+features&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7858658289109607633&quot; target=&quot;_blank&quot;&gt;Windows 11&lt;/a&gt;. &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=what+is+WSL2&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7858658289109607633&quot; target=&quot;_blank&quot;&gt;WSL2&lt;/a&gt; now offers smooth integration for Linux graphical applications, making it feel less like a compatibility layer and more like a native experience. But if you&#39;re an &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=what+is+Emacs&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7858658289109607633&quot; target=&quot;_blank&quot;&gt;Emacs&lt;/a&gt; user, you might have noticed something off.&lt;/p&gt;&lt;div&gt;
&lt;p&gt;Launching Emacs under WSL can feel like stepping into a time machine. Tiny fonts, washed-out visuals, and a UI that evokes the green-and-amber glow of vintage terminals. Functional? Yes. Pleasant? Absolutely not.&lt;/p&gt;
&lt;p&gt;But here&#39;s the good news: it is easy to make Emacs under WSL2 look just as sharp and modern as it does on &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=what+is+Mac+OSX&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7858658289109607633&quot; target=&quot;_blank&quot;&gt;Mac OSX&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;emacs-pgtk&lt;/code&gt; build is designed for better graphical integration under WSL. It uses the &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+Pure+GTK+interface&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7858658289109607633&quot; target=&quot;_blank&quot;&gt;Pure GTK interface&lt;/a&gt;, which plays nicely with WSL’s GUI support.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=sudo+apt+install+emacs-pgtk&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7858658289109607633&quot; target=&quot;_blank&quot;&gt;sudo apt install emacs-pgtk&lt;/a&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To make Emacs look great, we’ll use Windows’ rich font library. First, edit your font configuration:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=sudo+emacs+/etc/fonts/fonts.conf&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7858658289109607633&quot; target=&quot;_blank&quot;&gt;sudo emacs /etc/fonts/fonts.conf&lt;/a&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and add the Windows Font directory to the list of font directories:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-xml&quot;&gt;&amp;lt;dir&amp;gt;/mnt/c/Windows/Fonts&amp;lt;/dir&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This tells &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=what+is+Ubuntu&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7858658289109607633&quot; target=&quot;_blank&quot;&gt;Ubuntu&lt;/a&gt; to include &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=Windows+TrueType+fonts+examples&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7858658289109607633&quot; target=&quot;_blank&quot;&gt;Windows&#39; TrueType fonts&lt;/a&gt; in its font cache.&lt;/p&gt;
&lt;p&gt;Then we refresh the font cache:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=fc-cache+-fv+command&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7858658289109607633&quot; target=&quot;_blank&quot;&gt;fc-cache -fv&lt;/a&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And finally start Emacs, and in the font selection popup, you should see all your favorite &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=Windows+fonts+location&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7858658289109607633&quot; target=&quot;_blank&quot;&gt;Windows fonts&lt;/a&gt;. I went with &lt;strong&gt;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=Consolas+14pt+font&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7858658289109607633&quot; target=&quot;_blank&quot;&gt;Consolas 14pt&lt;/a&gt;&lt;/strong&gt;, and the transformation was instant. Crisp text, modern aesthetics, and no more squinting.&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/7858658289109607633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2025/09/emacs-on-wsl2-from-monochrome-misery-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/7858658289109607633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/7858658289109607633'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2025/09/emacs-on-wsl2-from-monochrome-misery-to.html' title=' Emacs on WSL2: From Monochrome Misery to Modern Elegance'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-7932269832779833783</id><published>2025-09-02T17:00:00.000-07:00</published><updated>2025-09-02T17:00:00.115-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI"/><category scheme="http://www.blogger.com/atom/ns#" term="coding"/><category scheme="http://www.blogger.com/atom/ns#" term="generative AI"/><title type='text'>Vibe coding with Gemini CLI</title><content type='html'>&lt;p&gt;&amp;nbsp;For sometime I wanted to build a data explorer for &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=Valkey+Cache&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7932269832779833783&quot; target=&quot;_blank&quot;&gt;Valkey Cache&lt;/a&gt;, and this past long weekend afforded me some time to start the project. Instead of building the application from scratch, I decided to give &quot;&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+vibe-coding&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7932269832779833783&quot; target=&quot;_blank&quot;&gt;vibe-coding&lt;/a&gt;&quot; a try. After all, there is a lot of excitement around it now, and I wanted to see for myself how effective it could be.&lt;/p&gt;&lt;p&gt;I fired off &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=gemini-cli&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7932269832779833783&quot; target=&quot;_blank&quot;&gt;gemini-cli&lt;/a&gt; in an empty directory, and gave simple instructions of what I wanted to accomplish: a simple &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=key-value+explorer+examples&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7932269832779833783&quot; target=&quot;_blank&quot;&gt;key-value explorer&lt;/a&gt; for &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=open+source+valkey&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7932269832779833783&quot; target=&quot;_blank&quot;&gt;open source valkey&lt;/a&gt;, that runs locally on my machine, can load and save CSV data files, and offers the ability to change keys and values interactively. I asked for the app to be built in &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=python+programming+language&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7932269832779833783&quot; target=&quot;_blank&quot;&gt;python&lt;/a&gt;, and to use the &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=tcl-tk+libraries+tutorial&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7932269832779833783&quot; target=&quot;_blank&quot;&gt;tcl-tk libraries&lt;/a&gt; for the graphical user interface. I chose tcl-tk for a couple of reasons: it is available on multiple platforms, and is a challenge on &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=OSX+operating+system&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7932269832779833783&quot; target=&quot;_blank&quot;&gt;OSX&lt;/a&gt; after Apple deprecated support for it.&lt;/p&gt;&lt;p&gt;The CLI started cranking, and created the directory structure for the application, and asked for permission to download and install the relevant python libraries. After 10 minutes of simple questions and answers, iterations on the interface, and testing that every change produces the correct UI and results, the application was complete. I was impressed with the results: the application did what I wanted it to do, and the code was clear and well documented, similar to professionally written code.&amp;nbsp;&lt;/p&gt;&lt;p&gt;I was amazed with the outcome, and decided to repeat the experiment, but now using a native language. I chose C++, a language I am very familiar with, and very aware of the challenges of using it to build a cross-platform GUI application. The same cycle repeated as the exercise with Python, but this time it did not go as smoothly or as quickly as before.&lt;/p&gt;&lt;p&gt;The CLI chose &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=SFML+library&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7932269832779833783&quot; target=&quot;_blank&quot;&gt;SFML&lt;/a&gt; as the cross platform GUI library, and built the directory structure and &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+cmake+files&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7932269832779833783&quot; target=&quot;_blank&quot;&gt;cmake files&lt;/a&gt; for the project. It then started to generate the code for the UI. During the process it hit multiple &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=compilation+errors+debugging&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7932269832779833783&quot; target=&quot;_blank&quot;&gt;compilation errors&lt;/a&gt;, mostly due to type mismatches, and incorrect function argument order. What was fascinating during the process is that the CLI discovered errors in the library documentation, and by examining the header files uncovered the argument mismatch and fixed them. However it took many iterations to resolve these errors.&lt;/p&gt;&lt;p&gt;Then it hit another wall with generating the dialog boxes for loading and saving the key-value pairs in &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=CSV+format+example&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7932269832779833783&quot; target=&quot;_blank&quot;&gt;CSV format&lt;/a&gt;. It downloaded the requisite font files, and an open source library for building dialog boxes that is compatible with SFML, however it struggled with font registration, and getting that library integrated with SFML. After some attempts, I gave it the hint to use a different library for the UI--&lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=wxWidgets+library&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7932269832779833783&quot; target=&quot;_blank&quot;&gt;wxWidgets&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;p&gt;The CLI cleaned up the directory structure, regenerated the cmake files, and proceeded iteratively with the build-test cycle until the application was complete. During the process it experienced some hiccups with type mismatches, type-casting, and ID generation, however the end result was a fully functional application that satisfied my requirements, with clear and documented code, and minimal intervention from me, with very minor modifications to the code. The exercise took longer than the python one, however it definitely took much less time than if I did everything from scratch by myself.&lt;/p&gt;&lt;p&gt;The exercise and the results got me very excited about the potential of vibe-coding. Imagine how many people that have an idea for an application, but don&#39;t pursue it because they lack programming expertise or the ability to create supporting assets such as graphical user interfaces, sound, video, or other creative assets. Now with a &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=generative+AI+coding+tool&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7932269832779833783&quot; target=&quot;_blank&quot;&gt;generative AI coding tool&lt;/a&gt;, they can pursue these ideas, and with minimal programming knowledge, build a prototype they can experiment with, and help them refine these ideas. Programming, creative assets, or the toil of &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=define+boilerplate+code&amp;amp;bbid=4319254486096748997&amp;amp;bpid=7932269832779833783&quot; target=&quot;_blank&quot;&gt;boilerplate code&lt;/a&gt; would no longer be a barrier to pursue these ideas.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Or imagine a seasoned developer, who wants to accelerate building a prototype, but wants to reduce the toil of learning technologies they are not very familiar with, or accelerate the tedious parts of the task.&lt;/p&gt;&lt;p&gt;The potential is boundless, and the productivity increase is unbounded!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/7932269832779833783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2025/09/vibe-coding-with-gemini-cli.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/7932269832779833783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/7932269832779833783'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2025/09/vibe-coding-with-gemini-cli.html' title='Vibe coding with Gemini CLI'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-1604362762423479447</id><published>2021-07-19T14:11:00.000-07:00</published><updated>2021-07-19T14:11:06.320-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="networking"/><category scheme="http://www.blogger.com/atom/ns#" term="router"/><category scheme="http://www.blogger.com/atom/ns#" term="wifi"/><title type='text'>New ASUS RT-AX88U router</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;span style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-size: 16px;&quot;&gt;I have been using Asus routers for many years, and have been pretty happy with them. The web interface is superb, and the firmware upgrades are timely and easy to apply, and over the last couple of years have introduced newer features that kept my old router relevant and functional.&lt;/span&gt;&lt;span class=&quot;Apple-converted-space&quot; style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-size: 16px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot; style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-size: 16px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px 0px 14px;&quot;&gt;After many years of service, my older router finally gave way, and started dropping Wifi connections randomly, especially when under heavy load. The connection drop happens whenever the kids have a Zoom meeting, or my wife and I are on work calls. Turning the laptop/iPad Wifi off and on again did not help, and we usually had to reboot the router to be able to connect again.&lt;/p&gt;&lt;p class=&quot;p1&quot; style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-size: 16px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px 0px 14px;&quot;&gt;Out of curiosity I looked at the CPU/memory stats of the router under heavy load, and could not see any issues. Even when all of us were in video calls, the CPU/memory did not rise about 50%. I could not see anything abnormal in the logs either.&lt;/p&gt;&lt;p class=&quot;p1&quot; style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-size: 16px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px 0px 14px;&quot;&gt;Online I saw that a lot of people had similar problems after upgrading to the latest router firmware, but could not pinpoint if what I had was a firmware issue, or an older router issue.&lt;/p&gt;&lt;p class=&quot;p1&quot; style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-size: 16px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px 0px 14px;&quot;&gt;I decided it might be time to get a new router, and enjoy the newer hardware and protocol support. I wanted to see if I could still use my older router as a mesh router for non-essential devices, so I stuck with Asus. Despite the Wifi connection issues, I have had good experiences with their routers over the years, and I really liked their interface.&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot; style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-size: 16px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px 0px 14px;&quot;&gt;I narrowed my choices to the RT-AX88U, and their ROG high-end routers. I could not justify the high price of the latter, and the online reviews were not very good, so I went with the RT-AX88U instead.&lt;/p&gt;&lt;p class=&quot;p1&quot; style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-size: 16px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px 0px 14px;&quot;&gt;The setup was very seamless, and I kept the older network information. I was surprised that most of the Wifi devices connected automatically to the new router, without complaining that the router hardware has changed. For the laptops, and iPads the expected behavior occurred, and I had to re-enter the network information to get them to connect.&lt;/p&gt;&lt;p class=&quot;p1&quot; style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-size: 16px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; margin: 0px 0px 14px;&quot;&gt;It has been about a couple of weeks now with the new router, and so far we had no issues, even under very heavy usage. The router does not break a sweat, and the speed tests for all the wireless modes (a/g/n/ax) show significant improvements over the previous router. Perhaps it is good to upgrade the routers every couple of years to make use of hardware and protocol improvements.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/1604362762423479447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2021/07/new-asus-rt-ax88u-router.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/1604362762423479447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/1604362762423479447'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2021/07/new-asus-rt-ax88u-router.html' title='New ASUS RT-AX88U router'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-6153693773934815000</id><published>2020-10-21T16:36:00.001-07:00</published><updated>2020-10-21T16:36:18.905-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><category scheme="http://www.blogger.com/atom/ns#" term="wsl2"/><title type='text'>Python on Windows 10</title><content type='html'>&lt;p&gt;Last weekend I wanted to clean up my python installation on
Windows 10. In the past, I used a combination of Anaconda, Python app from the
Windows Store, and Python distributions from python.org. Most of these were
older versions that I have not updated in a while since I spend most of my time
in WSL.&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;I started by deleting everything and cleaning up the
installs. Afterwards, I downloaded python 3.8 from python.org, and proceeded with
the installation. I selected install python for everyone and adding it to the %PATH%
environment variable. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;After the installation completed everything worked like a
charm, until I started installing packages.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;I started with installing TensorFlow:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;code class=&quot;bash&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;pip install tensorflow&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;o:p&gt;&lt;/o:p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;and got a cryptic error that one of the TensorFlow files was
missing. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;A quick internet search revealed that it is due to a missing
setting for long filenames in Windows 10.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;
&lt;/span&gt;Following the instructions in &lt;a href=&quot;https://superuser.com/questions/1119883/windows-10-enable-ntfs-long-paths-policy-option-missing&quot;&gt;this
Stackoverflow post&lt;/a&gt; to enable long filenames option in the local computer
policy, resolved the issue, and the installation proceeded smoothly.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Then I installed keras, and jupyterlab&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;code class=&quot;bash&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;pip install keras jupyterlab&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;o:p&gt;&lt;/o:p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;and tried to run jupyter lab, which failed because Jupyter
was not in the %PATH%. &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Instead of adding
another directory to the %PATH% variable, I ran jupyterlab through:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;code class=&quot;bash&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;python -m jupyterlab&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;o:p&gt;&lt;/o:p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;More keystrokes but works uniformly for any python module. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Now with python and the ML frameworks installed on Windows 10,
I can make use of the GPU again. But not for long, since WSL is planning on
adding GPU support soon, and there will be no need to live outside of WSL
anymore.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/6153693773934815000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2020/10/python-on-windows-10.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/6153693773934815000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/6153693773934815000'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2020/10/python-on-windows-10.html' title='Python on Windows 10'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-5789126448112591201</id><published>2020-10-14T17:58:00.005-07:00</published><updated>2020-10-14T17:58:36.804-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="interns"/><category scheme="http://www.blogger.com/atom/ns#" term="microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="software engineering"/><title type='text'>Interns at Microsoft</title><content type='html'>&lt;p&gt;One of my favorite times at work is when the interns in my
organization present the projects they have been working on for the past 10 or
so weeks. It is amazing to see what they have accomplished during that period,
and its impact on the business.&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;In my groups, I always make sure that everything the interns
work on makes it to production and has visible business impact. The interns enjoy
that quantifiable sense of accomplishment and seeing that their work lives in a
launched product and improves some aspect of it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;After the interns demo their projects, I schedule follow-up
1:1 meetings with each of them. During the meeting, we go over their
experiences during the internship, what they have learned in the process, and
how can we make the experience better the next time around. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Their suggestions are always on point, constructive, and actionable.
The conversations invariably drift to learning more about Microsoft, and what
advice would I give them to have a successful engineering career after graduating
and joining the workforce.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;I always give them the same advice I give to seasoned software
engineers be curious, collaborative, and develop your communication skills.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;In our field, curiosity is very important. The field changes
very fast, and curious engineers adapt and learn new skills that help them in their
career. Technologies that are hot today are obsolete tomorrow, and curiosity
and learning guards against that.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;I have hired many an engineer that had no formal education
in machine learning, distributed systems, or language runtimes, but were
curious about the area, and their curiosity drove them to do the legwork, and
learn from textbooks, online courses, open source codebases.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Curious engineers are also not shy at asking questions and
using these to elevate their knowledge about the subject matter, or help others
articulate a design or idea better, which is a big win for the whole team.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;In our field, collaboration is also very important. Software
development is a team sport, and today’s large codebases are seldom developed in
isolation by a single developer. They usually involve multiple engineering
teams, and multiple disciplines such as design, product management, testing,
and operations. Learning how to navigate that maze and collaborate within and
across disciplines is a valuable skill to have and pays off later in one’s career.
&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Finally, we come to communication skills. Most engineers dedicate
an inordinate amount of time to learning new technologies, and forget to
develop, and exercise their communication, presentation, and influencing
skills. These skills are important even at the beginning of one’s career, and
become deal breakers as the career progresses, both for individual contributors
and managers. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;After our conversation, the interns spend the rest of the
week off-boarding, and go back to school. I am always pleasantly surprised when
they reach out to connect later, and doubly happy when they decide to join my
teams after graduation.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/5789126448112591201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2020/10/interns-at-microsoft.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/5789126448112591201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/5789126448112591201'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2020/10/interns-at-microsoft.html' title='Interns at Microsoft'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-4755445914778588576</id><published>2020-10-09T09:53:00.000-07:00</published><updated>2020-10-09T09:53:09.791-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="catalina"/><category scheme="http://www.blogger.com/atom/ns#" term="Mac OS X"/><category scheme="http://www.blogger.com/atom/ns#" term="macbook air"/><category scheme="http://www.blogger.com/atom/ns#" term="onedrive"/><title type='text'>MacOS Catalina, OneDrive, and case sensitive file systems</title><content type='html'>&lt;p&gt;Over the weekend, I dusted off my old Macbook Air to search
for some old family photos. I have not used the laptop for a long time, and it
was completely out of charge. I plugged it in, and it quickly booted. Shortly
after, I got bombarded with notifications that many of the applications needed
updating, and that a new version of the OS was available.&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;I waited till I found the photos I was looking for, before attempting
to upgrade anything. I also wanted to install OneDrive to get my old files to
the cloud, so that I can access them from any of my devices, instead of dusting
off old computers to get to them.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;The MacOS upgrade experience has always been fantastic, and
this one was no different. The OS upgrade files downloaded quickly and after a
restart and a quick install, the Macbook Air was ready to go. &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Upgrading the installed applications was also
a breeze, however in the process I discovered that a large majority of the
applications installed were not compatible with Catalina. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Since I have not used the Macbook Air in ages, it was an
easy decision to delete these applications; I didn’t miss them, and in the
future if I find I cannot access any of my legacy files, I can always find a
converter, or a newer version of the application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Next, I installed Office. The installation was smooth and
quick, but when I tried to setup OneDrive, I got an error that OneDrive cannot
create the folder in the location I selected. The error message mentioned that
either I don’t have access to the folder, or that the filesystem is
case-sensitive. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;I checked the permissions on the folder, and made sure that
I own it, and have read/write access to it. That did not solve the problem, and
so I investigated the case-sensitivity issue.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Turns out that the directory I chose for OneDrive was on a
filesystem that was case sensitive. I did not want to change that filesystem,
but since the drive had a bit of space left, I fired off the “Disk Utility”
application, and created a new volume for OneDrive. I chose “APFS(Encrypted)” format
and limited the volume to 20GB. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;The install went smoothly after that, and now my old files
have a new life in the cloud.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/4755445914778588576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2020/10/macos-catalina-onedrive-and-case.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/4755445914778588576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/4755445914778588576'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2020/10/macos-catalina-onedrive-and-case.html' title='MacOS Catalina, OneDrive, and case sensitive file systems'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-3616928248674324509</id><published>2020-10-06T12:00:00.000-07:00</published><updated>2020-10-06T12:00:01.251-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><category scheme="http://www.blogger.com/atom/ns#" term="wsl"/><category scheme="http://www.blogger.com/atom/ns#" term="wsl1"/><category scheme="http://www.blogger.com/atom/ns#" term="wsl2"/><category scheme="http://www.blogger.com/atom/ns#" term="x11"/><title type='text'>Upgrading from WSL1 to WSL2 on Windows 10</title><content type='html'>I have been using WSL1 for a long time now and have been extremely pleased with it. After setting up &lt;a href=&quot;https://abe-taha.blogspot.com/2020/04/wsl-and-x11-applications.html&quot;&gt;Cygwin/X &lt;/a&gt;server, I don’t have a need for running Linux in a VM anymore. With the new Windows update, WSL is changing to support GPUs and GUI applications, so I decided to upgrade my install to make use of these improvements once they are shipped.&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The upgrade path is easy:  you can choose to configure a new WSL2 environment, or you can migrate your existing one. I decided to upgrade my install, since I had a lot of packages installed, and did not want to reinstall and configure them in a new environment again.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First, I started by getting everything I have in my Ubuntu environment up to date:&lt;/div&gt;&lt;div&gt;&amp;nbsp;

&lt;code class=&quot;”bash”&quot;&gt;sudo apt update&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code class=&quot;”bash”&quot;&gt;&amp;nbsp;sudo apt upgrade&amp;nbsp;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;


Then in a windows command prompt, I updated my default WSL environment to version 2:&lt;/div&gt;&lt;div&gt;&amp;nbsp;
&lt;code class=&quot;”bash”&quot;&gt;wsl –set-default-version 2&amp;nbsp;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;


WSL2 requires Virtual machine platform support, and if that is not enabled, you can easily enable it through the control panel or searching for “Turn Windows Features On or Off”, and enabling the Virtual machine platform feature.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;After the installation and a reboot, I upgraded my Ubuntu environment (you can list the environments through wsl –list –verbose). In my case, my environment name is “Ubuntu”&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&lt;code class=&quot;”bash”&quot;&gt;wsl –set-version Ubuntu 2&amp;nbsp;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;


This starts the conversion. After that completes, in a bash window, I did an Ubuntu release upgrade:&lt;/div&gt;&lt;div&gt;&amp;nbsp;

&lt;code class=&quot;”bash”&quot;&gt;sudo do-release-upgrade&amp;nbsp;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;code class=&quot;”bash”&quot;&gt;&lt;/code&gt;The release upgrade asks a couple of questions about packages and configs; I chose the maintainer’s version, and after everything was completed, I was ready to go.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;I needed to do a couple of changes to enable X11 different from what I’ve done for WSL1:&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;In my ~/.bashrc I added the following lines:&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;
&lt;code class=&quot;”bash”&quot;&gt;export DISPLAY=$(awk &#39;/nameserver / {print $2; exit}&#39; /etc/resolv.conf 2&amp;gt;/dev/null):0&amp;nbsp;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code class=&quot;”bash”&quot;&gt;&amp;nbsp;export LIBGL_ALWAYS_INDIRECT=1&amp;nbsp;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;
And in my Cygwin/X Xlaunch wizard, I enabled access from everywhere, and added “-listen tcp” to the extra arguments.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;And everything worked like a charm!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/3616928248674324509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2020/10/upgrading-from-wsl1-to-wsl2-on-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/3616928248674324509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/3616928248674324509'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2020/10/upgrading-from-wsl1-to-wsl2-on-windows.html' title='Upgrading from WSL1 to WSL2 on Windows 10'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-2383680861144119449</id><published>2020-09-17T12:03:00.002-07:00</published><updated>2020-09-17T12:03:46.597-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="chromebook"/><category scheme="http://www.blogger.com/atom/ns#" term="chromeOS"/><category scheme="http://www.blogger.com/atom/ns#" term="learning"/><category scheme="http://www.blogger.com/atom/ns#" term="school"/><title type='text'>School and Chromebooks</title><content type='html'>&lt;p&gt;&amp;nbsp;This year schools shifted to remote learning because of COVID-19. Before the semester started, our school district planned on a hybrid approach, where students attended schools physically a couple of days a week, and studied from home for the rest of the week. The thinking behind the plan was to balance the students’ exposure vs the benefits of in-person learning, however as the virus situation did not improve by the school start, the district abandoned the plan and opted for a full-time at home learning schedule.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Before the school started, my plan was to have the kids use their iPads to access their learning materials. They were comfortable with their iPads, knew how to use a web-browser, and switch between applications well. As school start neared, I started thinking that they would benefit from a bigger screen, and a decent physical keyboard, so I began to look for reasonably priced laptops that would do the job. As I started looking late, and I think a lot of parents had&amp;nbsp; similar ideas, almost all the laptops that I wanted to get were out of stock, with a month out expected delivery time.&amp;nbsp;&lt;/p&gt;&lt;p&gt;A friend recommended looking at Chromebooks instead. They are reasonably priced, and powerful enough for schoolwork. They have touchscreens, and good keyboards, and more importantly they are well integrated with the Android system and have good parental controls. I gave it a try and searched online for reasonably priced Chromebooks.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Again, most were out of stock, but I was lucky to stumble upon the Acer Chromebook 15. At $350, with reasonable memory and disk storage, a touch screen, and a keyboard, it was a good deal. And luckily it was in stock and shipped in 2-days, just in time for when the school started.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;When it arrived, I was impressed with the build quality for the price, and the features the laptop had. Setting up Chrome-OS was a breeze, and when I used my son’s account for the laptop, Chrome-OS automatically enabled Parental Controls, tied them to my Google account, and Parental Link app. App purchase approvals were a breeze afterwards.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Next, I installed Microsoft Teams—the school uses that for classes, video conferences, and homework submission. I prefer having the application installed, instead of using the web-based application, however after a couple of tries, my son ended up using the web-based one. On the iPad, he became familiar with browsers, and switching between tabs felt more natural to him, and that carried over to the Chromebook.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;It has been a couple of weeks now with the Chromebook, and everyone is happy. The battery life on the Acer is great—about 12 hours on a single charge, with good usage during the day for video conferencing, and educational games. The CPU is reasonably fast, and the thing is always on, so booting up is instantaneous. I forgot how satisfying that feeling is, when you want to do something, open the laptop lid, and you’re instantly ready to go. Perhaps I am justifying getting one for myself.&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/2383680861144119449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2020/09/school-and-chromebooks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/2383680861144119449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/2383680861144119449'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2020/09/school-and-chromebooks.html' title='School and Chromebooks'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-9161692272975781236</id><published>2020-07-09T08:59:00.001-07:00</published><updated>2020-07-09T08:59:16.862-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="tech"/><title type='text'>Office in the cloud</title><content type='html'>Over the last month I have been using the web version of Office applications. I switched over from the desktop versions not because I was dissatisfied with them, but I switched because I wanted to be on the bleeding edge and get a preview of the new features quickly. I also did not want to update the desktop applications every day to get the new features, and the web apps relieved me from that burden.&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As I used the web apps daily, I found that I did not miss the desktop versions. Sure, the web apps have their quirks, and living on the bleeding edge with preview features does not help. However, in this case, the plusses outweighed the minuses.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For one, I did not miss the ability to work offline, as I am almost always online and connected to a high-speed network. I loved that the browser took care of managing my open documents, presentations, spreadsheets, email, and calendar tabs, and automatically restored them when I restarted my computer or updated my browser.  I also loved the smaller memory footprint when I opened tons of documents and presentations.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;But above all, I loved seeing and using the new collaboration and AI features that made me productive ahead of their rollout to the public. &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/9161692272975781236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2020/07/office-in-cloud.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/9161692272975781236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/9161692272975781236'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2020/07/office-in-cloud.html' title='Office in the cloud'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-4233332451913116559</id><published>2020-06-05T08:00:00.003-07:00</published><updated>2020-06-05T08:00:00.699-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="advertising"/><category scheme="http://www.blogger.com/atom/ns#" term="big data"/><category scheme="http://www.blogger.com/atom/ns#" term="data"/><title type='text'>Offline matching and the catalog from Dell</title><content type='html'>&lt;p class=&quot;MsoNormal&quot;&gt;A couple of weeks ago I saw an ad
on my phone for the new Dell XPS laptop. Out of curiosity I clicked on it, and
started configuring a couple of options just for fun. I read a lot of good
reviews about the upcoming XPS laptop, how the design rivals that of Apple’s MacBook
laptops, and how certain configurations come with Linux preinstalled. I played around
with the options, and configured two beast laptops just for fun, then I left
and have not thought about it anymore, since I am not in the market for a new
laptop, being satisfied with my Surface 3 laptop and all.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;A couple of weeks later, I received
a Dell catalog for the first time, addressed to me and not to the usual “Current
Resident”, that has more details about the XPS laptops, gaming laptops, desktops,
and peripherals that Dell sells. The catalog also included a 15% discount,
which was a nice touch.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;I wondered how I got that catalog,
even though I have not explicitly sign up for it, nor request one, nor provide
any information while configuring the laptops on Dell’s website. Then I
remembered offline matching. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;There are offline matching data
companies, that collect customer activity in the offline world, such as
purchases associated with gift and loyalty cards from grocery stores, gas
stations, brick and mortar retailers, etc., where names and addresses are
available, and use a bridge between the online-offline world to match the activity
online with that offline. The bridge can be an email address, a third-party
cookie, swap ID-match, or a hashed ID, etc., and after bridging, the data on
the customer activity is holistic. I bet that’s probably what happened, and I
ended up getting the catalog.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/4233332451913116559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2020/06/offline-matching-and-catalog-from-dell.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/4233332451913116559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/4233332451913116559'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2020/06/offline-matching-and-catalog-from-dell.html' title='Offline matching and the catalog from Dell'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-1011257894485939169</id><published>2020-06-04T09:48:00.002-07:00</published><updated>2020-06-04T09:59:35.805-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="tech"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>Windows 10 May Update v2004</title><content type='html'>&lt;p class=&quot;MsoNormal&quot;&gt;I upgraded all my devices to the Windows May update, all but
my new Surface 3 laptop. Whenever I checked manually for the system updates, I
got nothing, apart from the occasional Windows Defender updates. For a week I
checked religiously, and when I did not get any notifications, I started searching
online to see if there were any issues with my device. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;It turns out that there were. There is an issue affecting
the Surface 3 laptop, and other devices that use an always on, always connected
networking. The issue blocks the update for these devices, per the &lt;a href=&quot;https://docs.microsoft.com/en-us/windows/release-information/status-windows-10-2004&quot;&gt;Known
Issues and Release Problems page&lt;/a&gt; since it leads to random restarts or
crashes. The issue is currently under investigation, and
once resolved, the surface will get the update. I will wait till then.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Interestingly there are
recommendations online to circumvent the block on the Surface, by using the &lt;a href=&quot;https://www.microsoft.com/en-us/software-download/windows10?ranMID=24542&amp;amp;ranEAID=nOD/rLJHOac&amp;amp;ranSiteID=nOD_rLJHOac-EXZGB5A41O3WGQMOJEv.gA&amp;amp;epi=nOD_rLJHOac-EXZGB5A41O3WGQMOJEv.gA&amp;amp;irgwc=1&amp;amp;OCID=AID2000142_aff_7593_1243925&amp;amp;tduid=%28ir__sgzqec1wwckfthvxkk0sohziee2xnq6ggdxevl3v00%29%287593%29%281243925%29%28nOD_rLJHOac-EXZGB5A41O3WGQMOJEv.gA%29%28%29&amp;amp;irclickid=_sgzqec1wwckfthvxkk0sohziee2xnq6ggdxevl3v00&quot;&gt;Update
Assistant Tool&lt;/a&gt;, or the media creation tool. I don’t recommend either, unless
you enjoy bricking your laptop. Luckily the assistant tool checks to see
if there is a block on the device before applying the update, and if there is,
it fails the update protecting the device.&lt;span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/1011257894485939169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2020/06/windows-10-may-update-v2004.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/1011257894485939169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/1011257894485939169'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2020/06/windows-10-may-update-v2004.html' title='Windows 10 May Update v2004'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-992131548876180666</id><published>2020-04-28T10:10:00.001-07:00</published><updated>2020-04-28T10:10:59.544-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><category scheme="http://www.blogger.com/atom/ns#" term="wsl"/><category scheme="http://www.blogger.com/atom/ns#" term="x11"/><title type='text'>WSL and X11 applications</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
I have been using the Windows Subsystem for Linux for a long
time now and have been pretty pleased with it for text-based applications. When
I need to use a graphical application, I fire up Hyper-V with a full Ubuntu
install, and mount my local drives to access my directories and files. The heavy-handed
solution worked well for a long time now, but over time I found I was installing
the same set of programs I used frequently in both places. There must be a
better solution. If only I could run graphical applications on WSL.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Turns out there is a way. &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;I searched for a free X11 server that I can
install on Windows 10 and found a couple that were highly rated. I also
remembered that when I used Cygwin long time ago, it came with its own
X-server, and wondered if I can install that separately, since with WSL I did
not need Cygwin as a whole. It did, and I installed &lt;a href=&quot;https://x.cygwin.com/&quot;&gt;Cygwin/X&lt;/a&gt; server and fonts.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
After the install, I ran Xlaunch, which ran a configuration wizard
to start the X-server. I passed the extra parameter&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;code class=&quot;bash&quot;&gt;-listen tcp&lt;o:p&gt;&lt;/o:p&gt;&lt;/code&gt;

&lt;br /&gt;
&lt;code class=&quot;bash&quot;&gt;&lt;br /&gt;&lt;/code&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
to the server to allow for remote connections from WSL. In
the bash prompt, I exported the display&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;code class=&quot;bash&quot;&gt;Export DISPLAY=:0.0&lt;o:p&gt;&lt;/o:p&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
and tested the install by running xterm. Viola, I can run
graphical applications now on WSL, and I don’t need to duplicate Linux program
installs between WSL and Hyper-V.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/992131548876180666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2020/04/wsl-and-x11-applications.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/992131548876180666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/992131548876180666'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2020/04/wsl-and-x11-applications.html' title='WSL and X11 applications'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-5925649775086911540</id><published>2019-11-01T10:00:00.000-07:00</published><updated>2019-11-01T10:00:04.980-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="computers"/><category scheme="http://www.blogger.com/atom/ns#" term="general"/><category scheme="http://www.blogger.com/atom/ns#" term="upgrades"/><title type='text'>Upgrading my desktop </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
At Microsoft we get to refresh our desktops and laptops
every couple of years. Most people jump at the opportunity to get the latest
equipment, but I usually don’t. I don’t like migrating from an older machine to
a newer one and delay the refresh for as long as I can, preferably until the
equipment dies, or goes out of compliance.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
After approving many equipment upgrades for my team this
year, I decided to upgrade my monitor. I always had a single small monitor for
my desktop, and never liked the dual monitor setup, or what I jokingly call the
“flight simulator” setup with 4 monitors—three side by side, and one on top. My
team swears by the productivity increase of seeing everything they need at
once, and I believe them.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
However, for me I was weaned on Unix terminals,
Emacs, and command line tools, so I learned to live within the confines of a
small screen. Nonetheless, getting a larger and crisper display was appealing,
so I took the plunge and ordered a 38-inch monitor.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Of course, when I got the new monitor, my computer graphics
card was too old to drive it. Instead of getting a newer and more powerful
graphics card, our admin suggested refreshing the desktop, since mine was very
due for recycling. I concurred and got a new Dell desktop. I plugged in the new
monitor and booted. I was pleasantly surprised by how quiet the new machine was,
how much faster it booted, and how smooth and crisp the new display looked. Overall
a good start.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
I was disappointed however that it had less memory and
storage than my older computer. The new behemoth came with 16GB of RAM, and
500GB disk. My laptop—strike that, my phone has more memory and storage than
that. I asked our admin for a 1TB SSD, and 2x8GB of memory. Installing the SSD and
the memory was a breeze, and I booted the computer.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Sadly, nothing. No Sound. No picture. The screen was blank, and
I had no clue what happened. I noticed that the power button was flashing
different colors, so I went online to the Dell site to figure what was going on.
Apparently, the computer communicates error codes by blinking the power button LED.
I had to count how many times a color repeats and look at a table online to
figure out what the error is. Mine turned out to be a bad memory configuration.
Oh boy. The computer came with 2 memory sticks pre-installed, and I added 2x8GB
memory sticks in what I thought were the right location.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Buried in the Dell manual for the computer was a table that
shows the memory configuration for 32GB worth of RAM—one 8GB memory stick in
every other slot. I put in the 2 8GB RAM sticks in the correct slots and booted
again. No luck. Same blinking error code. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
I tried other memory sticks to no avail, so I gave up, and
booted the computer without the extra memory. The computer worked like a charm,
with bigger storage, but with 16GB of RAM. I proceeded to install everything I
had on the older computer and migrating my files.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
In the afternoon, I complained to our admin about how can
the new machines have less memory than the older ones. He looked at the computer
order, and the order showed 32GB of RAM. What?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
I remembered long time ago when I bought an AMD K6 based
computer, that the computer shutdown after 3 mins of use. When I investigated,
it turned out that the manufacturer did not install the processor fan correctly,
and the CPU overheated and shut down to protect itself. Could I have a similar
problem here? I wondered if my Dell computer had a loose memory stick. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
I opened the computer one last time and examined the memory
sticks. Sure enough, one was loose. Each stick was 16GB of RAM, which explained
why when I installed the 2x8GB they did not work. How did a loose memory stick
pass quality control?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
I installed the memory stick correctly, and it was not loose
anymore. I booted the computer and got my 32GB back. Teaches me to ask for a
new monitor that required a new computer.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/5925649775086911540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2019/11/upgrading-my-desktop.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/5925649775086911540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/5925649775086911540'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2019/11/upgrading-my-desktop.html' title='Upgrading my desktop '/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-4134722208649458380</id><published>2019-09-23T08:00:00.000-07:00</published><updated>2019-10-31T15:58:58.969-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="phone"/><category scheme="http://www.blogger.com/atom/ns#" term="Samsung"/><title type='text'>A week with the Galaxy Note 10+</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;Last week I made
an impulse buy. I was at the Microsoft store trying to pass time while my kids
were enjoying painting on the surface laptops and playing games on the Xbox. I
walked around the store in search of something interesting and stopped at the
phone display. The display had the newest family of the Samsung Galaxy phones,
preloaded with Microsoft business applications. I picked up the biggest model
and started to play with it. I liked its bigger edge-to-edge screen and the
quality of the display. I must have enjoyed it very much, because I tried a lot
of my favorite sites and applications, and compared how easy it was to read on
the bigger screen than on my smaller iPhone X screen. I was so absorbed in the
comparisons, that I did not see the sales associate approaching.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;She was very
cordial, and started to chat about the differences between the two eco-systems—Android
and iOS, and that most of the applications that I used including work
applications ran on both. Then she mentioned that for a limited time only,
Samsung is offering \$650 for my trade-in, in case I decided to switch. In
addition, because I am a Microsoft employee, I get a gift card for \$150 if I
bought the phone in the store. The deal was so good to pass on, despite the
anticipated pain of switching from iOS to Android, as I have been using the
former since the first iPhone was introduced. I made the impulse buy, traded my
smaller screen for a bigger one that was easier on my eyes, and got a faster phone
with more memory and storage for virtually peanuts.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;Setting up my
applications was relatively easy, and since I had my contacts backed up on Google,
restoring these was a breeze. Apart from enrolling at work to gain access to
Wifi and internal sites, the process was relatively quick and painless. The
most difficult part was fixing the text messages and restoring my photos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;When I used my
iPhone, I exclusively used iMessage, which meant that my texts did not use SMS
messaging when I texted someone with an iPhone. Despite disabling iMessage
before trading in my old phone, other iPhones that I texted before cached that
information, and so if anyone wanted to text me a message, that text would be
lost. It was time consuming to send everyone I text frequently a regular SMS to
indicate I switched phones, and to wipe out that cache. That took a bit of a
time, and explaining, but I think now we are in the clear.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;The more painful
process was restoring the older pictures to the phone. I don’t take a lot of pictures
but restoring many years’ worth of photos proved to be a challenge. I backup
these images on OneDrive and Amazon cloud storage, but as I discovered trying
to restore them to the phone, that I cannot select everything to download. I
have to select images one by one, and then download them. This proved to be impossible
since I had many years’ worth of images and videos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;I then decided to
connect the phone to my computer using the high-speed USB-C to USB-C cables,
and started copying roughly 35GB worth of photos and family videos. The process
was not robust, and the time estimate for completion was ridiculous—roughly in
days. I left the phone connected over night to copy as many images as possible
and disconnected in the morning to use the phone for the day. At night I
reconnected again to resume the copy, but when I woke up the next morning, I
found that the copy failed because of dupes, and the connection crashed. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;I tried multiple ways
to copy the files to get around the dupes, such as copying a month worth of
images at a time, but that did not work. Then I thought of an idea: what if I zip
all the picture files and copy one humongous file to the phone that I can unzip
afterwards. That crazy idea worked like a charm. The zipping took about 20
minutes, the transfer another 20, and I unzipped the files using the phones
built-in file manager application. That took a couple of minutes, and I had my older
images and videos intact. I was beyond pleased.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;My experiences
with the phone over the next week were very good. All my applications worked
seamlessly, and I am enjoying the better Google voice recognition and map
navigation, to the&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;point where I dictate
everything now instead of typing. In addition, despite a slightly heavier usage,
my battery life is about 2-days. And did I mention a bigger screen easier on my
eyes?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/4134722208649458380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2019/09/a-week-with-galaxy-note-10.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/4134722208649458380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/4134722208649458380'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2019/09/a-week-with-galaxy-note-10.html' title='A week with the Galaxy Note 10+'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-5225544117767602865</id><published>2019-07-16T11:19:00.000-07:00</published><updated>2019-07-16T11:19:02.229-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="carplay"/><category scheme="http://www.blogger.com/atom/ns#" term="cars"/><category scheme="http://www.blogger.com/atom/ns#" term="iPhone"/><category scheme="http://www.blogger.com/atom/ns#" term="tech"/><title type='text'>Cars and Tech</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;Twelve years ago,
when I bought my car, my decision criteria were simple. I wanted a car that is
fun to drive, had good reliability, and was gas efficient; traits that were
missing in my prior car. I did not put a lot of weight on the technological
innovations the car had; I was happy with a good navigation system, a CD player
that held multiple CDs, and a backup camera that made parallel parking easier.
At the time, almost all car manufacturers provided undifferentiated versions of
these capabilities, with minor tweaks to the user interface, which made my
selection a lot easier.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;Over the years as
the technology advanced, these originally innovative features started to feel
obsolete. It was almost impossible to upgrade the hardware with newer and
faster components, and software did not have a better story. &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Only if either had issues or bugs, did the manufacturer
offer an upgrade, through vehicle recalls or maintenance, or through map update
CDs on a yearly basis, that captured changes in routes, points of interest, and
changes because of new construction.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;In the meantime,
smart phones became indispensable devices, not only providing the basics of phone
calls, text messages, and web browsing, but also the plethora of applications
that allowed us to do everything on these small devices from navigation, to listening
to music, to watching videos, and playing games. And with the brilliant invention
of the car phone holder, I found myself shifting away from the built-in
technology systems, to using my iPhone as the primary device for everything in
the car. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;Sure, it was less
convenient to have all the wires hanging from the phone to charge it and
connect it with the audio system, interfering with the gear shifter on my
manual transmission car, having a much smaller screen than the built-in one,
and substituting the on screen controls with the analog ones in the car; but
these inconveniences paled in front of the infinite upgradeability of the phone’s
software and hardware. There was no need to upgrade maps, or to worry about
phone address book integration, to load or unload music CDs, or to worry about
what audio book to choose ahead of a long commute or trip. And with the improvement
of voice recognition using all these apps while driving became much easier. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;I often wondered if
it were more convenient for auto manufacturers to forgo building systems for in-car
navigation/entertainment, and just have a space in the dash, where you can
install or plugin your favorite phone/tablet, and easily integrate with the car’s
analog controls. Then both CarPlay and Android Play came on the radar and made
something akin to that possible. Car manufactures still build the entertainment
and navigation systems but allowed smart phones to use the display and
entertainment systems seamlessly. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;On a couple of recent
trips, I rented cars that supported CarPlay, and even though the car had an up
to date navigation system with current maps and points of interest, I found
myself using my iPhone and CarPlay almost exclusively, if only for the real-time
traffic updates and rerouting, listening to Spotify or my podcasts, and setting
destinations through decent voice control using Siri. I believe the trend of forgoing
the built-in systems for easily updatable software and hardware platforms such
as the smart phone devices will continue, and unless auto manufacturers offer
similar capabilities, their built-in systems will become obsolete.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/5225544117767602865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2019/07/cars-and-tech.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/5225544117767602865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/5225544117767602865'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2019/07/cars-and-tech.html' title='Cars and Tech'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-3270549026178460001</id><published>2018-12-24T09:00:00.000-08:00</published><updated>2018-12-24T09:00:11.175-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="books"/><category scheme="http://www.blogger.com/atom/ns#" term="Kindle"/><category scheme="http://www.blogger.com/atom/ns#" term="reading"/><category scheme="http://www.blogger.com/atom/ns#" term="technology"/><title type='text'>Kindle Paperwhite</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
I have always been allergic to buying specialized electronic
devices that do only one thing, such as the Kindle, the iPod, and fitness
trackers. Why buy these when technology evolves so fast that a multi-purpose
device such as the phone or a smart watch can eventually do the same thing, but
with the convenience of updates that fix bugs and add functionality? So, I was shocked
when this weekend I made an impulse buy and got the newest Kindle Paperwhite—a special
purpose device for reading eBooks.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
I was walking past the Amazon store in the mall and saw that
the newest Kindle Paperwhites were marked down by $40 for the holidays. The
device looked good in the display, so I went in to look at it closely. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
The Paperwhite is small and light, with a 6” screen that is backlit
and waterproof. &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;The text was crisp and
readable, and in the ambient light, it felt like I am reading a printed book. I
was sold and bought it on the spot.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
At home I have struggled to put it down. The books are easy
to download on Wi-Fi, and in ambient light the reading experience is easy on
the eyes, and pleasurable despite the page flashing with every turn. I have
used it for an hour for the last 5 days and the charge is still holding up,
which would make it ideal for short trips without charging.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
My only wish is for a bigger screen Paperwhite, that I can
use for technical books and papers. Perhaps that’s my next year’s impulse buy.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/3270549026178460001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2018/12/kindle-paperwhite.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/3270549026178460001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/3270549026178460001'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2018/12/kindle-paperwhite.html' title='Kindle Paperwhite'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-199528219304434107</id><published>2018-04-08T13:20:00.001-07:00</published><updated>2018-04-08T13:20:49.636-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="arithmetic"/><category scheme="http://www.blogger.com/atom/ns#" term="kids"/><category scheme="http://www.blogger.com/atom/ns#" term="questions"/><title type='text'>On even and odd numbers, and kid&#39;s questions</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;Kids ask the best
questions. Unburdened by prior knowledge or assumptions, their questions are
driven by pure curiosity and a deep desire to learn something new. As adults we
can learn a lot from how kids ask questions and seek knowledge. And we can also
learn or strengthen our understanding of a particular topic by answering kids
questions. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;For example, my son
asked me a question about even and odd numbers, and why we get an even number when
we add two even numbers or two odd numbers, and an odd number when we add an
even and an odd number. Because this knowledge is drilled into us since our
younger years, we stop wondering why. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;Intuitively we
know the proposition is true, and we can cite a couple of examples to prove it
to ourselves. For example, adding 2 and 4--both even numbers, gives us 6, also
an even number. When we add 3 and 5--both odd numbers, we get 8, which is an
even number. If we choose a mix of an even number and an odd number and add
them, we got an odd number. For example, adding 2 and 3, we get 5, which is an
odd number. It seems that our intuition is onto something. Sometimes intuition leads
us astray, and reality is reflected by something non-intuitive. The theory of
relativity—both special and general, and quantum mechanics for example offer
non-intuitive description of reality and how things work.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;The addition
examples above are not enough to gain confidence that we answered the original
question. Since there is an infinite number of natural numbers (1,2,3, …etc),
we have to find a different way of establishing or refuting the statement
without listing an infinite number of examples. The clue is in how we write
even and odd numbers. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;An even number is
a number divisible by $2$. We can write an even number as the product of two
numbers, $2$, and another natural number $k&amp;gt;0$ in the form of $n_1=2k$. This
number is even, because it is divisible by $2$. An odd number is one that is
not divisible by $2$, or one where if divided by $2$ would have a remainder of $1$.
Thus, we can express an odd number as $n_2=2m+1$, where $m&amp;gt;0$ is a natural
number greater than zero.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;Now we can see
what happens when we add two even numbers, two odd numbers, and a mixture of
numbers. Let’s add two even numbers first $n_1=2k$ and $n_2=2m$. The sum is $n_1+n_2=2k+2m=2(k+m)$
which is an even number. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;How about adding two
odd numbers $n_1=2k+1$ and $n_2=2m+1$? The sum is $n_1+n_2=2k+1+2m+1=2(k+m)+2=2(k+m+1)$
which is an even number. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;Finally, how
about adding mixed numbers one even $n_1=2k$, and one odd $n_2=2m+1$. Their sum
is $n_1+n_2=2k+2m+1=2(k+m)+1$ which is an odd number.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN;&quot;&gt;By working
through this simple math, we have gained insight into something drilled into us
long time ago.&lt;a href=&quot;https://www.blogger.com/null&quot; name=&quot;_GoBack&quot;&gt;&lt;/a&gt; Indeed, kids ask the smartest questions;
don’t dismiss them, but use them to learn something new, or understand
something you already know better.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/199528219304434107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2018/04/on-even-and-odd-numbers-and-kids.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/199528219304434107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/199528219304434107'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2018/04/on-even-and-odd-numbers-and-kids.html' title='On even and odd numbers, and kid&#39;s questions'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-3465623873159213077</id><published>2018-03-01T11:43:00.001-08:00</published><updated>2018-03-01T11:43:33.638-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="general"/><category scheme="http://www.blogger.com/atom/ns#" term="life"/><title type='text'>The Bystander Effect</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;

&lt;br /&gt;
&lt;div style=&quot;margin: 0px 0px 10.66px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;At work, each floor
has a kitchen area, with two beverage fridges, containing sodas, milk, and a variety
of juices. Beverages are stocked weekly, and often checked for expiry or spoil.
Last week, one of the fridges broke down, and to protect the milk from spoiling,
someone moved it to the neighboring fridge. The next day I passed by the kitchen,
the fridge was still broken, and more beverages started migrating to the working
fridge. A week passed, and nothing changed. I realized that we are witnessing the
bystander effect in action.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;margin: 0px 0px 10.66px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Bystander_effect&quot;&gt;&lt;span style=&quot;color: #0563c1;&quot;&gt;The bystander effect&lt;/span&gt;&lt;/a&gt; or
bystander apathy is a phenomenon where people are less likely to act when others
are present, because they assume that in a group someone eventually will. The apathy
increases with the number of people in a group. The internet has a lot of examples
of the bystander effect, and advice on how to circumvent it when you need to ask
for help. Most of the examples involve dire and emergency situations, which highlight
the incongruity of the help offered by the group. Interestingly however, we also
experience the bystander apathy in milder non-emergency situations, for example
when something is obviously broken, and we implicitly assume that someone else in
the group will step up and fix it. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;margin: 0px 0px 10.66px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;The solution to the
fridge problem was very easy. I submitted a facilities request, and within an hour
the fridge was fixed, and the beverages happily migrated to their respective locations.
Perhaps the bystander apathy has its merit; someone eventually will act.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;u&gt;&lt;/u&gt;&lt;sub&gt;&lt;/sub&gt;&lt;sup&gt;&lt;/sup&gt;&lt;strike&gt;&lt;/strike&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/3465623873159213077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2018/03/the-bystander-effect.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/3465623873159213077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/3465623873159213077'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2018/03/the-bystander-effect.html' title='The Bystander Effect'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-4475326872007152008</id><published>2018-02-07T13:01:00.000-08:00</published><updated>2018-02-07T13:01:14.198-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="computers"/><category scheme="http://www.blogger.com/atom/ns#" term="devices"/><category scheme="http://www.blogger.com/atom/ns#" term="general"/><category scheme="http://www.blogger.com/atom/ns#" term="progress"/><title type='text'>A computer in your hand</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;NormalJustified&quot;&gt;
&lt;span lang=&quot;EN&quot;&gt;Not so long
ago, my laptop was my preferred device to use after hours. Relaxing on the
couch, I can check my work email, catchup on the news, read research papers, or
enjoy reading books. As technology advanced, I could also stream videos and
shows at my leisure without commercial interruptions, that for the last 10
years or so, I had no need for a cable subscription or a TV.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;NormalJustified&quot;&gt;
&lt;span lang=&quot;EN&quot;&gt;Then came
tablets. I was not one of the early adopters, since laptops were sufficiently advanced
at the time: they were faster, had a keyboard and a better screen resolution,
and the short battery life was not a deterrent. An electric outlet was always
close by, and I could still work while the laptop is charging.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;NormalJustified&quot;&gt;
&lt;span lang=&quot;EN&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;NormalJustified&quot;&gt;
&lt;span lang=&quot;EN&quot;&gt;Then came
kids, and the chaos associated with them. Kids have a natural talent where they
know exactly when you need to focus on something that’s not them or when you’ve
been sitting down for longer than a minute, and they are compelled to rectify
such injustice. This leads to a lot of work interruptions, lots of standing up
and sitting down, putting the laptop aside, sometimes locking or unlocking the
screen, and closing or opening the laptop lid with the eventual sleep and hibernation.
&amp;nbsp;At the time, laptops had longer wakeup
cycles, and you could not get back to what you were doing without waiting for a
couple of minutes till the laptop became operable again. At this point, the
laptop started becoming less convenient, and it was time to shift to the tablet
world.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;NormalJustified&quot;&gt;
&lt;span lang=&quot;EN&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;NormalJustified&quot;&gt;
&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp;Tablets are great consumption devices; you can
read easily on them especially with their now larger screens, or you can watch
movies, and consume other media. They started with terrible support for
producing content: it was difficult to type an email, a document, or even a
short sentence on the smaller touchscreen keyboard. With all the error
correction, they were much slower than using a real keyboard, and not as
convenient.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;NormalJustified&quot;&gt;
&lt;span lang=&quot;EN&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;NormalJustified&quot;&gt;
&lt;span lang=&quot;EN&quot;&gt;Then
technology advanced again, and dictation and speech recognition became better.
Also tablets became smaller, and phone became bigger and more performant, with
large amounts of storage. Sometimes ridiculous storage, as my current smartphone
has 256GB of space, comparable to my top of the line laptops of yesteryear. As
a result, most of my afterhours consumption and production is done on my trusty
smartphone, with dictation taking place of typing. The convenience of holding
the phone with one hand and attending to the kids demands with the other is hard
to describe. Moreover, setting the phone aside to use both hands, and then
picking it up again and unlocking the screen to get back to the task at hand is
almost instantaneous. Now everyone is happy because of mobility and convenience.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;NormalJustified&quot;&gt;
&lt;span lang=&quot;EN&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;NormalJustified&quot;&gt;









&lt;span lang=&quot;EN&quot; style=&quot;font-family: &amp;quot;Calibri&amp;quot;,sans-serif; font-size: 11.0pt; line-height: 107%; mso-ansi-language: EN; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: Arial; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin;&quot;&gt;The vision of a computer
at your fingertips is not new, but is starting to materialize now, and I can’t
wait to see what the future holds with either virtual or augmented reality.
Perhaps one day as Ray Kurzweil predicted in his book “the singularity is
near”, we won’t have to hold phones or tablets, but instead have nanobots inside
our bodies manipulating our neuron connections, and helping augment what we see
and feel without using any external screens. A bit futuristic and farfetched
perhaps, but sure could beat donning a heavy headset over one’s head. The computer
at your fingertips will change to a computer in your neurons, or literally a
computer in your fingertips.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/4475326872007152008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2018/02/a-computer-in-your-hand.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/4475326872007152008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/4475326872007152008'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2018/02/a-computer-in-your-hand.html' title='A computer in your hand'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-8605668282860078107</id><published>2017-09-11T09:30:00.000-07:00</published><updated>2017-09-11T09:30:13.721-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="etymology"/><category scheme="http://www.blogger.com/atom/ns#" term="food"/><category scheme="http://www.blogger.com/atom/ns#" term="language"/><category scheme="http://www.blogger.com/atom/ns#" term="sandwich"/><title type='text'>Po&#39;boy</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;font-family: &amp;quot;Calibri&amp;quot;,sans-serif; font-size: 11pt; line-height: 107%; margin: 0px;&quot;&gt;Lunches at work are usually nothing to write about, however every now
and then, we get an external restaurant that makes a memorable dish. A couple
of weeks ago, that was the Cajun shrimp po’boy. The sandwich was relatively
simple: a toasted baguette, a big of mayonnaise, some shredded lettuce, and
seasoned Cajun shrimp, however the taste was amazing. I had an inkling about
the origin of the name po’boy, but the price of the sandwich betrayed that thinking.
A bit of research on the web revealed a couple of origin stories. The most plausible
and heartwarming was on &lt;a href=&quot;https://en.wikipedia.org/wiki/Po%27_boy&quot;&gt;&lt;span style=&quot;color: #0563c1;&quot;&gt;Wikipedia&lt;/span&gt;&lt;/a&gt;:
that during a 1929 street car workers’ strike, restaurant owners served the
sandwich to their striking colleagues for free, jokingly referring to the
strikers as poor boys, after which the sandwiches took the name, and in the Louisiana
dialect shortened to po’boy. &lt;/span&gt;&lt;b&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;u&gt;&lt;/u&gt;&lt;sub&gt;&lt;/sub&gt;&lt;sup&gt;&lt;/sup&gt;&lt;strike&gt;&lt;/strike&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/8605668282860078107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2017/09/poboy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/8605668282860078107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/8605668282860078107'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2017/09/poboy.html' title='Po&#39;boy'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-105909286022235561</id><published>2017-09-07T11:11:00.002-07:00</published><updated>2017-09-07T11:11:44.898-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="amazon"/><category scheme="http://www.blogger.com/atom/ns#" term="books"/><category scheme="http://www.blogger.com/atom/ns#" term="stores"/><title type='text'>Amazon Bookstores</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;

&lt;br /&gt;
&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;In an era where
most retailers are trying to decrease their physical presence, Amazon is doing
the opposite &lt;span style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;by opening physical
bookstores across the US. I visited one last weekend, and was very impressed with
the genius of using the store to promote Amazon services and devices.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;First, unlike
most bookstores that carry books on nearly every subject in the Dewey decimal
system, the Amazon store carries a much smaller collection of books that are bestselling
amongst customers in the geographical area. There were best sellers in fiction,
art, cooking, business, self-improvement, health, children’s books, popular science,
and that’s it. The pricing model was genius: if you have a prime membership you
get the Amazon discounted price, and if you don’t you pay the book’s list price.
My guess is that this will drive prime memberships as store patrons will opt to
become prime members to nab the books they like at a discount.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;Second, the store
has prominent displays of the Kindle, Fire, and Echo devices, with helpful
staff that answers any questions you have. Having the devices on display, and
allowing customers to hold them and learn how they feel in their hands is very
powerful. I was tempted to get a Kindle device despite my love of the Kindle
App on my phone and tablet, and a Fire HD for the kids in addition to their
iPads. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;Third, despite
the store being much smaller than typical bookstores, it felt warm and
inviting. The store even had some comfortable chairs and couches for people to
sit down, and enjoy a book or two.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;It would be
interesting to see how these bookstores fare when other stores failed. Apple,
Microsoft, and now Amazon are proving that properly designed store can work,
allowing people to touch and feel the products they are thinking of buying
ahead of making a decision.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;u&gt;&lt;/u&gt;&lt;sub&gt;&lt;/sub&gt;&lt;sup&gt;&lt;/sup&gt;&lt;strike&gt;&lt;/strike&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/105909286022235561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2017/09/amazon-bookstores.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/105909286022235561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/105909286022235561'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2017/09/amazon-bookstores.html' title='Amazon Bookstores'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-2925768744387743906</id><published>2017-04-14T10:56:00.000-07:00</published><updated>2017-04-14T10:56:01.251-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="A paper a day keeps the doctor away"/><category scheme="http://www.blogger.com/atom/ns#" term="distributed systems"/><category scheme="http://www.blogger.com/atom/ns#" term="memory"/><title type='text'>A paper a day keeps the dr away: FaRM -- Fast Remote Memory</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;

&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span style=&quot;font-family: calibri;&quot;&gt;&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;Distributed
systems have allowed applications to use more computation power, memory, and
physical storage than is available on a single machine, enabling applications
to tackle more complex problems. The capacity increase however comes at a cost:
accessing remote resources is slower than accessing ones that are local to the
machine. The paper “&lt;/span&gt;&lt;a href=&quot;https://www.usenix.org/system/files/conference/nsdi14/nsdi14-paper-dragojevic.pdf&quot;&gt;&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;color: #0563c1;&quot;&gt;FaRM:Fast Remote Memory&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;” tries to address the cost of accessing
remote memory, and ways to make it faster.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: calibri;&quot;&gt;The authors start
by acknowledging that the major cost of accessing remote memory is the
networking cost between machines through the TCP/IP stack, and that faster
networks could do so much. They cite the case of MemC3—a state of the art
key-value store—which performed 7x worse in a client-server setup than in a
single machine setup, despite request batching. The authors ask the question if
the TCP/IP stack overhead is that high, what if you bypass the complex protocol
stacks, and use RDMA—remote direct memory access—to access memory on another
machine? How would the performance look? The rest of the paper explores that
question, and introduces FaRM: fast remote access memory.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: calibri;&quot;&gt;The authors start
with some background on RDMA. In RDMA, requests are sent between nodes over
queue-pairs, and network failures are exposed as terminated connections. The
requests go directly to the NIC, without involving the kernel, and are serviced
by the remote NIC without the involvement of the CPU. Similar to DMA—direct
memory access—a memory region is registered with the NIC before use, and the
NIC driver pins the memory regions in physical memory, and stores virtual to
physical page mappings in a page table in the NIC. When an RDMA request is
received, the NIC gets the page table for the target, and uses DMA to access
the memory. &lt;span style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;Since NICs have limited
memory for page tables, the tables are stored in system memory, and the NIC
memory acts a cache. RDMA connects to remote machines typically over InfiniBand,
but recently RoCE—RDMA over converged Ethernet—is becoming more attractive, with
flow control, congestion notification, and a much cheaper price--$10/Gbps for
40 Gbps RoCE compared to $60/Gpbs for 10 Gbps Ethernet.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: calibri;&quot;&gt;FaRM uses a
circular buffer to implement a uni-directional channel. The buffer is stored on
the receiver, and there is one buffer for each sender/receiver pair. The sender
uses RDMA to write messages to the buffer tail, and advances the tail pointer
on every send. It also maintains a local copy of the head pointer to prevent
writing messages past the head. The receiver updates the head in the sender’s
copy using RDMA as well, to create space in the circular buffer. The receiver
polls for new items at the head of the buffer, and process them creating space
as needed. The authors indicate that the polling overhead is negligible with 78
machines. They found that at that scale, the RDMA writes and polling
significantly outperform the complex InfiniBand send and receive verbs. The
authors ran a micro-benchmark to compare the performance of FaRM communication
with TCP/IP on a cluster of 20 machines connected by a 40 Gbps RoCE network.
The results show that FaRM’s RDMA based messaging achieves an 9x-11x higher
request rate than TCP/IP for request sizes between 16 and 512 bytes. Another
latency micro-benchmark showed that TCP/IP latency at peak request rate is 145x
higher than that of RDMA based messaging for all request sizes. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: calibri;&quot;&gt;To achieve that
high performance, the authors had to do some optimizations. The first was using
larger pages to reduce the number of entries in the NIC page tables by
implementing a kernel driver for Windows and Linux that allocates large number
of physically contiguous and aligned 2GB memory regions at boot time.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: calibri;&quot;&gt;The authors also optimized
the number of queue-pair data, by reusing a single connection between a thread
and each remote machine, and sharing queue-pairs among many threads in a
machine.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: calibri;&quot;&gt;The authors
introduce the FaRM API, which provides an event based programming model, with
operations that require polling to complete a task taking a continuation
argument—continuation function, and context pointer. The continuation function
is called when the operation is done, and is passed the result of the operation
and the context pointer. FaRM API also &lt;a href=&quot;https://www.blogger.com/null&quot; name=&quot;_GoBack&quot;&gt;&lt;/a&gt;provides
convenience functions to allocate and free objects, and support lock-free
operations.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: calibri;&quot;&gt;The authors use
the APIs to implement a distributed hashtable, and a graph store similar to
Facebook’s Tao, and evaluate the performance of both.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: calibri;&quot;&gt;The experiments
used an isolated cluster with 20 machines, with 40Gbps RoCE NIC. The machines
ran Windows Server 2012RC, on 2.4GHz Xeon CPUs with 8 cores and two
hyper-threads per core, and a total of 128GB of DRAM, and 240GB SSDs.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: calibri;&quot;&gt;For the key-value
store experiments, the authors used 120 million key-value pairs per machine,
and configured the hash stores for 90% occupancy, and measured the performance
for 1 min after a 20 second warm-up. The results show that FaRM achieves 146
million lookups per second with a latency of 35 microseconds. The throughput is
an order of magnitude higher than MemC3, and the latency two orders of
magnitude lower.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: calibri;&quot;&gt;For the graph
store, the authors implemented a store similar to Tao, and used Facebook’s
LinkBench with its default parameters for degree and data size distributions,
with a resulting graph with 1 billion nodes and 4.35 billion edges. On the 20
machine clusters, the authors got 126 million operations per second, with a per
machine throughput of 6.3 million operations per second that is 10x that
reported for Tao. The average latency at peak was 41 microseconds, which is
40-50x lower than the reported Tao latencies.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: calibri;&quot;&gt;The authors end
by describing some of the systems and libraries that use RDMA to improve
performance.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/2925768744387743906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2017/04/a-paper-day-keeps-dr-away-farm-fast.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/2925768744387743906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/2925768744387743906'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2017/04/a-paper-day-keeps-dr-away-farm-fast.html' title='A paper a day keeps the dr away: FaRM -- Fast Remote Memory'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-2503613124429364522</id><published>2017-03-24T09:00:00.000-07:00</published><updated>2017-03-24T09:00:01.897-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="hyper-v"/><category scheme="http://www.blogger.com/atom/ns#" term="hypervisor"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>Virtual machine could not be started because the hypervisor is not running</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;

&lt;br /&gt;
&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: calibri;&quot;&gt;I wanted to experiment
with TensorFlow, and decided to do that in a Linux VM, despite the fact that Windows
Subsystem for Linux exists. In the past I used Sun’s, and then Oracle’s VirtualBox
to manage virtual machines, but since my Windows install had Hyper-V, I decided
to use that instead. The virtual machine configuration was easy, with disk, networking,
and memory configurations non-eventful. However when I tried to start the virtual
machine to setup Ubuntu from an ISO, I was greeted with the following error:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: calibri;&quot;&gt;“Virtual machine could
not be started because the hypervisor is not running”&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: calibri;&quot;&gt;A quick Internet search
revealed that a lot of people have faced that problem, and most of the community
board solutions did not make any sense. The hidden gem is this &lt;a href=&quot;https://technet.microsoft.com/en-us/windows-server-docs/compute/hyper-v/best-practices-analyzer/windows-hypervisor-must-be-running&quot;&gt;&lt;span style=&quot;color: #0563c1;&quot;&gt;technet
article&lt;/span&gt;&lt;/a&gt;, which included detailed steps to find if the Windows Hypervisor was
running or not, and the error message if it failed to launch. In my case, the error
was:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: calibri;&quot;&gt;“Hyper-V launch
failed; Either VMX not present or not enabled in BIOS.&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;margin: 0px 0px 11px;&quot;&gt;
&lt;span lang=&quot;EN&quot; style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: calibri;&quot;&gt;The fix here is easy,
and buried in &lt;a href=&quot;https://social.technet.microsoft.com/wiki/contents/articles/3190.hyper-v-how-to-fix-bios-errors-enabling-hyper-v.aspx&quot;&gt;&lt;span style=&quot;color: #0563c1;&quot;&gt;another
technet article&lt;/span&gt;&lt;/a&gt;. Simply reboot the machine entering BIOS setup mode, and disable
VT-d and trusted execution settings. After a quick reboot, the hypervisor is
happily humming along, and the setup of my Ubuntu VM is complete.&lt;/span&gt;&lt;a href=&quot;https://www.blogger.com/null&quot; name=&quot;_GoBack&quot;&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;u&gt;&lt;/u&gt;&lt;sub&gt;&lt;/sub&gt;&lt;sup&gt;&lt;/sup&gt;&lt;strike&gt;&lt;/strike&gt;&lt;span style=&quot;font-family: calibri;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/2503613124429364522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2017/03/virtual-machine-could-not-be-started.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/2503613124429364522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/2503613124429364522'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2017/03/virtual-machine-could-not-be-started.html' title='Virtual machine could not be started because the hypervisor is not running'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-8540894978520233966</id><published>2017-01-30T13:12:00.000-08:00</published><updated>2017-01-30T13:12:05.350-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="food"/><category scheme="http://www.blogger.com/atom/ns#" term="general"/><category scheme="http://www.blogger.com/atom/ns#" term="life"/><category scheme="http://www.blogger.com/atom/ns#" term="tea"/><title type='text'>On brewing tea</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot;&gt;I watched a video
interview with the 10&lt;sup&gt;th&lt;/sup&gt; heir of Twinings Tea Company, that has been
merchandising tea for over 300 years. In the interview, among talking about the
family history, and the story behind their bestselling tea flavor—Earl Grey—he
talked about the best way to brew tea, whether using loose leaves, or a tea
bag. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot;&gt;To extract the
most flavor out of tea, he recommended bringing cold water to a boil, and
removing the kettle off the stove once the water starts boiling. His theory is
that the flavor is extracted through the air in the water, and continuing to
boil the water further, will reduce the amount of air in it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot;&gt;For green teas,
he recommends letting the kettle set for 5 mins, then pouring the hot water
over the tea, and for black teas, he recommends pouring the hot water
immediately over the tea. The heir advised against removing the bag, or repeatedly
dunking it in the water during brewing, because that only changes the color of
the water, and makes the tea bitter without extracting flavor. On the contrary,
he recommends leaving the tea bag still for 3 minutes, and then throwing it
away, enjoying the flavorful tea, adding milk, or lemon, but never sugar, as it
masks the tea flavor.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot;&gt;I followed his
advice verbatim, and while I am not sure if the effect is psychological or real,
I drank the best cup of tea in years. No bitterness, no sweetness, just great
tea flavor.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/8540894978520233966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2017/01/on-brewing-tea.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/8540894978520233966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/8540894978520233966'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2017/01/on-brewing-tea.html' title='On brewing tea'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4319254486096748997.post-5559347607975749893</id><published>2017-01-26T11:51:00.002-08:00</published><updated>2017-01-26T11:51:46.602-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="general"/><category scheme="http://www.blogger.com/atom/ns#" term="life"/><title type='text'>Random acts of kindness</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN&quot;&gt;When I have the
chance, I like to walk to my meetings instead of using the shuttle service
available on campus. When it is not raining, the walk is very refreshing: I get
to clear out my thoughts on the walk, and get in some number of steps for my
daily activity. &amp;nbsp;After one of my meetings
ended, I started to head back to my building, only to see that it started to
down pour. To my luck, there was a shuttle parked upfront. I asked the driver
if she could take me back to my building, and she said she was on her lunch
break. As I said no worries, I’ll just walk back, she insisted that she can
drive me. I hopped in the shuttle, thanking her profusely for taking the time
from her lunch break to drive me back, she insisted it was not a big deal. Such
an act of kindness made my day, and it is a great reminder to continue doing
good things to others, simply for the joy it brings them.&lt;a href=&quot;https://www.blogger.com/null&quot; name=&quot;_GoBack&quot;&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://abe-taha.blogspot.com/feeds/5559347607975749893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://abe-taha.blogspot.com/2017/01/random-acts-of-kindness.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/5559347607975749893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4319254486096748997/posts/default/5559347607975749893'/><link rel='alternate' type='text/html' href='http://abe-taha.blogspot.com/2017/01/random-acts-of-kindness.html' title='Random acts of kindness'/><author><name>Abe Taha</name><uri>http://www.blogger.com/profile/08737211375702392936</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/AVvXsEjexi6TqYCkiBbFRBA85IlKMPwk8suUGoUd86S1mTlpsj8K_nY6d0H9SV23saNhnRdfxfGaALOSSFt8F0vkqP-AiLa166XOskTIenoojvBvJkWwEcuMVwkIA7bZICtcZkCH7AK5Vdm1RGUKpnF9HXTP7A2ICUDZy3clP1xUnYH5XIok3A/s220/5DE8E2EF-95D5-4F3E-B4FD-7915C403161A_1_201_a.jpeg'/></author><thr:total>0</thr:total></entry></feed>