<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Dan Jarvis on Medium]]></title>
        <description><![CDATA[Stories by Dan Jarvis on Medium]]></description>
        <link>https://medium.com/@daj?source=rss-55ee86652f4e------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*qmbVo3Sqg2w38PbzgGOfkg.png</url>
            <title>Stories by Dan Jarvis on Medium</title>
            <link>https://medium.com/@daj?source=rss-55ee86652f4e------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 14 Nov 2026 11:19:56 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@daj/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[“Deprecate”, the most misused word in software engineering]]></title>
            <link>https://daj.medium.com/deprecate-the-most-misused-word-in-software-engineering-ef2d033fa9b0?source=rss-55ee86652f4e------2</link>
            <guid isPermaLink="false">https://medium.com/p/ef2d033fa9b0</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[language]]></category>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[api]]></category>
            <category><![CDATA[android]]></category>
            <dc:creator><![CDATA[Dan Jarvis]]></dc:creator>
            <pubDate>Thu, 18 Apr 2024 17:18:10 GMT</pubDate>
            <atom:updated>2024-04-18T22:37:26.625Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/502/0*VV-VjJxntIWobQXS.jpeg" /></figure><p>In software, deprecate means to <strong>discourage</strong> the use of something. It’s often used in APIs to indicate that a method is likely to be removed in a future version of the API.</p><p>In Java, the <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html">@Deprecated</a> annotation is used to indicate that a method is deprecated:</p><blockquote>Compilers warn when a deprecated program element is used or overridden in non-deprecated code.</blockquote><p>I often see people say “deprecate” when they’ve completely removed a feature from the codebase.</p><p><a href="https://en.wikipedia.org/wiki/Deprecation">Wikipedia’s definition</a>:</p><blockquote>In several fields, especially computing, <strong>deprecation</strong> is the discouragement of use of some terminology, feature, design, or practice, typically because it has been superseded or is no longer considered efficient or safe, without completely removing it or prohibiting its use. Typically, deprecated materials are not completely removed to ensure legacy compatibility or back up practice in case new methods are not functional in an odd scenario.</blockquote><p><a href="https://developer.android.com/about/versions/12/deprecations">Android’s definition</a>:</p><blockquote>Deprecation means that we’ve ended official support for the APIs, but they will continue to remain available to developers.</blockquote><h4>Examples</h4><p>For fun, let’s look at a specific example from Android.</p><p><a href="https://developer.android.com/reference/android/app/ActivityManager.TaskDescription#TaskDescription()">ActivityManager.TaskDescription#TaskDescription()</a> was added in API level 21, was deprecated in API level 28, but is still available to use today in Android API level 34:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/881/1*Y-KpdCXqzEGwCdTpLLTJbw.png" /></figure><p>You can use the <a href="https://developer.android.com/sdk/api_diff/28/changes">Android API Differences Report</a> for API Level 28 to find which APIs were added, changed (including marking as deprecated), or removed:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/934/1*jdSzf-C2YTaSIrR4OIlBrg.png" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ef2d033fa9b0" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Composting at Home — One Year Later]]></title>
            <link>https://daj.medium.com/composting-at-home-one-year-later-c62f75fbc82e?source=rss-55ee86652f4e------2</link>
            <guid isPermaLink="false">https://medium.com/p/c62f75fbc82e</guid>
            <category><![CDATA[sustainability]]></category>
            <category><![CDATA[compost]]></category>
            <category><![CDATA[composting]]></category>
            <dc:creator><![CDATA[Dan Jarvis]]></dc:creator>
            <pubDate>Sun, 31 Jul 2022 21:49:45 GMT</pubDate>
            <atom:updated>2022-08-06T19:15:41.282Z</atom:updated>
            <content:encoded><![CDATA[<h3>Composting at Home — One Year Later</h3><p>A couple of years ago I looked into subscribing to a composting service, but ultimately I couldn’t find enough neighbors who wanted to sign up at the same time (<a href="https://compostcrew.com/">Compost Crew</a> starts at $32 per month for a weekly collection service in Northern Virginia, and the price drops significantly if more people in your neighborhood sign up too).</p><p>After asking my neighbors, a few told me they just compost at home, so I decide to give it a try.</p><p>Home composting is great because it</p><ul><li>hugely reduces our normal trash output, which saves on fuel/emissions for transporting that food waste to the landfill</li><li>reduces greenhouse gases produced by food waste in a landfill (a lack of oxygen when rotting causes anerobic digestion, creating methane and other gases)</li><li>…and creates free compost that we can use in our garden, without the carbon footprint of fetching it!</li></ul><h4>How to do it</h4><p>We keep <a href="https://www.amazon.com/gp/product/B0871CYTYG/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&amp;psc=1">this small green tub</a> in the kitchen, which holds 1.3 gallons, which is around 5 lbs of food scraps.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/1*qlznNNyaG0lzYZzFw67L5w.jpeg" /></figure><p>We go through 2–3 of these tubs a week, which adds up to <strong>over 500 lbs of food waste per year</strong>!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*irrHlsDqz-d3ENH_pRk0Ew.jpeg" /></figure><p>The process is pretty simple: put your “green” food scraps (basically any food except bones) into your compost pile, and just add a layer of “brown” stuff on top (dry leaves is the easiest).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Ycw5jQDj2w2WGejisdO83A.jpeg" /></figure><p>The “greens” provide the Nitrogen, and the “browns” provide the Carbon. There are lots of opinions on the right ratio to use, but I don’t do any measuring, I just use enough browns to completely cover the food scraps — which is important to avoid bad smells and flies.</p><p>To make this easy, I keep leaves in an an old trash can next to my composter.</p><h4>What to compost</h4><p>You can search online for a handy reference guide to print out and keep in your kitchen. Some guides tell you to avoid putting anything that attracts pests in your compost (e.g. diary, meat, oils, or fish), but since I use a composting bin with a lid, I do compost meat and small amounts of other pest-attracting things.</p><h4>Checking in on the composting process</h4><p>As the pile builds up, and the composting process starts, it will heat up. There is an optimal temperature for composting, and you can buy <a href="https://www.amazon.com/gp/product/B002P5RGMI/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&amp;psc=1">a cheap compost thermometer</a> to check how your pile is doing.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wBckIgvP7mfqXIpuzjyTDQ.jpeg" /></figure><p>The pile needs to be moist, but not soggy. If your pile is too dry, its temperature might be too low. You can troubleshoot easily by searching online. I only used my thermometer a couple of times to spot check that things were going okay.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Vowdz0r_FVjoZPaEE4gKRA.jpeg" /></figure><h4>Saving your browns</h4><p>I have two old trash cans that I use to keep my dry leaves in for my “browns”. In the Fall I get vast amounts of leaves, but by the Spring I run out and start using the leaves from our Magnolia, which drop all year.</p><p>For a more efficient compost pile, you can use a string trimmer/weed whacker to shred/mulch your leaves. This also helps you store more material. However, I’ve found it a bit of a hassle to use a string trimmer for this: it’s noisy, messy and time consuming. I plan to do less of this, or maybe resurrect my leaf mulcher.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*d4Ucq3XtzImxWrmlvAvYgg.jpeg" /></figure><h4>Cleaning your in-house compost bin</h4><p>When I first started, each time I emptied the inside compost bin into the pile, I would rinse it and clean it in our kitchen sink. After a while somebody gave me a tip to use newspaper to line it, as this reduces the cleaning effort. The newspaper also acts as a “brown”. :-)</p><p>There’s probably a better origami way to do this, but I found that two pages (or one folded sheet) of a broadsheet newspaper work well.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*G7MrNaOgBLqnbx-4ow4Xjw.jpeg" /></figure><p>If you tear it the right width for the inside bin, you’ll be left with two pieces that fit one side, and two pieces that fit the other side. I overlap the paper on the top edge of the tub so that it can be held in place by the lid.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*GeifpdC06k6KzXruufDZyA.jpeg" /></figure><p>My inside compost bin has this bag holder sleeve that helps hold the newspaper in place.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*yxtPhb1k9k30QXn6m1gD7g.jpeg" /></figure><p>I haven’t tried the compostable bags, as I would want to check that they break down quickly enough in a home composter.</p><h4>Using the compost</h4><p>After ~9 months (Summer -&gt; Spring), my compost was looking and smelling pretty good. The Magnolia leaves are thick and don’t decompose well (I mulching any of the leaves in this first batch), so you can see they are still pretty chunky here. The food stuffs are all gone though. I had stopped adding to this pile a few months before harvesting it. (This photo was after I had emptied about half of the compost, so there was a lot more than this.)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lmv5cyZzUlq6jBtNVCA3QA.jpeg" /></figure><p>To use the compost, I moved the top ~6 inches of material in our raised vegetable bed to the side, then I deposited a few inches of the compost, then I moved the original material back on top. I did about a quarter of the raised bed at a time.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vuSb5y7YF4JTob7vhvfdFQ.jpeg" /></figure><p>My compost pile seemed to have exactly the right amount to refill our raised vegetable bed.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Vaut3p3ffA9WFrnLr2_Lgg.jpeg" /></figure><p>Our tomato plants grow by themselves each year (presumably due to fallen spoiled tomatoes that end up burying seeds), and the way that I added the compost didn’t stop that from happening again.</p><p>The homemade compost seems to have fed our vegetables well!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*okXdD4wFSeGMIO-_zruRYA.jpeg" /></figure><p>We inherited our composting bin when we moved into our house. I’ve been happy with it, and decided to add another one, so I bought the same one.</p><p>When I bought it in Jan 2022, it cost $124, and took about a month to be delivered: <a href="https://triformis.com/products/soil-saver/">https://triformis.com/products/soil-saver/</a> It’s made of nice solid material and has worked well, but my decision to buy it was largely because I wanted the second one to match the first. :-)</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c62f75fbc82e" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Solar Panels After One Year]]></title>
            <link>https://daj.medium.com/solar-panels-after-one-year-8a9d2ee9adec?source=rss-55ee86652f4e------2</link>
            <guid isPermaLink="false">https://medium.com/p/8a9d2ee9adec</guid>
            <category><![CDATA[solar-power]]></category>
            <category><![CDATA[solar-energy]]></category>
            <category><![CDATA[renewable-energy]]></category>
            <dc:creator><![CDATA[Dan Jarvis]]></dc:creator>
            <pubDate>Tue, 05 Jul 2022 02:28:52 GMT</pubDate>
            <atom:updated>2022-07-31T13:34:46.380Z</atom:updated>
            <content:encoded><![CDATA[<h3>Summary</h3><p>The pricing and estimates from <a href="https://www.energysage.com/">EnergySage</a> and <a href="https://novasolar.com/">Nova Solar</a> have been accurate so far, and after 18 months I am still very happy with my solar panels!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PSmOMJizro0BES6FZ3lVGA.jpeg" /><figcaption>My solar panels</figcaption></figure><p>If your roof is expected to last significantly longer that the estimated time for your solar panels to pay themselves off, buy the solar panels!</p><h3>Costs &amp; Business Case</h3><p>In late 2020 I used <a href="https://www.energysage.com/">EnergySage</a> to get multiple quotes and do the research. You have to give it information about your utility usage by looking at your electricity bill — our electricity bill averages $105 per month, for around 800 kWh per month.</p><p>Each vendor quote contained information like the system details:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/913/1*rs9QCqkyoswTtVJyrauDBg.png" /></figure><p>Plus the financial breakdown for buying up front vs having a loan:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/652/1*6W2mTnReVYZf-nK3_DepQw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*v9Bi7OzTz7ljRnB9KLR3vw.png" /></figure><p>As you can see, if you buy the system yourself, it takes <strong>11 years</strong> to recoup your upfront costs and breakeven. Since the panels are under warranty for 25 years, you’re then expecting to get free electricity for the next 14+ years. :-)</p><p>This pricing</p><ul><li>included the 26% federal tax rebate which was running in 2020</li><li>did <strong>not</strong> include the money that you can make by selling SRECs (more info later on — it turned out to be significantly more money than I expected)</li><li>assumes that the cost of electricity will increase by 3% per year (based on historical estimates).</li></ul><h4>SRECs — Free Money</h4><p>SREC marketplaces allow people with solar panels to sell “Solar Renewable Energy Certificates” (<a href="https://www.energysage.com/solar/cost-benefit/srecs-solar-renewable-energy-certificates/">What are SRECs?</a>).</p><p>My ~10MWH capacity system produces about 10 SRECs per year, which earned me more than $550 in 2021 after Virginia opened their SREC marketplace. I use <a href="https://www.srectrade.com/">SRECTrade</a> for selling my SRECs.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/771/1*zcmT2J7K6lTIoO2mP0znrQ.png" /></figure><p>I am assuming that SREC prices will drop in the Virginia marketplace over time (other states have significantly lower prices).</p><h3>How I Chose My Installer</h3><p>In late 2020 I chose Nova Solar over the other two vendors because:</p><ul><li>they had the best overall reviews</li><li>they are a local company near where I live</li><li>they knew about the Fairfax County incentives (like stopping your property tax increasing by the value of the solar panels for five years)</li><li>they give a digital download of all the forms you need to file for rebates etc</li><li>I was impressed that the guy answering the phone for sales enquiries was the co-owner, and obviously really knows his stuff.</li></ul><p>I could have saved around $1200 to go with a vendor who isn’t as well rated (but might still have been fine).</p><h3><strong>How They Work &amp; Limitations</strong></h3><h4><strong>Smart Meters</strong></h4><p>To get solar panels, a two-way smart meter is installed. This allows your system to push excess electricity to the grid, while pulling from the grid whenever you need it. This happens as your production and demand both change on any individual day.</p><p>The bigger trends mean that at different times of the year you may be net positive or net negative. Here’s a typical example that was shared with me (I assume this is specific to Northern Virginia):</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*RHQqw6D0_3KpsnARKRqrFw.png" /></figure><p>The two-way meter allows you to build up a credit with your utility company. (This is completely separate from your ability to sell SRECs — SRECs are just for the energy generation, they aren’t related to how you lend and borrow your energy via your two-way meter.)</p><p>I believe that your two-way meter credit cannot persist longer than 12 months. For that reason, in Virginia, you may want to configure your “Net Metering Period” with your utility company to ensure that you build up any credit near the beginning of your 12 month cycle, and use as much of your energy credit up as possible before it expires.</p><h4><strong>Power Outages</strong></h4><p>I was initially surprised to learn that my solar panels automatically turn off when there is a grid power outage. Apparently that is for safety, as the technicians can’t repair the power lines if everybody is trying to feed electricity to them. I believe the only way to have your solar panels work in an offline way is to have a battery system (though maybe a clever electrician would have other alternatives).</p><h4><strong>Batteries</strong></h4><p>Nova Solar have an excellent article explaining why you probably don’t want to buy a battery for your solar system: <a href="https://www.novasolarinc.com/batteries/do-i-need-batteries-for-my-solar-power-system/">Do I Need Batteries for My Solar Power System?</a></p><p>My personal plan is to eventually buy an electric car and use <em>that </em>as our household battery backup. Since batteries cost $5k–$10k, it seems to make sense to have one battery system for both the car engine and the house. Not all electric cars support reversing their batteries to charge/run external systems (e.g. Teslas do not currently support it), so make sure you check if that is important to you.</p><h3><strong>Smart/Online Features</strong></h3><p>My system has an Enphase Energy inverter, which comes with online charts (both website and mobile apps) showing you how the system is performing.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UkiHWKkwP000hDE5LhUUjw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*IcTAnfU1pqf3nwWzgiD5sw.png" /></figure><p>It also allows you to optionally share a restricted subset of <a href="https://enlighten.enphaseenergy.com/pv/public_systems/VxMu2056720/overview?preview=1">your solar production data publicly</a>.</p><p>Overall, I am very happy with my solar panels!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8a9d2ee9adec" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Bangle.js 2: Open Source Javascript Smart Watch]]></title>
            <link>https://blog.devgenius.io/bangle-js-2-open-source-javascript-smart-watch-d65cd649f8b7?source=rss-55ee86652f4e------2</link>
            <guid isPermaLink="false">https://medium.com/p/d65cd649f8b7</guid>
            <category><![CDATA[microcontrollers]]></category>
            <category><![CDATA[learning-to-code]]></category>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[smart-watch-reviews]]></category>
            <dc:creator><![CDATA[Dan Jarvis]]></dc:creator>
            <pubDate>Fri, 14 Jan 2022 04:06:54 GMT</pubDate>
            <atom:updated>2022-01-14T15:12:36.882Z</atom:updated>
            <content:encoded><![CDATA[<p>I saw the <a href="https://www.kickstarter.com/projects/gfw/banglejs-2-the-open-smart-watch">Bangle.js 2 project on Kickstarter</a> and thought it looked like a great starter project to introduce my kids to programming.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.kickstarter.com%2Fprojects%2Fgfw%2Fbanglejs-2-the-open-smart-watch%2Fwidget%2Fvideo.html&amp;display_name=Kickstarter&amp;url=https%3A%2F%2Fwww.kickstarter.com%2Fprojects%2Fgfw%2Fbanglejs-2-the-open-smart-watch&amp;image=https%3A%2F%2Fksr-ugc.imgix.net%2Fassets%2F034%2F731%2F947%2Fe2ebe7c75f8928b9cc1112d961cbf17d_original.jpg%3Fixlib%3Drb-4.0.2%26crop%3Dfaces%26w%3D560%26h%3D315%26fit%3Dcrop%26v%3D1630590180%26auto%3Dformat%26frame%3D1%26q%3D92%26s%3Dfbc365f2d162c95d17b3c1b04365fe28&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=kickstarter" width="480" height="270" frameborder="0" scrolling="no"><a href="https://medium.com/media/485a80131350e2eb994ecfc73ef2fc80/href">https://medium.com/media/485a80131350e2eb994ecfc73ef2fc80/href</a></iframe><h3>Features</h3><p>It has a 1.3 inch 3-bit color LCD touchscreen, GPS, Bluetooth Low Energy (BLE), heart rate monitor, accelerometer (can be used for step tracking), magnetometer (as a compass), air pressure and temperature sensors, can vibrate as haptic feedback, and is IP67 water-resistant (up to 1 meter for 30 mins).</p><p>I ordered it as a Christmas gift for my kids and was pleased with the unboxing experience. :-)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*mfyPzJ3nCZJxbY1aJ19Jsg.jpeg" /></figure><p>You can install, customize and update the apps on the watch using <a href="https://banglejs.com/apps/">https://banglejs.com/apps/</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HCQ0Wq5j5kPMGMYhpoZZJA.png" /></figure><p>There are lots of utilities (Compass, Spirit Level, OpenStreetMap, Thermometer), and some simple games (a <a href="https://en.wikipedia.org/wiki/Snake_(video_game_genre)#Nokia_phones">Snake</a> clone, Flappy Bird etc).</p><h3>Programming The Watch</h3><p>It’s super easy to get started developing for the watch. You just open <a href="https://www.espruino.com/ide/#">https://www.espruino.com/ide</a>, and from there you can launch an emulator and start pushing code to it.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rREWD7AhTNTTeEKbuH3mlw.png" /></figure><p>You can also easily select to connect to your Bangle.js over Web Bluetooth Low Energy (BLE), and it’ll discover your device automatically.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/1*Mg86wIsdUuFBoCiWf-Mz5g.png" /></figure><p>There are lots of well documented <a href="https://www.espruino.com/Bangle.js2#tutorials">tutorials</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_ui1UJvlzp7PXNpJl1Mlkw.png" /></figure><p>I started out by making simple customization to the watch face to add a “Merry Christmas” clock face to personalize the watch for my kid (there is now also a “Customised Welcome” app that achieves a similar goal). I followed the <a href="https://www.espruino.com/Bangle.js+Clock">Clock Faces Tutorial</a>, and added some extra text.</p><p>There were a couple of gotchas, like using a font that actually contained letters instead of just numbers (the text wouldn’t appear with the first font I used), and getting the positioning right on the 176 x 176 screen, but overall it was pretty easy.</p><p>After giving the watch to my kids, we sat down and I asked them what they would like to change. They asked to:</p><ul><li>Change the background color, so we picked hex colors and tried to use those. Since the screen is 3-bit, we got the best result using very simple colors (more complex colors ended up looking pixelated).</li><li>Change the message to say different things at different times of the day. This forced them to figure out how to order the if conditions correctly. :-)</li><li>Change from 24 hours to 12-hour format (we just did this by hand, we didn’t try to use any libraries as I didn’t know offhand what was available). This was great because this change broke the earlier logic. :-)</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*VhtdOAe4gWcyYlrRK8LTng.jpeg" /></figure><p>Here is the hideous code, with a complete lack of automated testing:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/04ec6b44c6329f7112f73fefe6f5863b/href">https://medium.com/media/04ec6b44c6329f7112f73fefe6f5863b/href</a></iframe><p>Overall the kids seemed to really enjoy personalizing their watch by coding, and they learned lots of introductory programming concepts (like needing semi-colons at the end of lines).</p><h3>Built On Espruino</h3><p>Espruino is a fully open-source Javascript interpreter for microcontrollers that provides a very accessible way to start programming hardware, using only a web browser like Chrome.</p><p><a href="https://www.espruino.com/">Espruino - JavaScript for Microcontrollers</a></p><p>There is a range of <a href="https://www.espruino.com/Reference">compatible hardware</a> that you can order with Espruino pre-installed.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0L-dqxhgmsihR-jBO3KDkg.png" /></figure><p>The microcontrollers include Bluetooth Low Energy (BLE) hardware, which means that they can communicate with other sensors over Bluetooth, without requiring any drivers to be installed.</p><p>Everything is available on GitHub!</p><p><a href="https://github.com/espruino">Espruino JavaScript</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d65cd649f8b7" width="1" height="1" alt=""><hr><p><a href="https://blog.devgenius.io/bangle-js-2-open-source-javascript-smart-watch-d65cd649f8b7">Bangle.js 2: Open Source Javascript Smart Watch</a> was originally published in <a href="https://blog.devgenius.io/">Dev Genius</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How To Avoid Email and Slack Overload]]></title>
            <link>https://daj.medium.com/stop-using-email-and-slack-f7ade6faba65?source=rss-55ee86652f4e------2</link>
            <guid isPermaLink="false">https://medium.com/p/f7ade6faba65</guid>
            <category><![CDATA[communication]]></category>
            <category><![CDATA[efficiency-tips]]></category>
            <category><![CDATA[instant-messaging]]></category>
            <category><![CDATA[task-management]]></category>
            <category><![CDATA[email-productivity]]></category>
            <dc:creator><![CDATA[Dan Jarvis]]></dc:creator>
            <pubDate>Wed, 01 Dec 2021 22:33:21 GMT</pubDate>
            <atom:updated>2021-12-21T23:11:19.128Z</atom:updated>
            <content:encoded><![CDATA[<p>Most of us are familiar with that feeling of messages arriving faster than you can process them.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/670/1*NyfQXEnsFqBoM9IZ6sEXDQ.jpeg" /></figure><p>This article talks about how this problem came about, and shares ideas about two ways to improve the situation:</p><ol><li>Ways to fix your organization workflows to prioritize high value, focused work.</li><li>Personal productivity tips to help avoid inbox hell.</li></ol><h3>The Problem</h3><p>For most people, processing email is a distraction from the core way that they are supposed to deliver value to their company or customers.</p><p><a href="https://web.archive.org/web/20140317005022/http://inboxzero.com/articles">Inbox Zero</a> is a methodology shared as a series of blog posts by Merlin Mann in 2006, which references the classic book <a href="https://amzn.to/3DbH7AL">Getting Things Done</a>.</p><p>As Merlin says:</p><blockquote>Clearly, the problem of email overload is taking a toll on all our time, productivity, and sanity, mainly because most of us lack a cohesive system for processing our messages and converting them into appropriate actions as quickly as possible.</blockquote><p>I know a lot of people who seem to have given up on email. In most large companies, there is no cost to send an email, and no coordination between the senders, which results in a deluge of mostly worthless communication intended to serve the needs of the sender, not the recipient. Unfortunately, with the introduction of instant messenger applications like Slack, we now have another channel that pushes communication requests and information to already overwhelmed recipients. Even worse, requests and information often end up getting duplicated across both email and Slack.</p><p>The excellent book <a href="https://amzn.to/3G8Nsip">World Without Email</a> by Cal Newport talks about how we got into this state.</p><blockquote>When we made communication free, we accidentally triggered a massive increase in our relative workloads.</blockquote><p>Introducing email didn’t just speed up existing written communication, it changed how we work.</p><blockquote>The issue is that we tend to think of email as additive; that the office of 2021 is like the office of 1991 plus faster messaging. But this is wrong. Email isn’t additive; it’s ecological. The office of 2021 is not the office of 1991 plus some extra capabilities; it’s instead a different office altogether — one in which work unfolds as a never-ending, ad hoc, unstructured flow of messages, a workflow I named the hyperactive hive mind. We didn’t used to work this way, but today, now thoroughly entangled in the hive mind’s demands, we find ourselves crushed by shallow busyness and struggling to get important work done, all the while feeling increasingly miserable.</blockquote><p>People have accidentally built workflows around email and instant messenger, instead of carefully designing how work should flow through their business. Cal Newport draws a parallel to how <a href="https://en.wikipedia.org/wiki/Great_Stirrup_Controversy">horse stirrups may have caused medieval feudalism</a>.</p><blockquote>In Lynn White Jr.’s study of the stirrup we find a classic example of a technology introduced for a simple reason (to make riding horses easier) leading to vast and complicated consequences never imagined by its inventors (the rise of medieval feudalism).</blockquote><p>Returning to email, in most cases, there could be huge quality of life and efficiency gains from adopting purpose-built workflows and tools that are more appropriate for getting valuable work done in companies.</p><blockquote>Knowledge work is better understood as the combination of two components: work execution and workflow.</blockquote><p>Software engineers are often familiar with Scrum or Kanban methodologies, which are workflows. The tasks allocated through these processes usually contribute the core of the engineer’s job. Unfortunately, in many companies other tasks (often low value ones) are also imposed on the team members without coming through the same prioritization and tracking processes. This can lead to inefficient task switching, and sometimes overwork and feelings of burnout.</p><blockquote>Knowledge workers with highly trained skills, and the ability to produce high-value output with their brains, spend much of their time wrangling with computer systems, scheduling meetings, filling out forms, fighting with word processors, struggling with PowerPoint, and of course, above all, sending and receiving digital messages from everyone about everything at all times. We think we’ve advanced because we no longer need secretaries or typing pools, but we don’t factor in how much less bottom-line-boosting work we actually accomplish.</blockquote><p>As organization sizes grow, these communication and administrative issues can get exponentially worse.</p><p>You can try to avoid this problem by requiring all tasks to come to the team through some kind of gatekeeper, who will help with the prioritization, and bring the tasks to the team at the right time (apparently <a href="https://www.agilealliance.org/glossary/xp/#q=~(infinite~false~filters~(postType~(~&#39;post~&#39;aa_book~&#39;aa_event_session~&#39;aa_experience_report~&#39;aa_glossary~&#39;aa_research_paper~&#39;aa_video)~tags~(~&#39;xp))~searchTerm~&#39;~sort~false~sortDirection~&#39;asc~page~1)">Extreme Programming (XP)</a> usually works this way as engineers are pair programming, so they can’t check email during the day).</p><p>Let’s talk more about some of the fixes: first for your organization, and then for you individually.</p><h3>Fix Your Organization</h3><p>We need to give our specialists dedicated time to focus on their core, value-producing work.</p><blockquote>In the knowledge sector, working on fewer things, but doing each thing with more quality and accountability, can be the foundation for significantly more productivity.</blockquote><p>We need to move to “pull” instead of “push” models for communication. We need systems and workflows where people can focus on one thing, for as long as they want to, without being constantly forced to context switch between unrelated tasks — especially not lower value ones!</p><p>Shutting down “push” based communication should also improve our quality of life.</p><blockquote>When you’re at home at night, or relaxing over the weekend, or on vacation, you shouldn’t feel like each moment away from work is a moment in which you’re accumulating deeper communication debt.</blockquote><p>Let’s talk about some ways to achieve this.</p><h4>Design workflows</h4><p>Think how work flows through your organization, and build formal processes for as much as possible.</p><blockquote>Designing rules that optimize when and how coordination occurs in the workplace is a pain in the short term but can result in significantly more productive operation in the long term.</blockquote><p>Here are some smells that might indicate you have a problem:</p><ul><li>Direct emails and instant messages being send to individually named people. These are not publicly searchable, and rely on you knowing the roles of everybody involved in a project. Default to being transparent, and use centralized project of team communication spaces wherever possible. If you really need to use email like this, create shared mailboxes with aliases that show exactly what they are for.</li><li>Individual people doing a lot of customer support in an untracked way. If providing support is important, allocate time and rotate that responsibility throughout the team. Use that allocated time to build better documentation and self-service materials.</li><li>Tasks are assigned without using a ticketing system. This untracked work is often invisible and can be a significant cause of burnout to people who feel like they are being pulled in multiple directions.</li><li>Does your organization know all its specific responsibilities (OKRs, product deliverables, monitoring, recurring meetings, supporting customers/partners/stakeholders, etc)? Have you documented which people or roles are responsible/accountable (<a href="https://en.wikipedia.org/wiki/Responsibility_assignment_matrix#Key_responsibility_roles_in_RACI_model">RACI</a>) for each of those things? My mobile organization has a simple spreadsheet which lists all the things that we do, and allocates a primary owner to each (including all recurring meetings).</li><li>Do you have a lot of recurring meetings? What are they for? Status updates and reviewing lists of tasks can happen offline. If you’re trying to achieve something specific, try making it a task in your workflow!</li></ul><p>To fix these problems you can embrace some Kanban principles (<a href="https://amzn.to/3detN3S">Kanban In Action</a> is a good guide for beginners).</p><ol><li>List all steps in the process for delivering work (these are the columns on your kanban board).</li><li>Make all work in progress visible (the task cards on your board).</li><li>Establish limits to work in progress (max number of cards in each column).</li></ol><p>By doing this, you will force yourself to address the bottlenecks in your organization, and can create workflows to help reduce the bottlenecks, and/or make the business case to increase staffing or investments in the bottleneck.</p><h4>Use project spaces</h4><blockquote>Crucial to this optimization is to minimize the back-and-forth communication associated with your processes.</blockquote><p>Project management software like <a href="https://asana.com/">Asana</a>, <a href="https://basecamp.com/">Basecamp</a>, <a href="https://www.atlassian.com/software/jira">Jira</a> and <a href="https://trello.com/">Trello</a> can help collect all information for a specific project in one place. The most current information floats to the top, and the group can crowdsource updating stale information. This way the group is always pushing forward the project, without needing to wade through hundreds of email messages that may have already been actioned and not need to be read.</p><p>For this to work well, you may need to avoid redirecting the team to your instant messaging tool for project conversations, as (depending on your organization norms) it could be distracting to see lots of unread 1:1 direct messages.</p><h4>Use a focused, recurring meeting with a clear agenda</h4><p>I find that recurring meetings are generally overused, but they can be very efficient at reducing ad hoc communication if they are run properly. Two recurring meetings that have worked well for me are: 1:1s, Android Developer Meetings (discussing Android platform topics and improvements for Android developers across multiple sprint teams). For these to be successful you need:</p><ul><li>A clear owner: they need to solicit for and curate the agenda topics, facilitate the meeting (timebox things, drive to consensus, etc), and make sure that any decisions are appropriately captured.</li><li>A shared, public agenda that all participants can edit. This must be updated at least a couple of hours before the meeting so that people know it will be worthwhile attending.</li></ul><h4>Some things are best done in person</h4><p>It’s important to recognize that in person (or on video) communication is much higher bandwidth than email or other text-based communication. There is lots of evidence showing how inefficient and open to misinterpretation they are.</p><blockquote>Pentland later presented written versions of the plans to a new group and asked each group member to decide on their own which was best. Their decisions were significantly different from those reached by the group that heard the pitches in person. “The executives [in the group setting] thought they were evaluating the plans based on rational measures,” Pentland explains, “[but] another part of their brain was registering other crucial information, such as: How much does this person believe in this idea? How confident are they when speaking? How determined are they to make it work?” The executives who simply read the plans didn’t realize how much they were missing. Both groups reviewed the same pitches, but they were working with vastly different information.</blockquote><p>Similar to the <a href="https://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect">Dunning Kruger Effect</a>, the worst part is that we all routinely overestimate how clear our own text based communication is.</p><blockquote>They were confident that they were correctly detecting sarcasm or identifying humor, even when they weren’t doing well at all.</blockquote><p>Use in person or video meetings when you want to build good relationships, and/or have difficult or high complexity discussions, or have a long list of things you need to discuss.</p><h3>Fix Your Own Inbox(es)</h3><p>Fixing your organization workflows is obviously the best solution, as it helps everybody at once, but there are lots of things you can do to improve your own situation too.</p><h4>Learn the right mindset</h4><p>This is the single most important step! As usual, Merlin Mann of <a href="https://web.archive.org/web/20140317005022/http://inboxzero.com/articles">Inbox Zero</a> gives us great advice:</p><blockquote>Stop thinking of emails like precious family heirlooms, and start treating ’em like pints of milk. Perishable, time-stamped milk that becomes a little less fresh every day until it smells kind of funny and just needs to be dumped. Believe me, there will always be more coming.</blockquote><p>Your time is precious, and you should treat emails much like you would treat an unsolicited door to door salesperson. You didn’t ask them to come, and in ringing your doorbell their company has already imposed a cost on you without your consent. You shouldn’t be rude, but you also shouldn’t feel any obligation to spend much time on them.</p><blockquote>if you don’t learn to value your time, you will quickly find a volunteer army of slackers who will be more than happy to help waste it for you.</blockquote><blockquote>Like learning to save money or driving a stick, the earlier you start slavishly guarding your time, the easier the habit becomes.</blockquote><blockquote>Accept that your workload exceeds your resources — that you are the first and last filter for what deserves your time</blockquote><p>Merlin has some inspirational words to spur you to action:</p><blockquote>Your email program is not a toy or mama’s loving teat — it’s a powerful tool for communicating with strangers and friends across the world. And if you want to stop being part of the dolorous majority whose ass is getting kicked by email every day, it’s time to get serious about improving your habits. And that starts with changing your attitude.</blockquote><p>Let’s move on to some specific tips…</p><h4>Unsubscribe / unfollow</h4><p>Now that you have the right mindset, the next thing you need to do is to completely remove low value communications from your life. By far the most efficient way to deal with an email is to not receive it at all!</p><p>If the email has an Unsubscribe option, use it! Unfortunately, most companies don’t seem to offer this option on internal communication, so you may be forced to create your own inbox filters to auto archive or delete them.</p><h4>Turn off all notifications</h4><p>Getting into a <a href="https://en.wikipedia.org/wiki/Flow_(psychology)">state of flow</a> usually brings productivity and happiness. It can be hard to create large enough blocks of time to achieve it, so routine email/instant messages must never interrupt your deep work! Turn off everything — message previews, alert sounds, and the little red unread count badge.</p><p>If something is truly urgent, establish a dedicated channel for that, e.g. PagerDuty, your cell phone, or a specific Slack channel that will always notify you. Everything else can and should wait to be processed in batches.</p><h4>Batch email process</h4><p>Process your email and instant messages in batches.</p><blockquote>limit the number of times you check for and then scan new email throughout each day</blockquote><p>Some people might need to set a recurring meeting to block out time to do this regularly. This is a good way to both remind you to do it, and to help limit the amount of time you spend on email. I naturally check my email enough that I remain quite responsive, but I am gradually blocking out more time for higher value “heads down” strategic work.</p><h4>Use email filters</h4><p>Gmail has an excellent <a href="https://support.google.com/mail/answer/6579?hl=en">filters</a> feature that you can use to intelligently keep some emails in your inbox and auto archive/delete the rest.</p><p><em>Noisy senders</em>: task management (e.g. Jira), source code management (e.g. GitHub, GitLab etc) and documentation (e.g. wikis, Confluence) systems seem to send a lot of automated notifications by default. I use filters to only keep those in my inbox where I am explicitly tagged, or are a registered watcher. This involves filtering the messages from a specific sender, and only keeping messages that explicitly mention your name, or your username. For bonus points, you can export your filters and share them with others in your team or organization. :-)</p><p><em>Recurring emails</em>: I have some newsletters that I really enjoy, but I want to read them when <em>I</em> choose (i.e. “pull” not “push”). I don’t want to feel stressed that they are piling up in my inbox, so I set up filters to automatically file them all under a Newsletters label, leaving them unread so that I can dip into them at my leisure.</p><h4>Tips for instant messaging</h4><p>As a heavy user of Slack, these practices work for me (at the moment).</p><p><em>Notifications</em>: there are a lot of <a href="https://slack.com/help/articles/201355156-Configure-your-Slack-notifications">notification preferences</a> you can control, including control by keywords, channels and specific time schedules. I have all notifications turned off, though I do use keywords for some specific workflows (like spotting suitable recruiting candidates in a sourcing channel).</p><p><em>Channels</em>: the number of Slack channels I am in has ballooned, so I use the sidebar grouping to collect them up. Roughly speaking, my groupings are:</p><ol><li>“check multiple times per day”: things I am directly responsible/accountable for (e.g. production support for my applications, the people leaders in my org, the tech leads in my org, some more senior leadership channels).</li><li>“check weekly”: internal customer support channels so I can spot check that we are providing a good service, project-based channels that I want to stay close to, and channels that my organization uses to announce our releases.</li><li>“check occasionally”: I occasionally dip into the channels for all the teams that I am accountable for to get a sense for how things are going. This also includes some product and release train related channels.</li><li>“everything else”: Slack automatically splits these into those with unread messages, and those which are all read. It’s rare that I check these, though I will always respond on threads where I am explicitly tagged.</li></ol><p>As usual, Slack have some great advice on <a href="https://slack.com/resources/using-slack/how-to-organize-your-slack-channels?from=channels">how to best use channels</a>.</p><p><em>Etiquette</em>: I highly recommend reading <a href="https://slack.com/blog/collaboration/etiquette-tips-in-slack">Slack’s etiquette guide</a>, which is excellent. A lot of their advice is about how to avoid generating too many notifications. :-)</p><p>I use Slack extensively with my teams, but I try to set expectations to avoid people needing to check and respond too quickly. When somebody is tagged or sent a direct message, I would typically expect at least an emoji reaction within 24 hours to acknowledge they’ve seen it (it is fine for replies to take much longer for low priority items).</p><h4>Use snooze / scheduled reminders</h4><p>One of the biggest problems with Slack is losing track of requests or follow ups, particularly in group direct messages. Once you’ve read a message it can be hard to find it again (particularly for private direct messages to a list of people).</p><p>I use the “Remind Me” and set a suitable time to ensure I don’t forget to reply. Some people mark the message as unread to do the same thing (I prefer “Remind Me” so that I know when I’ve triaged my messages when there are no unreads left).</p><p>Gmail has a similarly awesome “Snooze” feature that I am trying to use more often. There are lots of situations where an email might require a follow up after a certain time period — those cases are perfect for snoozing the message so that it doesn’t burden your inbox until an action is required again.</p><h4>Move email thread/conversations somewhere better</h4><p>There are very few things that deserve to live in an email thread. It is almost always better to move the conversation somewhere that is searchable by others in your organization.</p><ul><li>Does the information in this conversation relate to a specific project or team? When somebody new joins the team next week, would it be useful for them to see it? The conversation should probably go into a project board, or shared Slack channel.</li><li>Are you making a group decision here? If so, it should probably be tracked in an internal space that others can search for and refer to in future (shared documents folder, internal documentation portal, etc). Try using an <a href="https://blog.pragmaticengineer.com/scaling-engineering-teams-via-writing-things-down-rfcs/">RFC process</a> or similar — many successful tech companies do this well.</li></ul><h4>Be the change that you wish to see in the world</h4><p>Share your communications philosophy with your team, and model the behaviors that will make everybody more efficient.</p><ul><li>Establish norms on how frequently your team should reply to an email/Slack message, and ensure that you respect those, especially if you are in a leadership position. Personally I aim to at least acknowledge every 1:1 or small group communication within 1 business day. I deliberately batch my processing and do it every couple of hours.</li><li>As usual, Merlin Mann has some great, pointed advice:</li></ul><blockquote>Candidly, the easiest trick here may just be to <em>respond less</em>. I’m not saying you should ignore people or blow off clients, but consider the cues that instant, frequent, detailed responses relay to people; one of the best ways to suggest that you want to receive less email is to send less as well.</blockquote><p>Have you found a way to use any of these techniques successfully in a large company? If so, please share your story through a blog post or comment!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f7ade6faba65" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Nvidia GTC — Cyber Security]]></title>
            <link>https://daj.medium.com/nvidia-gtc-cyber-security-4b43adba0296?source=rss-55ee86652f4e------2</link>
            <guid isPermaLink="false">https://medium.com/p/4b43adba0296</guid>
            <category><![CDATA[cyber-security-solutions]]></category>
            <category><![CDATA[malware-analysis]]></category>
            <category><![CDATA[nvidia]]></category>
            <dc:creator><![CDATA[Dan Jarvis]]></dc:creator>
            <pubDate>Mon, 29 Nov 2021 19:57:45 GMT</pubDate>
            <atom:updated>2021-11-29T19:57:45.677Z</atom:updated>
            <content:encoded><![CDATA[<h3>Nvidia GTC — Cyber Security</h3><p>This article contains some of my notes on cyber security related talks and announcements from the free online <a href="https://www.nvidia.com/gtc/">Nvidia AI conference 2021</a>.</p><h3>Prevent Advanced Cyberattacks in Enterprise Environments</h3><p><a href="https://www.opswat.com/">OPSWAT</a> are a company that offer anti-malware scanning, data loss protection, and other security products.</p><p>Data is growing exponentially, and malware is growing linearly.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8u0EMzIcLuQZ1aABRU-zcw.png" /></figure><p>Malware scanning is a requirement of numerous information security standards (I thought this was a cool slide).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_nthpYfZ7gSE55FGEmXxxA.png" /></figure><p>They integrate with lots of other commercial anti-malware products, claiming that they offer different kinds of protection. One example was that some of them focus on different geographical regions, so are faster/better at detecting threats from those regions.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CPEcdZh9AD5uZp56xUVyIQ.png" /></figure><p>They showed a specific example where one threat is still not being found by all scanners, even 5 years after it was first discovered.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VzSe2iH4NbiMcvNEFjrmZQ.png" /></figure><p>They have a Content Disarm and Reconstruction (CDR) service to attempt to neutralize potentially dangerous features in incoming files.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uwTsnv8m1GIn_30Br8SAxQ.png" /></figure><p>To protect against exfiltration of data, they have various DLP features.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3-ugW33z5qs1gDDCbVOR3Q.png" /></figure><h3>The Future of Identity in a Post COVID World</h3><p>The CEO of <a href="https://us.hyperverge.co/">HyperVerge</a> (<a href="https://www.linkedin.com/in/writetokedar/">Kedar Kulkarni</a>) talks about their company journey, and some trends in the space.</p><p>I liked the way that they evidenced their technology, in particular, the mention of the <a href="https://www.nist.gov/programs-projects/face-recognition-vendor-test-frvt-ongoing">NIST Face Recognition Vendor Test</a> leaderboard, where they rank 4th in 1:N investigation and 9th in identification.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ksOY6wtLMxI1S2RA0asfsg.png" /></figure><p>I’ll let the slides speak for themselves.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QMwHNwuyFeIduNd9R98Hbg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*G4EpgWzZYyBWogipHAMckQ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5DAUR8V-7CHSo3y88Ihz-Q.png" /></figure><p>They demoed their identity verification product, which was a combination of government document verification, along with a selfie and face matching step.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/404/1*4ncL0Op--0xifHHNZl0rog.png" /></figure><p>They showed various examples of fraudsters dressing differently to pass identity verification check for various accounts.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*sSXhCGV4ttogpN9JWnFTvg.png" /></figure><p>The advances in machine learning over the last few years have apparently made huge differences to the quality of their face recognition. They can now train on millions of images in a few days, using 8 nodes, each with 8 Nvidia A100 GPUs.</p><h3>Security Hardware — BlueField-3</h3><p><a href="https://www.nvidia.com/en-us/networking/products/data-processing-unit/">Nvidia BlueField-3</a> is specialized hardware to speed up high bandwidth security applications like firewalls. Apparently they are working with big names like F5, Juniper, VMWare (more listed below) to use this hardware in their firewalls.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NNrNCr7V5gAvRJBz9QQTpw.png" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4b43adba0296" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Oculus VR Hello World for Android Developers]]></title>
            <link>https://daj.medium.com/oculus-vr-for-android-developers-a38134c759b0?source=rss-55ee86652f4e------2</link>
            <guid isPermaLink="false">https://medium.com/p/a38134c759b0</guid>
            <category><![CDATA[oculus]]></category>
            <category><![CDATA[vr]]></category>
            <category><![CDATA[android]]></category>
            <category><![CDATA[android-studio]]></category>
            <dc:creator><![CDATA[Dan Jarvis]]></dc:creator>
            <pubDate>Wed, 24 Nov 2021 04:50:21 GMT</pubDate>
            <atom:updated>2022-01-05T01:47:38.811Z</atom:updated>
            <content:encoded><![CDATA[<p>I was super excited when I found out that my Oculus Quest 2 runs Android.</p><p>Once you enable Developer Mode, all the usual Android development tools seem to be available, e.g. we can use adb to see that the Oculus Quest 2 is running Android 10 (<a href="https://source.android.com/setup/start/build-numbers#platform-code-names-versions-api-levels-and-ndk-releases">API level</a> 29).</p><pre>$ adb shell getprop ro.build.version.release<br>10</pre><pre>$ adb shell getprop ro.build.version.sdk<br>29</pre><p>The next thing I did was find a way to run a sample app from Android Studio. This required more work than I was expecting, but I’ve tried to make it simpler for others to do. :-) Read on for how to run the <a href="https://www.khronos.org/OpenXR/">OpenXR</a> hello_xr sample app.</p><h3>Install and Run the Oculus hello_xr Sample App</h3><h4>Get your Oculus ready</h4><ul><li><a href="https://developer.oculus.com/documentation/native/android/mobile-device-setup/">Enable Developer Mode on your Oculus</a>.</li><li>Connect your Oculus to your laptop (depending on your laptop you might need a USB 2.0 to USB C cable). Put the headset on and select “Allow” to trust the connected device.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*KhWK36qXOBbHAkd9BANisg.png" /></figure><h4>Installing the Oculus sample app APK</h4><p>If you don’t want to build the app, you can follow the instructions in this section. If you do want to build it, skip ahead to the next section.</p><ul><li>You can download the APK I built from here and install it directly:</li></ul><p><a href="https://github.com/daj/OculusHelloXR/releases/tag/v1.0.0">Release hello_xr sample app for Oculus · daj/OculusHelloXR</a></p><ul><li>Install the APK using adb install, or <a href="https://sidequestvr.com/">SideQuest</a>. Skip ahead below to the Run section if you don’t want to build the sample app.</li></ul><h4>Building from Android Studio</h4><p>Here’s how to build the app yourself. I tested these instructions on Android Studio Arctic Fox, on macOS Big Sur.</p><ul><li>Clone <a href="https://github.com/daj/OculusHelloXR">my repo</a> (I have applied all the manual steps that the hello_xr sample project required, so you don’t have to):</li></ul><p>git clone <a href="/service/mailto:git@github.com">git@github.com</a>:daj/OculusHelloXR.git</p><p><a href="https://github.com/daj/OculusHelloXR">GitHub - daj/OculusHelloXR</a></p><ul><li>In Android Studio, choose File -&gt; Open… and select the OculusHelloXR folder for the repo you just cloned.</li><li>Let the Gradle build finish and then click the play button to run the app.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/658/1*cypQLEjmzz66Ri9lPEAjaA.png" /><figcaption>Android Studio “Run app” option</figcaption></figure><ul><li>You might see an “<strong>Error while Launching activity</strong>”. Don’t worry — this is benign, everything will still work! You just need to put on your headset and launch the app from the Oculus Apps menu (see next section).</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bCJb3OcHIv0UA343kxWJkg.png" /><figcaption>Error messages when launching from Android Studio</figcaption></figure><h4>Launching an APK from an unknown source</h4><ul><li>Select the “Unknown Sources” at the top right in your Apps menu, and select the “Hello XR” app to launch it.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fazm0rk3pnYnjEiQEMWIVA.png" /><figcaption>Unknown Sources in the Oculus Apps menu</figcaption></figure><ul><li>Now you’ll be able to look at some cubes in the sample app. Your controllers will each directly manipulate one of them. Enjoy!</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*S_2pFkTVgLWqLQEPuKOIcg.png" /><figcaption>Android Studio screenshot of the hello_xr sample app</figcaption></figure><h3>Troubleshooting</h3><h4>Error while Launching activity</h4><p>Every time you try to launch the app from Android Studio it shows the same error that I mentioned above:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bCJb3OcHIv0UA343kxWJkg.png" /><figcaption>Error messages when launching from Android Studio</figcaption></figure><p>In addition to the launching error</p><blockquote>Error type 3<br>Error: Activity class {com.khronos.hello_xr/com.example.oculushelloxr.MainActivity} does not exist.</blockquote><blockquote>Error while Launching activity</blockquote><p>…you might also notice this message:</p><blockquote>App restart successful without requiring a re-install.</blockquote><p>Maybe this is because Android Studio thinks that it can hot swap the changes, but it appeared to me that any of my changes to the C files were not being applied. I seemed to be more successful installing manually the APK from the command line:</p><pre>$ adb install -r -t app/build/outputs/apk/debug/app-debug.apk<br>Performing Streamed Install<br>Success</pre><h4>App shows loading dots forever</h4><p>I was originally following <a href="https://gayanediriweera.github.io/code/2021/04/06/how-to-run-helloxr-on-oculus-quest.html">the instructions in this blog post</a> to get the sample app running. One of the steps was to run</p><pre>adb shell setprop debug.xr.graphicsPlugin OpenGLES</pre><p>before launching the app on the Oculus. When I missed this step (e.g. after restarting the Oculus), I would get stuck forever on the three loading dots.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/929/1*RLo662zpyc8A5dV2iRKhRw.png" /></figure><p>Based on reading the code, it didn’t seem like this setprop step should be necessary, so I modified my fork of the sample project to not require it. I also raised <a href="https://github.com/KhronosGroup/OpenXR-SDK-Source/issues/281">issue #281</a> on the OpenXR-SDK-Source project, and a maintainer confirmed that manual config step could be safely removed with a suitable build/code change.</p><p><a href="https://github.com/KhronosGroup/OpenXR-SDK-Source/issues/281">Why is setprop `debug.xr.graphicsPlugin` required on Android? · Issue #281 · KhronosGroup/OpenXR-SDK-Source</a></p><h3>Behind The Scenes</h3><p>In the beginning I was hoping to find a really simple hello world Oculus app, and unfortunately this turned out to be much harder than I expected! Here’s some more information about how I created my copy of the sample project.</p><p>I was originally following <a href="https://gayanediriweera.github.io/code/2021/04/06/how-to-run-helloxr-on-oculus-quest.html">the instructions in this blog post</a>, but using the newest versions of all the linked dependencies/repos. After hitting problems, I asked for <a href="https://stackoverflow.com/q/69998819/112705">help on Stackoverflow</a>, before eventually checking out older Git releases/tags of the dependencies to get it working. Following all the manual instructions was a pain, so I created an Android Studio project and applied each instruction as <a href="https://github.com/daj/OculusHelloXR/commits/main">a separate commit in my repo</a>, and I also modified the sample to avoid needing a manual adb shell setprop step.</p><p>The hello_xr sample is written almost entirely in C++, using the <a href="https://www.khronos.org/OpenXR/">OpenXR</a> cross platform library (XR is an abbreviation that includes both AR and VR).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fUS81JZrzQASdBvgTCM06w.png" /></figure><p>The Android app is really just a container that launches the hello_xr native library:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*GoQ2u3fnEf49DlCggc6fvg.png" /></figure><h4>Futures</h4><p>It would be nice to investigate why Android Studio is failing to reinstall or launch the app on the Oculus. That was very confusing and frustrating.</p><p>Now that I’ve got more familiar with the configuration and the steps required, I might try updating to all the latest dependencies to see if I have more luck following the instructions.</p><p>I plan to dig more into the sample code and make some of my own modifications to learn more about the development environment (though I might need to do some OpenXR tutorials first).</p><h4>Random Fact</h4><p>I enjoyed that the Oculus product name is “hollywood”.</p><pre>$ adb shell getprop<br><br>[ro.product.manufacturer]: [Oculus]<br>[ro.product.model]: [Quest 2]<br>[ro.product.name]: [hollywood]<br><br>[ro.build.branch]: [releases-oculus-10.0-v34]<br>[ro.build.characteristics]: [nosdcard]<br>[ro.build.date]: [Fri Oct 29 17:01:08 PDT 2021]<br><br>[ro.build.fingerprint]: [oculus/hollywood/hollywood:10/QQ3A.200805.001/20169900217500000:user/release-keys]<br>[ro.build.flavor]: [hollywood-user]<br>[ro.build.host]: [sandcastle180.ftw5.facebook.com]<br>[ro.build.id]: [QQ3A.200805.001]<br>[ro.build.product]: [hollywood]</pre><p>…which is what it calls itself when you use shell access.</p><pre>$ adb shell<br>hollywood:/ $</pre><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a38134c759b0" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Nvidia GTC — ML/AI/Robotics]]></title>
            <link>https://daj.medium.com/nvidia-gtc-ml-ai-robotics-2350450e438?source=rss-55ee86652f4e------2</link>
            <guid isPermaLink="false">https://medium.com/p/2350450e438</guid>
            <category><![CDATA[intelligent-assistant]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[autonomous-vehicles]]></category>
            <category><![CDATA[robotics]]></category>
            <dc:creator><![CDATA[Dan Jarvis]]></dc:creator>
            <pubDate>Thu, 11 Nov 2021 20:04:25 GMT</pubDate>
            <atom:updated>2021-11-11T20:04:25.457Z</atom:updated>
            <content:encoded><![CDATA[<h3>Nvidia GTC — ML/AI/Robotics</h3><p>I attended the Nvidia AI conference in person back in 2016 and really enjoyed it — in particular trying out numerous VR experiences. This year you can attend for free online.</p><p><a href="https://www.nvidia.com/gtc/">NVIDIA GTC San Jose 2026</a></p><p>I’m sharing highlights from some of the talks that I watched.</p><h3>Keynote</h3><p>The keynote is presented by the Nvidia founder and CEO <a href="https://www.linkedin.com/in/jenhsunhuang/">Jensen Huang</a>. It contained lots of interesting examples of how to use their Nvidia hardware and software to build many real world applications: detecting oil spills, forest fires, navigating ice flows, and detection fall risks in hospitals.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PmWFwQbXMC46YF8Ig36pyw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WrbuTad3ChdWDVEAFK5zew.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_J3bQzlsLELwLLSQzpkpEg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7iF2FcrGiK2b37UacGVTXQ.png" /></figure><p>They did a great job showing their vision in interesting ways. Jensen gave the presentation from a virtual world built with Nvidia’s Omniverse tools. Not only did his virtual background dynamically rebuild itself as a segue between topics, but in <a href="https://www.youtube.com/watch?v=1qhqZ9ECm70">The Making of the GTC Keynote</a> video they shared that every keynote slide was built in Omniverse — it looked like some were 3D models, projected into 2D slides.</p><h3>Intelligent Assistants</h3><p>In the keynote they demoed “Toy Me”, which is a digital avatar of Jensen that showcased their intelligent assistant, coupled with a photorealistic avatar that responds real time, with face animation to accompany the audio. The speech still sounded a bit wooden, and there were slight pauses before a response begun, but overall the effect was impressive.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XxEPfLQuUFbgTiIBZ6ExuQ.png" /></figure><p>They also showed a <a href="https://youtu.be/jhDiaUL_RaM?t=4913">video demo</a> of “Tokkio”, an intelligent assistant talking kiosk for a restaurant.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vQrSokWaMAtxoel83PwxUA.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bjGyPtfVt2a5UFYULeiNhQ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QijnByDZNpkg_uWH5BSR0Q.png" /></figure><p>This is my first time seeing an intelligent assistant being used this way, and it seems very likely that we’ll see widespread commercial adoption of these within the next 10 years.</p><h3>Physics ML</h3><p>Apparently physics-enabled machine learning (ML) is going to unlock some huge capabilities in the near future. Climate modeling was covered a few times as an example.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6iMtCH-aslkTcYrANJm2UA.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8iyKu8GlVN6grnrGu9SPHw.png" /></figure><p>Climate simulation is much harder than weather simulation. Weather simulation models atmospheric physics, and its predictions can be checked regularly — climate change predictions spans decades, which makes that model training feedback loop more difficult. In addition, the scale of climate simulations are currently beyond our reach.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jigDlIGVwmXgG8dFDbrlUw.png" /></figure><p>In another physics ML example, they showed a cool video animation simulating a chemical reaction.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XIHw4T2XcrrNo9UytrjW9g.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wuKlnjuBL_wgIDUh0i_lGw.jpeg" /></figure><p>These capabilities should apparently help speed up discovery of new drugs.</p><h3>Robotics</h3><p>There was an interesting comparison between robotics and edge computing. They have very similar functions: they both typically require sensors, offline/on-device computation, and can often use the same technology pipelines.</p><p>Medical instruments are increasingly using robotics.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*USCYpVzgM8cfPrA-5RWRpA.png" /></figure><p>Nvidia are launching their <a href="https://www.nvidia.com/en-us/clara/medical-devices/">Clara Holoscan AI Platform</a> for medical devices. This is one of many situations where Nvidia are selling a combination of both hardware and software services on top of them.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NzWbMkov6-4Ms4DQ4U0ddw.png" /></figure><p>Nvidia have an <a href="https://developer.nvidia.com/isaac-sdk">Isaac SDK</a>:</p><blockquote>Build and deploy commercial-grade, AI-powered robots. The NVIDIA Isaac SDK™ is a toolkit that includes building blocks and tools that accelerate robot developments that require the increased perception and navigation features enabled by AI.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*p6s88_0MBAWZJz8tFJjTyQ.png" /></figure><p>As you’d expect, at the base of this platform is the Nvidia hardware. :-)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*GeqPsMpEJjAarZJkpQQAxw.png" /></figure><p>In the talk “Accelerating Robotics with NVIDIA Isaac ROS”, they talked about the history of ROS/ROS2</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*FDW8BtlvaI-LYsnsL4j7iQ.png" /></figure><p>and they explained many of the various features, like image rectification libraries (it wasn’t clear to me if any of these were unique to the Isaac SDK, or whether other open source/ROS code exists for them already).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Wa7kEo04makdyKWNAIDbWg.png" /></figure><p>If you want a cool little robot to experiment with, you can 3D print a <a href="https://nanosaur.ai/">Nanosaur</a>:</p><blockquote>🦕 nanosaur is the smallest NVIDIA Jetson dinosaur robot, fully 3D printable.<br>In 10 x 12 x 6cm and 500g use only a power-bank and works in <a href="https://www.ros.org/">ROS2</a> is simple to build and simple to use.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9KEKaNRexHUa-ju9k5JWZw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-hWCHQb7Do2Y1LOas58gsg.png" /></figure><p>Isaac SDK is intended to be an open platform that you can build on. As you can see from the slide earlier above, Isaac has a simulation layer, which feels similar to what the <a href="https://daj.medium.com/nvidia-gtc-metaverse-omniverse-c4a63d6c4428">Omniverse</a> tooling provides.</p><blockquote>Goal is for the robot not to know it is in the simulation.</blockquote><h3>Autonomous Vehicles</h3><p>Every AI conference needs to mention autonomous vehicles. :-)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bw7jQ6NeW03_A4fw_1fuag.png" /></figure><p>I love seeing videos of self driving cars, especially with their sensor inputs and data visualizations.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7-DbJW2jaUauAK1NaERsjw.png" /></figure><p><a href="https://developer.nvidia.com/drive/drive-hyperion">DRIVE Hyperion</a> is another of Nvidia’s platform plays, combining hardware and software:</p><blockquote>NVIDIA DRIVE Hyperion™ is an end-to-end development platform and reference architecture for designing autonomous vehicles (AV). It includes multiple DRIVE AGX Orin™ Developer Kits, each powered by an Orin SoC delivering up to 254 TOPS, a variety of sensor modalities to enable 360-degree surround view, and extra compute power to offload data recording and replay. The system is verified, calibrated, and synchronized out of the box to support rapid scaling from development to production.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QrpWpH8a14BGM8kDOyh9mA.png" /></figure><p>They also showed how intelligent assistants can be used as either a concierge or chauffeur in the vehicle.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*81qukIwdHYFtbgG8G5pVDg.png" /></figure><p>It’s very interesting to see how intelligent assistants could be used in such a wide variety of products. I went to a Google talk a few years ago which talked about voice becoming the universal user interface, since it works everywhere. We aren’t yet at the point where intelligent assistants can truly hold a conversation, but they do work really well for narrow applications.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2350450e438" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Nvidia GTC — Metaverse/Omniverse]]></title>
            <link>https://daj.medium.com/nvidia-gtc-metaverse-omniverse-c4a63d6c4428?source=rss-55ee86652f4e------2</link>
            <guid isPermaLink="false">https://medium.com/p/c4a63d6c4428</guid>
            <category><![CDATA[omniverse]]></category>
            <category><![CDATA[vr]]></category>
            <category><![CDATA[nvidia]]></category>
            <category><![CDATA[ar]]></category>
            <category><![CDATA[metaverse]]></category>
            <dc:creator><![CDATA[Dan Jarvis]]></dc:creator>
            <pubDate>Thu, 11 Nov 2021 16:41:07 GMT</pubDate>
            <atom:updated>2021-11-11T16:41:07.517Z</atom:updated>
            <content:encoded><![CDATA[<h3>Nvidia GTC — Metaverse/Omniverse</h3><p>This year’s free online <a href="https://www.nvidia.com/gtc/">Nvidia AI conference</a> had some great content on the Metaverse.</p><p>The Metaverse is basically a virtual reality version of the internet, where virtual worlds are all connected together.</p><blockquote>Virtual worlds are the websites of the future.</blockquote><p>These virtual worlds will be much bigger than our existing physical world.</p><p>We will use them to buy and sell virtual things, just like we use the internet to buy books and songs today. People have already been buying virtual <a href="https://www.cnn.com/style/article/digital-nft-mars-house-scli-intl/index.html">houses</a>, virtual <a href="https://www.reuters.com/technology/virtual-real-estate-plot-sells-close-1-mln-2021-06-18/">real estate</a>, and <a href="https://markets.businessinsider.com/news/currencies/beeple-nft-market-sculpture-human-one-69-million-christies-auction-2021-10">digital art</a>. This trend will continue in the Metaverse as people buy virtual products, luxury goods etc.</p><p>Nvidia say there are 40 million 3D designers in the world, and presumably the Metaverse will significant increase demand for their services.</p><p>Virtual worlds will also be used to design, train and monitor things like factories and robots. There are huge benefits to testing a new factory layout, logistics algorithm, or a new robot design before physically building them.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*j5V6u8oaoQ-oxqhIoHGNDQ.png" /><figcaption>Virtual robot on left, physical on right</figcaption></figure><p>Nvidia gave these larger scale examples:</p><ul><li>BMW designs a new factory.</li><li>Ericsson builds a digital city to test where to put their 5G network towers.</li><li>Siemens builds a digital Heat Recovery Steam Generator (HRSG) to predict when maintenance is needed on the boiler pipes.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dbmjnmIT0vW5HcZb6D2QYw.png" /></figure><p>These virtual environments are called <strong>digital twins</strong>.</p><h3>Imagineering the Metaverse</h3><p>Disney Imagineer Bei Yang shared a really interesting perspective on what the Metaverse is. You could say in a very literal way that the Metaverse is “the embodied internet”, or “a bunch of connected virtual environments”, but that doesn’t capture its true potential. He compares it to going back to 2005 just before the iPhone launched and asking somebody what the Internet is.</p><blockquote>This mobile browser that I have in my pocket is going to completely disrupt the taxi industry.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MME5NVnU5WGjSknUp0MXhg.png" /></figure><p>There are thousands of things that have fundamentally changed as personal computing has evolved.</p><ul><li>Internet 1.0: people mostly observed. You turned on your computer, did something, then turned it off again. When the mobile internet came along, those interaction time slices became much shorter — you pull your phone out for 30 seconds, then put it away.</li><li>Internet 2.0: this wave became more about interacting and participating. Social media arrived, and user generated content exploded.</li><li>Metaverse: Bei says that in the Metaverse:</li></ul><blockquote>Your physical life and your digital life are going to be overlaid 100% on top of one other and will meld together</blockquote><p>(This reminds me of the awesome book <a href="https://amzn.to/3CalIay">Daemon</a>, which starts out as a detective thriller and turns into a futuristic vision of an augmented reality world.)</p><p>Bei talked about Disney’s Galactic Starcruiser, which is a multi-day, immersive experience where you live inside the story.</p><p><a href="https://disneyworld.disney.go.com/star-wars-galactic-starcruiser/overview/">Star Wars: Galactic Starcruiser | Walt Disney World Resort</a></p><p>This reminds me of the <a href="https://www.greatwolf.com/williamsburg/waterpark-attractions/attractions/magiquest">MagiQuest</a> experience at Great Wolf Lodge, where you can buy a wand and use it to complete a quest by exploring the hotel and finding various hidden artifacts. The wands appear to use infra red, and they allow you to physically interact with the environment. The kids and I really enjoyed it.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/480/1*DJikQ8bVw2p2PAcWFnW6Xw.gif" /><figcaption>Great Wolf Lodge magic experience</figcaption></figure><h3>Omniverse</h3><p><a href="https://developer.nvidia.com/nvidia-omniverse-platform">Nvidia Omniverse</a> is a developer platform for 3D workflows for building virtual artifacts and environments. It will always be free for individual developers.</p><blockquote>NVIDIA Omniverse™ is a scalable, multi-GPU real-time reference development platform for 3D simulation and design collaboration, and based on Pixar’s Universal Scene Description and NVIDIA RTX™ technology.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PiJv1gy3HAilEt3v1ysemg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-gJqCAGbMGaXO5ZiUA9YqA.png" /></figure><p>Nvidia showed lots of impressive Omniverse demos: coloring/texturing surfaces, augmented reality (AR).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/480/1*SKXcCTc92hKWO_C1W-CLSQ.gif" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_PbNr0UwtfHzVJL1zOKrmg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HidVDxf57GpAfnVSVodFaw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BAChALYT9umPg7vYET7E8A.png" /></figure><p>Nvidia showed variations of this slide a few times, which highlights how people can live and work in their own physical or virtual worlds. These separate worlds and/or artifacts can be blended together in a shared world like the Metaverse.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VqYHA-4FPt1KkmIamBExkg.png" /></figure><p><a href="https://developer.nvidia.com/usd">Universal Scene Descriptor</a> (USD) is the interface definition for exchanging scenes and content between virtual worlds.</p><blockquote>Universal Scene Description (USD) is an easily extensible, open-source 3D scene description and file format developed by Pixar for content creation and interchange among different tools. As a result of its power and versatility, it’s being widely adopted, not only in the visual effects community, but also in architecture, design, robotics, manufacturing, and other disciplines.</blockquote><p>USD is to Omniverse, what HTML is for websites.</p><p>One interesting observation is that many visual effects companies are experts in this kind of technology. Those skills are going to be in very high demand, and this creates new business opportunities for those companies, e.g. by selling “digital twin” construction or modeling services.</p><p>Omniverse offers collection of modules which enables you to build apps.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*OaRZDjqzD8OhcT6DLjeaig.png" /></figure><p>It sounds like Omniverse Community Exchange will be Nvidia’s own marketplace, but it wasn’t clear if that would interoperate with other marketplaces or virtual worlds.</p><p>There is likely a big incentive for a company to corner the marketplace for buying and selling virtual goods.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c4a63d6c4428" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Astronomy For Beginners]]></title>
            <link>https://daj.medium.com/astronomy-for-beginners-9fac71887a22?source=rss-55ee86652f4e------2</link>
            <guid isPermaLink="false">https://medium.com/p/9fac71887a22</guid>
            <category><![CDATA[kids-activities]]></category>
            <category><![CDATA[northern-virginia]]></category>
            <category><![CDATA[stargazing]]></category>
            <category><![CDATA[astronomy]]></category>
            <dc:creator><![CDATA[Dan Jarvis]]></dc:creator>
            <pubDate>Mon, 25 Oct 2021 01:06:47 GMT</pubDate>
            <atom:updated>2021-10-25T01:06:47.844Z</atom:updated>
            <content:encoded><![CDATA[<h3>GMU Observatory Tours</h3><p>A few years ago I attended an <a href="https://sites.google.com/view/georgemasonobservatory/evenings-under-the-stars">Evening Under The Stars</a> event at <a href="https://science.gmu.edu/academics/departments-units/physics-and-astronomy-department/observatory">George Mason University Observatory</a> (Fairfax, in Northern Virginia). It is usually a short astronomy presentation, followed by a tour of the telescope.</p><p>The talk was interesting, and I loved getting the chance to look through their 30 inch telescope!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9wCtXsnhpt-mXiAlDKsYdg.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*S8CsTnB4SHoTXJc55lVWVQ.jpeg" /><figcaption>GMU Observatory telescope</figcaption></figure><p>The views of the moon were incredible! I was able to hold my iPhone 7 up to the eyepiece and grab a couple of photos:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XYzCPPd3GuoCFBwwgdtnmQ.jpeg" /><figcaption>Close up of craters on the moon surface</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hnDo_xr23z5LQEUWQqajLg.jpeg" /></figure><h3>Going Virtual</h3><p>Because of the pandemic, they started conducting these events online, and posting them on Youtube. Here’s one from April (the link here is directly to the observing part):</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fr0BjJ7yKtpo%3Fstart%3D4348%26feature%3Doembed%26start%3D4348&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dr0BjJ7yKtpo&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fr0BjJ7yKtpo%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/61789f23d6115cfd39565ed2794c9518/href">https://medium.com/media/61789f23d6115cfd39565ed2794c9518/href</a></iframe><p>This is a free, and very convenient activity that you can enjoy with your kids. Even my young kids seem to be very interested and it held my 8 year old’s attention for the entire telescope and observing part.</p><p>One benefit of the virtual tours is that you don’t have to wait in line to look through the telescope, everybody can see the photos at the same time. :-)</p><p>In the talk above they showed and explained a photo they took in December 2020 of the <a href="https://en.wikipedia.org/wiki/Great_conjunction">Great Conjunction</a> between Saturn and Jupiter:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5v7InWtV3VslfI2eHpMPnA.png" /></figure><p>They also captured an image of the Eagle Nebula:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HKUmJ_pmZMAha-6zbvpRPA.png" /></figure><p>(This is where NASA’s amazing photo of <a href="https://www.nasa.gov/image-feature/the-pillars-of-creation">The Pillars of Creation</a> comes from.)</p><h3>In Person Tours</h3><p>Tours reopened again recently and I took my kids and some friends along. It was a pretty cloudy night, but we were still able to see Saturn, Jupiter, Vega, and two dual star systems.</p><p>Saturn and Jupiter looked much smaller than they did in the picture above, and they looked only white (no color). Vega and the dual stars were just bright white dots. We weren’t able to look at the moon, both because it was below the horizon, and because it is too close to a full moon, which means the brightness could damage our eyes.</p><p>The kids still really enjoyed the memorable experience.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*305OvUOdestqMxdVu3BVng.jpeg" /></figure><p>They got to see the control room where you can control what the telescope should view. The system automatically finds and track known stars/galaxies etc as it moves through the sky, which makes it much easier than trying to use your own telescope.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UkiENfW-B3NtuTSjNYf2qw.jpeg" /></figure><p>We were also given a mini talk on the research that they are doing helping search for habitable planets outside of our solar system, as part of <a href="https://exoplanets.nasa.gov/">NASA’s Exoplanets</a> project. So far &gt;4500 planets have been found, and according to the whiteboard, 60 of these were in <a href="https://exoplanets.nasa.gov/search-for-life/habitable-zone/">the habitable zone</a> (I’m not sure where this number comes from).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VsD-F8m9fUMA7hBS6jKfSw.jpeg" /></figure><p>Overall, I highly recommend the GMU talks and observatory tours!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9fac71887a22" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>