<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>lazaruk.com</title><link href="/" rel="alternate"></link><link href="/feeds/all.atom.xml" rel="self"></link><id>/</id><updated>2025-05-30T00:00:00-06:00</updated><subtitle>wasting electrons since 1999</subtitle><entry><title>Changing Backgrounds and Wallpapers in KDE Plasma</title><link href="/change-backgrounds-wallpapers-kde-plasma.html" rel="alternate"></link><published>2025-05-30T00:00:00-06:00</published><updated>2025-05-30T00:00:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2025-05-30:/change-backgrounds-wallpapers-kde-plasma.html</id><summary type="html">–</summary><content type="html">&lt;p&gt;Turns out there are a few places to change desktop backgrounds in KDE Plasma.&lt;/p&gt;
&lt;p&gt;There is of course the standard desktop for logged in users. Each monitor has its own wallpaper settings so you need to individually right click each desktop and select Desktop and Wallpaper to choose the background.&lt;/p&gt;
&lt;p&gt;But then there are two places to change the background for wha we old Windows users would think of as the “lock screen”.&lt;/p&gt;
&lt;p&gt;The first is displayed when there is no user logged in at all … so when the system first boots up. This one is configured through System Settings &amp;gt; Appearance &amp;amp; Style &amp;gt; Colors &amp;amp; Themes &amp;gt; Login Screen (SDDM) … then click the picture icon which is sitting on the selection of theme you have in use.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="KDE Plasma SDDM configuration screen showing where to change the background image" src="/images/plasma-sddm-configuration-dialog.png" width="650"/&gt;&lt;figcaption aria-hidden="true"&gt;KDE Plasma SDDM configuration screen showing where to change the background image&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The other is the actual lock screen. This is for when the user has locked the screen on purpose or through timeout. This one is controlled at System Settings &amp;gt; Security &amp;amp; Privacy &amp;gt; Screen Locking … and then click the Configure Appearance button in the top right of that window.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="KDE Plasma screen locking configuration screen" src="/images/plasma-screen-locking-configuration-dialog.png" width="750"/&gt;&lt;figcaption aria-hidden="true"&gt;KDE Plasma screen locking configuration screen&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Who knew, eh? Oh .. &lt;a href="https://discuss.kde.org/t/cant-fully-change-lockscreen-wallpaper/13225/2"&gt;Duha knew and wrote it all down&lt;/a&gt; for me. Thanks!&lt;/p&gt;</content><category term="Linux Workstation Build and Maintenance"></category><category term="KDE Plasma"></category></entry><entry><title>Nobara Stuck In An Update Loop</title><link href="/nobara-stuck-in-update-loop.html" rel="alternate"></link><published>2025-05-22T00:00:00-06:00</published><updated>2025-05-22T00:00:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2025-05-22:/nobara-stuck-in-update-loop.html</id><summary type="html">–</summary><content type="html">&lt;p&gt;Right after I finished installing Nobara I found that it was locked up in a loop, constantly reporting that it needed updates but then not able to install them.&lt;/p&gt;
&lt;p&gt;On the first time I tried to install this distro I gave up because of this. Later I went back and decided to try and solve the problem.&lt;/p&gt;
&lt;p&gt;Turned out to be not too much of a problem. &lt;a href="https://www.reddit.com/r/NobaraProject/comments/1hvh1yp/update_loop_any_solutions_nobara_41/"&gt;Solving the Nobara update loop was as easy as entering this one command.&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo dnf update rpmfusion-nonfree-release rpmfusion-free-release fedora-repos nobara-repos --refresh &amp;amp;&amp;amp; sudo dnf distro-sync --refresh &amp;amp;&amp;amp; sudo dnf update --refresh&lt;/code&gt;&lt;/pre&gt;</content><category term="Linux Workstation Build and Maintenance"></category><category term="nobara"></category><category term="linux updating"></category><category term="Note to Self"></category><category term="needs update"></category></entry><entry><title>Aeroplan, MBNA, and American Express Coablt Points Value</title><link href="/aeroplan-mbna-amex-cobalt-points-value.html" rel="alternate"></link><published>2025-05-01T00:00:00-06:00</published><updated>2025-05-01T00:00:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2025-05-01:/aeroplan-mbna-amex-cobalt-points-value.html</id><summary type="html">–</summary><content type="html">&lt;p&gt;In trying to determine if I should spend some of my credit card rewards points, or convert them to Aeroplan points, I did some quick evaluations on their websites. Came up with the following information:&lt;/p&gt;
&lt;h4 id="aeroplan-points"&gt;Aeroplan Points&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;When redeemed for flights, have a value of about $0.0125 each.&lt;/li&gt;
&lt;li&gt;When redeemed for hotels, have a value of about $0.011 each.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="american-express-cobalt-points"&gt;American Express Cobalt Points&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Can be redeemed for cash at $0.01 each.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="mbna-reward-points"&gt;MBNA Reward Points&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Can be redeemed for cash at $0.0083 each.&lt;/li&gt;
&lt;li&gt;Options for redeeming for gift cards have a slightly better value.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Of course, this doesn’t address other factors such as how fast you can accumulate points based on the same spending. But that’s for a later evaluation.&lt;/p&gt;</content><category term="Note to Self"></category><category term="aeroplan"></category><category term="amex"></category><category term="cobalt"></category><category term="mbna"></category><category term="rewards points"></category></entry><entry><title>Choosing A New Linux Distro</title><link href="/choosing-new-linux-distro.html" rel="alternate"></link><published>2025-04-28T00:00:00-06:00</published><updated>2025-04-28T00:00:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2025-04-28:/choosing-new-linux-distro.html</id><summary type="html">–</summary><content type="html">&lt;p&gt;Well, after spending the better part of a year learning how to love Linux while running on Pop_OS!, I’ve decided that it’s time to look around the distros and see if there is another which suits my needs. This is mainly driven by:&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;I’m using Pop!_OS 24.04 and it works fine, on GNOME.&lt;/li&gt;
&lt;li&gt;But I’m not convinced of the need for their new desktop environment, COSMIC. At least, not for me.&lt;/li&gt;
&lt;li&gt;I am thinking that I want to look at moving to KDE Plasma.&lt;/li&gt;
&lt;li&gt;But my attempts to get KDE Plasma working on my existing system have been a mess. It’s not stable, or functional enough for me to use as a daily driver. There is something I’ve corrupted or it requires Ubuntu 25.x or something … but I’m just not that interested in spending time digging through logs and forums to try and sort out the problems.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So it’s time to reformat the system to find something that uses KDE Plasma so that I can use it for a while and then decide if I prefer GNOME, Plasma, or even COSMIC. Since I have to reformat the system anyway … might as well do some distro shopping.&lt;/p&gt;
&lt;p&gt;My criteria for this is both short and a big ask:&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;The distro has to work, for me, pretty much out of the box. I’m just not interested in playing around with customisations and tweaks and hacks to get things to work and special console commands to properly install basic system components so they work for me and stuff like that. I don’t have the time or patience right now for this.
&lt;ol type="1"&gt;
&lt;li&gt;This includes built-in / works out of the box, or very easy to enable and maintain, support for my NVIDIA discrete GPU. This is the reason I ended up on Pop!_OS in the first place, as it was advertised as one of / the best for out of the box support for NVIDIA.&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;Must support and work out of the box with Wayland. My docking and multimonitor configuration, it turns out, only works with Wayland.&lt;/li&gt;
&lt;li&gt;Has to be able to dock and undock without crashing the OS. This was a big problem for me initially when I moved from Windows to Pop!_OS – turned out to be a problem with the version of the OS being 22.04, and the upgrade to 24.04 fixed it. I’m not going back though. And because of how this problem affected me …&lt;/li&gt;
&lt;li&gt;No LTS version of the underlying distro. The problem I had with the docking was exacerbated because I was using a distro based on Ubuntu 22.04 LTS, which was nearly three years old when I force upgraded it to 24.04. I want to be on a rolling release system now, or one that at minimum updates once per year.&lt;/li&gt;
&lt;li&gt;I need to be able to offload work to the discrete GPU, with a context menu click and not through forcing on the dGPU for all tasks and rebooting, or entering in some console commands to launch the application.&lt;/li&gt;
&lt;li&gt;Has to run KDE Plasma 6 out of the box, so I can evaluate whether or not I like it over what I’m used to in GNOME and COSMIC.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So I’m going to download some ISOs and test things out on my secondary laptop. These are the distros that I have targeted for evaluation (edit: or that I later added to the process):&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;Tumbleweed&lt;/li&gt;
&lt;li&gt;Kubuntu&lt;/li&gt;
&lt;li&gt;Fedora KDE&lt;/li&gt;
&lt;li&gt;Mint (Ubuntu, Cinnamon)&lt;/li&gt;
&lt;li&gt;Mint Debian&lt;/li&gt;
&lt;li&gt;Debian&lt;/li&gt;
&lt;li&gt;Ubuntu&lt;/li&gt;
&lt;li&gt;Fedora KDE Atomic&lt;/li&gt;
&lt;li&gt;Nobara&lt;/li&gt;
&lt;/ol&gt;</content><category term="Linux Workstation Build and Maintenance"></category><category term="Linux"></category><category term="Linux Mint"></category><category term="Debian"></category><category term="pop!_os"></category><category term="Fedora"></category><category term="Nobara"></category><category term="tumbleweed"></category></entry><entry><title>Disabling Google Login Popups</title><link href="/disabling-google-login-popups.html" rel="alternate"></link><published>2025-04-27T00:00:00-06:00</published><updated>2025-04-27T00:00:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2025-04-27:/disabling-google-login-popups.html</id><summary type="html">–</summary><content type="html">&lt;h3 id="blocking-with-ublock-origin-settings"&gt;Blocking with uBlock Origin Settings&lt;/h3&gt;
&lt;p&gt;So far as of this writing, this one is working.&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;In the uBlock Origin settings, on the Filter Lists tab
&lt;ol type="1"&gt;
&lt;li&gt;Scroll down to Annoyances&lt;/li&gt;
&lt;li&gt;Enable “EasyList”&lt;/li&gt;
&lt;li&gt;Hit Apply changes.&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Fingers crossed.&lt;/p&gt;
&lt;h3 id="blocking-with-ublock-origin-filters"&gt;Blocking with uBlock Origin Filters&lt;/h3&gt;
&lt;p&gt;(Although sadly this doesn’t always work)&lt;/p&gt;
&lt;p&gt;&lt;a href="https://support.mozilla.org/en-US/questions/1393427#answer-1554719"&gt;Thanks to this answer&lt;/a&gt; I’ve enabled uBlock Origin to stop these popups.&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;Copy text below into a text document and save to desktop.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;||id.google.com^

||accounts.google.com/gsi/$3p

||smartlock.google.com^

! Block "Sign in with Google" iframe in top right corner of websites
||accounts.google.com/gsi/iframe

||accounts.google.com/gsi/*$xhr,script,3p&lt;/code&gt;&lt;/pre&gt;
&lt;ol start="2" type="1"&gt;
&lt;li&gt;Install and get into the settings for uBlock Origin. Open the My Filters tab.&lt;/li&gt;
&lt;li&gt;Select Import and append (import notepad document) select APPLY CHANGES.&lt;/li&gt;
&lt;/ol&gt;</content><category term="Note to Self"></category><category term="firefox"></category><category term="vivaldi"></category><category term="annoyances"></category></entry><entry><title>Enable Firefox Tab Groups</title><link href="/enable-tab-groups-firefox.html" rel="alternate"></link><published>2025-04-27T00:00:00-06:00</published><updated>2025-04-27T00:00:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2025-04-27:/enable-tab-groups-firefox.html</id><summary type="html">–</summary><content type="html">&lt;p&gt;I know it’s rolling out beginning with Firefox 133.0, but if it’s not been turned on yet and you want to fast track that …&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;about:config&lt;/li&gt;
&lt;li&gt;Search for &lt;code&gt;browser.tabs.groups.enabled&lt;/code&gt; and enable it.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="https://techysnoop.com/enable-disable-tab-groups-in-firefox/"&gt;Thanks Mr. Rohit&lt;/a&gt;&lt;/p&gt;</content><category term="Note to Self"></category><category term="firefox"></category></entry><entry><title>Moving to Linux, Issues and Lessons Learned</title><link href="/building-my-linux-lessons-learned.html" rel="alternate"></link><published>2024-07-05T00:00:00-06:00</published><updated>2025-04-25T00:00:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2024-07-05:/building-my-linux-lessons-learned.html</id><summary type="html"></summary><content type="html">&lt;p&gt;Of course when moving from over 30 years of using Windows to a Linux system, I made a few mistakes and had to look up a few things.&lt;/p&gt;
&lt;h3 id="updates-to-the-dock"&gt;Updates to the dock&lt;/h3&gt;
&lt;p&gt;In playing around with various dock extensions I found that my default dock had a delay of 3-5 seconds between an app being launched or closed and the icon being added or removed from the dock. I figured that since the Pop!_OS dock is a customised version of Dash to Dock, and I had installed that extension, I had probably corrupted something. Research led me &lt;a href="https://www.reddit.com/r/pop_os/comments/oxm96p/reset_cosmic_dock_to_default_settings/"&gt;here&lt;/a&gt;, which may have fixed the problem. I also went back to the &lt;a href="https://extensions.gnome.org/"&gt;gnome extensions site&lt;/a&gt; and disabled the “Ubuntu AppIndicators” extension, even though it says that extension does nothing and it seems to automatically re-enable itself. This action appeared to fix the problem but in hindsight that doesn’t really make sense to me and further testing would be required.&lt;/p&gt;
&lt;h3 id="partial-loss-of-right-mouse-click-context-menus"&gt;Partial loss of right-mouse click context menus&lt;/h3&gt;
&lt;p&gt;After a reboot one day I found that my right-mouse button was not working on the desktop or in the default file manager. It worked in my browser, other file managers, and most other applications. Initially I thought it was something in the gnome-tweaks application, and that resetting to default values had fixed it. But this was not the case. After more investigation I determined that the problem only existed on the non-primary monitor. I could right click fine on the primary monitor, no matter which of the panels was set to be the primary. But the others - no right click. The &lt;a href="https://forum.level1techs.com/t/solved-dual-monitor-issue-with-popos/201083/3"&gt;actual solution to this&lt;/a&gt; was to remove the monitor config files from ~/.config, then log out and in again. Sigh.&lt;/p&gt;
&lt;h3 id="suspend"&gt;Suspend&lt;/h3&gt;
&lt;p&gt;Doesn’t work very well when the graphics are set to nVidia mode. Seems to work fine in integrated and hybrid mode, although then I wouldn’t be able to use the external monitors. (edit: but &lt;a href="/pop!_os-22.04-video-and-power-problems-solved.html"&gt;I fixed this with an OS upgrade&lt;/a&gt;!)&lt;/p&gt;
&lt;h3 id="internxt"&gt;Internxt&lt;/h3&gt;
&lt;p&gt;I purchased a large block of space from Internxt to use for syncing, since my previous file sync solution was not supported on Linux. What a scam. Internxt is a scam. Internxt has been refusing to honour their money-back guarantee for half a year now, despite my first requests to them being well within the 30 day “warranty” window. The service sort of works for use cases that don’t help me, but doesn’t work at all for my use cases. I understand that I should have tested this before I made a financial investment with them, but I did realise the error and request a refund quickly. That they have refused to honour their refund policy is despicable. Buyer beware with Internxt - Internxt is a scam.&lt;/p&gt;
&lt;p&gt;Update: I finally was refunded, but only after I called my credit card company to ask if there was something they could do, given all the times I had asked for a refund and I was not receiving it. One day I noticed that my Internxt space had been reduced to 10MB and after poking around I discovered my credit card company had refunded me the charge that Internxt had billed me. So no notice from them, but after receiving a notice from my credit card company, Internxt finally honoured their refund policy.&lt;/p&gt;
&lt;p&gt;I repeat: Internxt is a scam. Buyer beware.&lt;/p&gt;
&lt;h3 id="watching-the-logs"&gt;Watching the logs&lt;/h3&gt;
&lt;p&gt;journalctl -f&lt;/p&gt;
&lt;h3 id="tracker-miner-fs-3"&gt;tracker-miner-fs-3&lt;/h3&gt;
&lt;p&gt;Had some troubles with this, which became visible with watching the journalctl log. Seemed that the database was corrupt. Some research showed that it was super risky and maybe impossible to remove the service. So I reset it, and the problems went away.&lt;/p&gt;
&lt;p&gt;Get the status &lt;code&gt;tracker3 status&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Reset it &lt;code&gt;tracker3 reset -s -r&lt;/code&gt; and then restart it &lt;code&gt;tracker3 daemon --start&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Note the “3” on the end of the executable.&lt;/p&gt;</content><category term="Linux Workstation Build and Maintenance"></category><category term="Linux"></category><category term="Pop!_OS"></category><category term="Dash to Dock"></category><category term="Internxt"></category></entry><entry><title>My Pop!_OS and GNOME Configuration</title><link href="/my-pop_os-gnome-system-configuration.html" rel="alternate"></link><published>2025-04-23T00:00:00-06:00</published><updated>2025-04-25T00:00:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2025-04-23:/my-pop_os-gnome-system-configuration.html</id><summary type="html"></summary><content type="html">&lt;p&gt;In building out my Linux system I found a number of things that I like to configure or include. And so I figured I should include a list of those so that when/if things go sideways I can rebuild my system fairly completely.&lt;/p&gt;
&lt;p&gt;Despite running Pop!_OS 24.04, which comes with the COSMIC DE, I am still preferring the look of GNOME and the function of some of the extensions that I’ve come to expect. And so I’ve gone out of my way to install that desktop environment. Every time I go back and check on the COSMIC DE it’s getting closer and closer to stable for me so I may one way move to it and stay there … but not today!&lt;/p&gt;
&lt;p&gt;This list below is a bit of a jumbled mess to be sure but it will evolve over time. The important part right now is having a decent backup of my configuration process in case I need to run it. Also, some of this is likely backed up with Timeshift but I still need a record of how I put it together in the first place.&lt;/p&gt;
&lt;h3 id="gnome-extensions"&gt;GNOME Extensions&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://extensions.gnome.org/extension/3628/arcmenu/"&gt;ArcMenu&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For older versions of the extension it was critical, for me, to disable the setting Display ArcMenu on all Panels. If not I ended up with a video lag every 30 seconds. See &lt;a href="https://gitlab.com/arcmenu/ArcMenu/-/issues/314"&gt;this article&lt;/a&gt; for helpers, if not entirely relevant help.&lt;/li&gt;
&lt;li&gt;Also requires the Super key to be disabled so it doesn’t keep loading the Pop_OS applications. Like this:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;cd /usr/share/gnome-shell/extensions/pop-cosmic@system76.com/
sudo gedit extension.js&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Find “overview_toggle(overlay_key_action);”, and comment out that line. Credit: &lt;a href="https://www.reddit.com/r/pop_os/comments/onp6hv/comment/i8fx9q7/"&gt;https://www.reddit.com/r/pop_os/comments/onp6hv/comment/i8fx9q7/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Other Arcmenu settings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;On the General tab: &lt;img alt="arcmenu general tab options" src="/images/arcmenu-general-tab-options.png" width="450"/&gt;&lt;/li&gt;
&lt;li&gt;On the Menu tab
&lt;ul&gt;
&lt;li&gt;Menu Layout: 11&lt;/li&gt;
&lt;li&gt;Menu Theme: Override, set to Simply Dark&lt;/li&gt;
&lt;li&gt;Menu Visual Appearance &lt;img alt="arcmenu menu tab options" src="/images/arcmenu-menu-tab-options.png" width="450"/&gt;&lt;/li&gt;
&lt;li&gt;Grid Menu Items details: &lt;img alt="arcmenu menu tab grid submenu options" src="/images/arcmenu-menu-tab-grid-submenu.png" width="450"/&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;On the Menu Button tab: &lt;img alt="arcmenu menu button tab options" src="/images/arcmenu-menu-button-tab-options.png" width="450"/&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;My &lt;a href="/extra/arcmenu_settings"&gt;Arcmenu configuration file&lt;/a&gt; is also available.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://extensions.gnome.org/extension/1160/dash-to-panel/"&gt;Dash to Panel&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Position tab &lt;img alt="dash to panel position tab options" src="/images/dash-to-panel-position-tab-options.png" width="450"/&gt;&lt;/li&gt;
&lt;li&gt;Style tab &lt;img alt="dash to panel style tab options" src="/images/dash-to-panel-style-tab-options.png" width="450"/&gt;&lt;/li&gt;
&lt;li&gt;Behavior tab &lt;img alt="dash to panel behavior tab options" src="/images/dash-to-panel-behavior-tab-options.png" width="450"/&gt;&lt;/li&gt;
&lt;li&gt;Action tab &lt;img alt="dash to panel action tab options" src="/images/dash-to-panel-action-tab-options.png" width="450"/&gt;&lt;/li&gt;
&lt;li&gt;Fine-Tune tab &lt;img alt="dash to panel fine-tune tab options" src="/images/dash-to-panel-fine-tune-tab-options.png" width="450"/&gt;&lt;/li&gt;
&lt;li&gt;My &lt;a href="/extra/dashtopanel"&gt;Dash to Panel configuration file&lt;/a&gt; is also available.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://extensions.gnome.org/extension/615/appindicator-support/"&gt;AppIndicator and KStatusNotifierItem Support&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://extensions.gnome.org/extension/1401/bluetooth-quick-connect/"&gt;Bluetooth Quick Connect&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://extensions.gnome.org/extension/1319/gsconnect/"&gt;GSConnect&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://extensions.gnome.org/extension/5263/gtk4-desktop-icons-ng-ding/"&gt;Gtk4 Desktop Icons NG (DING)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://extensions.gnome.org/extension/4651/notification-banner-reloaded/"&gt;Notification Banner Reloaded&lt;/a&gt; &lt;img alt="notification banner reloaded gnome extension settings" src="/images/notification-banner-reloaded-gnome-extension-settings.png" width="250"/&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://extensions.gnome.org/extension/5964/quick-settings-audio-devices-hider/"&gt;Quick Settings Audio Devices Hider&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://extensions.gnome.org/extension/6096/smile-complementary-extension/"&gt;Smile - complementary extension&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://extensions.gnome.org/extension/7080/toggle-headphone/"&gt;Toggle Headphone&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="retired-extensions"&gt;Retired Extensions&lt;/h4&gt;
&lt;p&gt;Some extensions that I once used.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://extensions.gnome.org/extension/1301/ubuntu-appindicators/"&gt;Ubuntu AppIndicators&lt;/a&gt; &lt;img alt="Ubuntu AppIndicators Gnome Extension settings" src="/images/ubuntu-appindicators-gnome-extension-settings.png" width="250"/&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://extensions.gnome.org/extension/4655/date-menu-formatter/"&gt;Date Menu Formatter&lt;/a&gt; &lt;img alt="date menu formatter settings" src="/images/date-menu-formatter-gnome-extension-settings.png" width="250"/&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://extensions.gnome.org/extension/2087/desktop-icons-ng-ding/"&gt;Desktop Icons NG (DING)&lt;/a&gt; &lt;img alt="Desktop Icons NG Gnome Extension Settings" src="/images/desktop-icons-ng-gnome-extension-settings.png" width="250"/&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://extensions.gnome.org/extension/3210/compiz-windows-effect/"&gt;Compiz windows effect&lt;/a&gt; &lt;img alt="Compiz windows effect Gnome Extension Settings" src="/images/compiz-windows-effect-gnome-extension-settings.png" width="250"/&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://extensions.gnome.org/extension/5940/quick-settings-audio-panel/"&gt;Quick Settings Audio Panel&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://extensions.gnome.org/extension/906/sound-output-device-chooser/"&gt;Sound input and output device chooser&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://extensions.gnome.org/extension/1460/vitals/"&gt;Vitals&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="wallpapers"&gt;Wallpapers&lt;/h3&gt;
&lt;p&gt;Part of a &lt;a href="https://github.com/fastrizwaan/gnome-40-win11?tab=readme-ov-file"&gt;Windows 11 appearance for Gnome using Dash-to-Panel, Arc-menu, and Date Menu Formatter&lt;/a&gt;. This is also a great resource for ArcMenu, Dash To Panel, and Date Menu Formatter settings to be able to replicate the Windows 11 style on GNOME.&lt;/p&gt;
&lt;p&gt;I also like the &lt;a href="https://microsoft.design/wallpapers/"&gt;wallpapers available from Microsoft here&lt;/a&gt;. Hey, M$ may be making spyware versions of “operating systems” now, but that doesn’t mean we can’t enjoy some fruits of their labours.&lt;/p&gt;
&lt;h3 id="drivers"&gt;Drivers&lt;/h3&gt;
&lt;p&gt;Install other drivers through “Additional Drivers”. 1. POP Software 1. Enable all but Source code. 2. Other Software 1. Make sure POP and other obvious ones that are in use are enabled. Clean out those from retired software. 3. Additional Drivers 1. “NVIDIA driver metapackage from nvidia-driver-xxx (proprietary)”.&lt;/p&gt;
&lt;h3 id="applications"&gt;Applications&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;From the COSMIC Store
&lt;ul&gt;
&lt;li&gt;BOINC Manager&lt;/li&gt;
&lt;li&gt;Bottles&lt;/li&gt;
&lt;li&gt;Caffeine&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apps.gnome.org/DejaDup/"&gt;Déjà Dup Backups&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;I’m also going to need to detail my backup process a bit.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;digiKam&lt;/li&gt;
&lt;li&gt;Discover&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/mjakeman/extension-manager"&gt;Extension Manager&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;You need Extension Manager.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;FileZilla&lt;/li&gt;
&lt;li&gt;Firefox&lt;/li&gt;
&lt;li&gt;Flatseal&lt;/li&gt;
&lt;li&gt;Gear Lever&lt;/li&gt;
&lt;li&gt;GitHub Desktop&lt;/li&gt;
&lt;li&gt;Gitnuro&lt;/li&gt;
&lt;li&gt;GNOME Power Statistics&lt;/li&gt;
&lt;li&gt;GNU Image Manipulation Program&lt;/li&gt;
&lt;li&gt;Heroic Games Launcher
&lt;ul&gt;
&lt;li&gt;Config needed&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Inkscape&lt;/li&gt;
&lt;li&gt;Kdenlive&lt;/li&gt;
&lt;li&gt;Krita&lt;/li&gt;
&lt;li&gt;KSystemLog&lt;/li&gt;
&lt;li&gt;LibreOffice&lt;/li&gt;
&lt;li&gt;Lutris&lt;/li&gt;
&lt;li&gt;Menu Edit&lt;/li&gt;
&lt;li&gt;NetworkManager&lt;/li&gt;
&lt;li&gt;Nvidia System Monitor&lt;/li&gt;
&lt;li&gt;Obsidian &lt;img alt="alt text" src="/images/image-14.png" width="250"/&gt;&lt;/li&gt;
&lt;li&gt;Plasma System Monitor&lt;/li&gt;
&lt;li&gt;Proton&lt;/li&gt;
&lt;li&gt;Psensor&lt;/li&gt;
&lt;li&gt;PyCharm-Professional&lt;/li&gt;
&lt;li&gt;Rhythmbox&lt;/li&gt;
&lt;li&gt;S3Drive&lt;/li&gt;
&lt;li&gt;Smile&lt;/li&gt;
&lt;li&gt;Solaar&lt;/li&gt;
&lt;li&gt;Standard Notes&lt;/li&gt;
&lt;li&gt;Stream
&lt;ul&gt;
&lt;li&gt;Change Vulkan shaders to process in the background&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Tidal&lt;/li&gt;
&lt;li&gt;Timeshift
&lt;ul&gt;
&lt;li&gt;More like Timesaver, or Lifesaver! Document this too.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Tweaks (GNOME)
&lt;ul&gt;
&lt;li&gt;This is the GNOME tweaks app.&lt;/li&gt;
&lt;li&gt;Here you can edit the sounds, cursors, icons, and startup applications.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Tweaks (COSMIC)
&lt;ul&gt;
&lt;li&gt;Best for fiddling with layouts, like setting the Windows layout of the dock and panels.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;VSCodium
&lt;ul&gt;
&lt;li&gt;Sync settings with the &lt;a href="https://open-vsx.org/vscode/item?itemName=Shan.code-settings-sync"&gt;Settings Sync extension&lt;/a&gt;, targeted to your GitHub account.&lt;/li&gt;
&lt;li&gt;To keep the windows from vibrating, ensure “Window: Experimental Control Overlay” is enabled, and “Window: Title Bar Style” is set to custom.
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/VSCodium/vscodium/issues/2120#issuecomment-2543444186"&gt;Credit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Warehouse&lt;/li&gt;
&lt;li&gt;Zotero&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="appimages"&gt;AppImages&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Beeper
&lt;ul&gt;
&lt;li&gt;Add to startup applications manually&lt;/li&gt;
&lt;li&gt;Add the flag &lt;code&gt;--hidden&lt;/code&gt; to the end of the command so it launches as iconified.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Actual&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="from-packages"&gt;From packages&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;filen
&lt;ul&gt;
&lt;li&gt;Default settings
&lt;ul&gt;
&lt;li&gt;For each of the syncs configure as two way sync, enable exclude dot files, and disable local trash,&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Configure the following syncs
&lt;ul&gt;
&lt;li&gt;AppImages&lt;/li&gt;
&lt;li&gt;Desktop&lt;/li&gt;
&lt;li&gt;Documents&lt;/li&gt;
&lt;li&gt;Downloads
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Add to the .fileignore:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;*.iso
*.crdownload
**/*filen_excluded*/&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Music&lt;/li&gt;
&lt;li&gt;Pictures&lt;/li&gt;
&lt;li&gt;Source
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Add to the .fileignore:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/github/
/local/*pelican*/output/&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Videos&lt;/li&gt;
&lt;li&gt;Zotero&lt;/li&gt;
&lt;li&gt;airlock&lt;/li&gt;
&lt;li&gt;FM20
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Source: ~/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/compatdata/1100600/pfx/drive_c/users/steamuser/Documents/Sports Interactive/Football Manager 2020&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add to the .fileignore:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/games/Archive
/games/last save overwrite backup*.fm&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Signal&lt;/li&gt;
&lt;li&gt;Anaconda
&lt;ul&gt;
&lt;li&gt;Be sure to use the included backup and restore function for the environments.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://linux.how2shout.com/create-anaconda-navigator-desktop-shortcut-ubuntu-20-04-18-04/"&gt;For the launcher icon, do this&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Snap Store&lt;/li&gt;
&lt;li&gt;Vivaldi&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="retired-applications"&gt;Retired Applications&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;AppImageLauncher&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/hirschmann/nbfc"&gt;Notebook Fan Control&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="scripts"&gt;Scripts&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.reddit.com/r/System76/comments/zbs9r3/making_battery_life_better_in_pop_os/"&gt;Switch the power profile on POP_OS when the device is unplugged or plugged in&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="dns-configuration"&gt;DNS configuration&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;For some reason the DHCP DNS is not working. Unless and until this is fixed you may need to check on &lt;code&gt;sudo nano /etc/resolv.conf&lt;/code&gt; and make sure the following entries are listed:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;nameserver 8.8.8.8
nameserver 8.8.4.4&lt;/code&gt;&lt;/pre&gt;</content><category term="Linux Workstation Build and Maintenance"></category><category term="Linux"></category><category term="Pop!_OS"></category><category term="Dash to Panel"></category><category term="Arcmenu"></category><category term="gnome"></category><category term="gnome extensions"></category><category term="default system build"></category></entry><entry><title>Pop!_OS 22.04 - Video and Power Problems Solved</title><link href="/pop!_os-22.04-video-and-power-problems-solved.html" rel="alternate"></link><published>2025-04-23T00:00:00-06:00</published><updated>2025-04-23T00:00:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2025-04-23:/pop!_os-22.04-video-and-power-problems-solved.html</id><summary type="html"></summary><content type="html">&lt;p&gt;When I first moved to Linux it was with Pop!_OS 22.04 and the only thing that really brought me grief was that I had a lot of problems with the video and the docking station. It took a while for me to sort out what I could and could not do without crashing the system. I was unable to put the system into standby or let the external monitors be powered off, as that would most likely crash the system. I had to install a screensaver to darken the monitors, and I had to remember to suspend the system before docking or undocking. Even then there was a 20-25% chance that the system would hang on restore. Very annoying.&lt;/p&gt;
&lt;p&gt;And there there was an annoying jitter on the external monitors; almost like the system paused from time to time for a quarter of a second or so.&lt;/p&gt;
&lt;p&gt;Eventually I decided I needed to resolve this, instead of working around it. The pausing of the system before switching the video I could deal with. But the jitter was unacceptable. It was just distracting enough that I couldn’t get anything done when using the external monitors.&lt;/p&gt;
&lt;h3 id="so-i-began-troubleshooting"&gt;So I began troubleshooting&lt;/h3&gt;
&lt;p&gt;Forcing the system to run in high performance mode didn’t solve it. Neither did forcing to run with the discrete GPU on. However, several times I thought I may have solved the problem with one of those choices because the jitter disappeared on the laptop panel. Later I discovered it had re-appeared … and then I realised that it only occurred when I had the system plugged into the docking station and the external monitors enabled.&lt;/p&gt;
&lt;p&gt;I wondered if this was then perhaps related to the discrete video card in the machine, as that would be in play if I were using the docking station through the USB-C port. So I switched the system to use the integrated video only and while I forgot to take any notes on whether or not that solved the jitter problem it did of course limit the usage of my external monitors such that I quickly gave it up. I need both the external monitors at their proper resolution, and the onboard graphics card was just too strained to do that alone.&lt;/p&gt;
&lt;p&gt;I began to suspect from online posts that the root cause may be one of my GNOME extensions. So I re-enabled the system to hybrid video mode, and tried disabling GNOME extensions. I didn’t find any improved performance from this, nor did I stop the jittering in the video on the external monitors. In hindsight, likely I did not test disabling the extension that turned out to be part of the problem.&lt;/p&gt;
&lt;p&gt;I moved on to testing older video drivers. The version I was running were current at the time, 565, and since the OS itself was two years old I figured perhaps they just were not compatible anymore. But after fiddling around with downgrading to several versions, the problem remained.&lt;/p&gt;
&lt;p&gt;After restoring the video drivers to the current version I tried bypassing some of the cables and adapters that I was using with the dock. Since the laptop has Thunderbolt and USB-C video and HDMI ports I tried plugging the monitors directly into those ports. But, the problems remained, no matter which combination I was using and even after rebooting.&lt;/p&gt;
&lt;p&gt;I went back out for some more research and I came across this: &lt;a href="https://github.com/ventureoo/nvidia-tweaks"&gt;https://github.com/ventureoo/nvidia-tweaks&lt;/a&gt;, which is not just a list of tweaks that have been suggested to squeeze the most performance out of NVIDIA GPUs on Linux, but a very well written explainer of those tweaks as well.&lt;/p&gt;
&lt;p&gt;There is also another set of tweaks for NVENC and NvFBC patches which can be found here: &lt;a href="https://github.com/keylase/nvidia-patch?tab=readme-ov-file"&gt;https://github.com/keylase/nvidia-patch?tab=readme-ov-file&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So, content in the knowledge that I had found actual help from well researched sources, I installed all the hacks and patches from both repos, and rebooted the system, expecting all my problems to have been solved.&lt;/p&gt;
&lt;p&gt;Of course, they were not solved. All those hacks made no appreciable difference, and surely did not solve the jittery video problem I was having.&lt;/p&gt;
&lt;p&gt;Note here that I committed a troubleshooting sin and I did not back out the changes that had not solved the problem. That’ll be important later. 8-)&lt;/p&gt;
&lt;p&gt;I went back to the idea of the GNOME extensions being the problem. Rather than disabling and testing them, I started searching for similar problems in forums. Eventually I came across &lt;a href="https://gitlab.com/arcmenu/ArcMenu/-/issues/314"&gt;an issue that was describing pretty much the exact behaviour I was seeing on my system&lt;/a&gt;. It wasn’t that my system was just in general “periodically” or “randomly” pausing for a moment. And it wasn’t just when I was actively using the external monitors. It was happening exactly every 30 seconds, so long as the external monitors were plugged in, regardless of how they were plugged in.&lt;/p&gt;
&lt;p&gt;I tried the hacks in the post that claimed to solve the problem and this finally led me to realise that despite having everything set up to automatically update system software and extensions, I had very outdated versions of some extensions on my system. Still being fairly new to Linux at the time I hadn’t realised some of the dependencies could not be updated because of the version of the OS, and this blocked the updating of the extensions. Pretty basic OS maintenance stuff, but it really slipped my mind after many years of not having to worry too much about this on Windows systems which were always forcibly upgrading regardless of the chaos that may cause. Argh.&lt;/p&gt;
&lt;p&gt;But I also discovered the final, definitive root cause of my problem. In the end the jitter / pause every 30 seconds was caused by the &lt;a href="https://extensions.gnome.org/extension/3628/arcmenu/"&gt;Arcmenu&lt;/a&gt; setting to “Display ArcMenu on all Panels”. With this disabled the pause was gone and the system far more functional when plugged into the docking station. Problem solved.&lt;/p&gt;
&lt;p&gt;But I was unhappy to not have Arcmenu visible on all the monitors when the docking station was in use. Problem created. Being unable to upgrade GNOME and the extensions any further while I was using Pop!_OS 22.04, I decided to take the plunge and force upgrade to 24.04 despite it being still in alpha at the time.&lt;/p&gt;
&lt;p&gt;( Honestly, at this point I was also so bothered by this that I considered just giving up and going back to Windows. Eww. )&lt;/p&gt;
&lt;p&gt;Remember to make sure you’ve got good lists of all your installed software, verified backups, and enough time to completely reinstall your system from scratch if you decide to do something like this. 😁&lt;/p&gt;
&lt;p&gt;But it was good news for me as …&lt;/p&gt;
&lt;h3 id="ultimately-upgrading-to-pop_os-24.04-solved-video-problems."&gt;Ultimately, upgrading to Pop!_OS 24.04 solved video problems.&lt;/h3&gt;
&lt;p&gt;After the upgrade succeeded (whew!) I installed &lt;a href="https://lazaruk.com/my-pop_os-gnome-system-configuration.html"&gt;the GNOME desktop environment and all the extensions that I had come to rely on&lt;/a&gt;. Unplugging the system from the docking station while it was on was now possible where previously that crashed the system most of the time. Even better, with the upgraded extensions I was able to re-enable Arcmenu being visible on all monitors without it causing the system to pause every 30 seconds.&lt;/p&gt;
&lt;p&gt;Excellent.&lt;/p&gt;
&lt;p&gt;But, of course there was one last step. You see, above, I had gone too far. But I hadn’t realised it until after I did the upgrade to Pop!_OS 24.04.&lt;/p&gt;
&lt;p&gt;One day, while I was working on another little project, I went to fire up Anaconda. Previously it had worked just fine on my system. But now I discovered that Anaconda refused to load. I was still able to use conda to get my job done, so the fact that Ananconda wasn’t loading was a bit of an annoyance. I tried reinstalling it, looked around for some hacks, but I found nothing. Since it wasn’t particularly high on my list of priorities I put this one aside as something to fix later.&lt;/p&gt;
&lt;p&gt;Later finally came along when I tried to fire up a GOG game through Heroic Games Launcher, and nothing happened. I fiddled around with a number of the settings on Heroic, and I was unable to get the game to launch. Testing further I found that previously installed and previously working games also were not running. Oh great.&lt;/p&gt;
&lt;p&gt;After tweaking and fiddling a bit I came to the realisation, or the hope I suppose, that likely I had broken something when I performed all the NVIDIA GPU hacks from &lt;a href="https://github.com/keylase/nvidia-patch?tab=readme-ov-file"&gt;https://github.com/keylase/nvidia-patch?tab=readme-ov-file&lt;/a&gt; and &lt;a href="https://github.com/ventureoo/nvidia-tweaks"&gt;https://github.com/ventureoo/nvidia-tweaks&lt;/a&gt;. (see above where I noted I had installed these hacks and then not removed them after they had not helped me. Whoops.) So I backed up the system with timeshift and starting working backwards undoing those hacks and testing Anaconda for launch as verification. Backing off the NVENC patch and NvFBC patch did not solve the problem. However, removing the Wayland + NVIDIA environment variables that were suggested in the NVIDIA-Tweaks repo were the ticket. After I removed those and restored my environment file to the default, and rebooted, both Anaconda and all my Heroic GOG games were launching just fine.&lt;/p&gt;
&lt;p&gt;Pulling the docking cable from the system while it’s on no longer crashes the system. Suspending the system or allowing it to time out and suspend itself is working again. Plugging the hot system into the dock turns on the external monitors without crashing the DE … it all seems so normal and expected, yet it was such a pain to get it working.&lt;/p&gt;
&lt;p&gt;But now that it’s working, I’m never playing with that again. I haven’t yet gone back to test to see which exact hacks I could install without breaking the system and I don’t think I will either. Enough of this. Things work as I expect them to so I’m not playing around anymore. :)&lt;/p&gt;
&lt;h3 id="so-in-the-end"&gt;So in the end …&lt;/h3&gt;
&lt;p&gt;The problem turned out to be that I was running too old a version of the OS. Basically I was trying to get functionality of a Windows 10 version of an app to work on a Windows 7 machine, and not realising that the problem was not the app, it was the OS. In the future I’ll probably be moving to a distro that allows for rolling releases or at least is not locked on an LTS model. But for now, the situation is resolved and I can get back to not playing around with getting basic functionality working. Whew.&lt;/p&gt;</content><category term="Linux Workstation Build and Maintenance"></category><category term="Linux"></category><category term="Pop!_OS"></category><category term="Dash to Dock"></category><category term="Arcmenu"></category><category term="jittery video"></category><category term="lagging video"></category><category term="docking"></category><category term="undocking"></category><category term="de crash"></category><category term="gnome"></category></entry><entry><title>Reset GNOME</title><link href="/reset-gnome.html" rel="alternate"></link><published>2025-04-22T00:00:00-06:00</published><updated>2025-04-22T00:00:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2025-04-22:/reset-gnome.html</id><summary type="html">–</summary><content type="html">&lt;p&gt;In playing around with the system and trying to optimise it I suspected that some of my extensions to GNOME were causing problems. Disabling them all didn’t really outright solve the problems. So I decided that I wanted to reset GNOME as much as possible.&lt;/p&gt;
&lt;p&gt;Tried: &lt;code&gt;dconf reset -f /org/gnome&lt;/code&gt; … but that didn’t seem to do a lot. Also needed to delete &lt;code&gt;~/.config/dconf/user&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://askubuntu.com/questions/56313/how-do-i-reset-gnome-to-the-defaults"&gt;Thanks!&lt;/a&gt;&lt;/p&gt;</content><category term="Linux Workstation Build and Maintenance"></category><category term="GNOME"></category><category term="pop!_os"></category></entry><entry><title>Learning Log - Completed</title><link href="/learning-completed.html" rel="alternate"></link><published>2023-06-27T00:00:00-06:00</published><updated>2025-01-02T14:58:00-07:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2023-06-27:/learning-completed.html</id><summary type="html">Brad Lazaruk’s completed learning</summary><content type="html">&lt;p&gt;&lt;a href="/learning-queue.html"&gt;Queued learning&lt;/a&gt; | &lt;a href="/learning-in-progress.html"&gt;In progress learning&lt;/a&gt; | &lt;a href="/learning-completed.html"&gt;Completed learning&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Entries here are listed by the month they were completed.&lt;/p&gt;
&lt;h2 id="section"&gt;2024&lt;/h2&gt;
&lt;h3 id="may"&gt;May&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course-dashboard-redirect/?course_id=5836130"&gt;Python 101&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.udemy.com/user/michaeldriscoll3/"&gt;Michael Driscoll&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.udemy.com"&gt;udemy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ude.my/UC-97c69a11-42e5-4489-bf9a-41200b7a0038/"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="april"&gt;April&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Bachelor of Science with First Class Honours in Computer Science, specialism in Machine Learning and Artificial Intelligence
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Undergraduate Degree&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.london.ac.uk"&gt;University of London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="march"&gt;March&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Final Project
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Course for credit towards BSc in Computer Science&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.london.ac.uk"&gt;University of London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="section-1"&gt;2023&lt;/h2&gt;
&lt;h3 id="september"&gt;September&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Intelligent Signal Processing
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Course for credit towards BSc in Computer Science&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.london.ac.uk"&gt;University of London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="june"&gt;June&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://successcoaching.co/certification"&gt;Certified Customer Success Manager - Level 1&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Industry certification&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://successcoaching.co/"&gt;SuccessCoaching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.credly.com/badges/06b3aec2-6aed-4668-b668-b1253dc52dff/public_url"&gt;Credly badge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Accountability, Account Management, Account Planning, Active Listening, Business Consulting, Business Metrics, Client Retention, Customer Centricity, Customer Engagement, Customer Experience, Customer Success Management, Dealing With Difficult People (including Conflict Management), Difficult Conversations, Issues And Escalation, Onboarding, Project Management, Quarterly Business Reviews, Relationship Management&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="may-1"&gt;May&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/ai-deep-learning-capstone"&gt;AI Capstone Project with Deep Learning&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/R2HBS4ZXXAVH"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/R2HBS4ZXXAVH"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Deep learning, Artificial Intelligence (AI)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/building-deep-learning-models-with-tensorflow"&gt;Building Deep Learning Models with TensorFlow&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/FRCHZEDSJHZL"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/FRCHZEDSJHZL"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: TensorFlow, Deep learning&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/ai-engineer"&gt;IBM AI Engineering&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/professional-cert/5ZNXFRKMAVX8"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/5ZNXFRKMAVX8"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="april-1"&gt;April&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/introduction-data-science"&gt;Introduction to Data Science&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/specialization/CNP7PVDXAXSZ"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/CNP7PVDXAXSZ"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Data Science, Relational Database Management System (RDBMS), Cloud Databases, Python Programming, SQL&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="march-1"&gt;March&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Natural Language Processing
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Course for credit towards BSc in Computer Science&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.london.ac.uk"&gt;University of London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Artificial Intelligence
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Course for credit towards BSc in Computer Science&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.london.ac.uk"&gt;University of London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="section-2"&gt;2022&lt;/h2&gt;
&lt;h3 id="september-1"&gt;September&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Computer Security
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Course for credit towards BSc in Computer Science&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.london.ac.uk"&gt;University of London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Databases and Advanced Data Techniques
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Course for credit towards BSc in Computer Science&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.london.ac.uk"&gt;University of London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="june-1"&gt;June&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/deep-neural-networks-with-pytorch"&gt;Deep Neural Networks with Pytorch&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/774BVUS3JC9F"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/774BVUS3JC9F"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Pytorch, tensors, Deep Neural Networks, Deep Learning&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="march-2"&gt;March&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Databases, Networks, and the Web
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Course for credit towards BSc in Computer Science&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: University of London&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="february"&gt;February&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/introduction-computer-vision-watson-opencv"&gt;Introduction to Computer Vision and Image Processing&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/F2RRAFWH2F8J"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/F2RRAFWH2F8J"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Deep Learning, Opencv, Artificial Intelligence (AI), Image Processing, Computer Vision&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="january"&gt;January&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/introduction-to-deep-learning-with-keras"&gt;Introduction to Deep Learning &amp;amp; Neural Networks with Keras&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/records/P6VSXB4PWFU2"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/P6VSXB4PWFU2"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Deep Learning, Artificial Neural Network, Artificial Intelligence (AI), Machine Learning, keras&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/machine-learning-duke"&gt;Introduction to Machine Learning&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/duke"&gt;Duke University&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/D4FAZRT2QBSE"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/D4FAZRT2QBSE"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Natural Language Processing, Convolutional Neural Network, Machine Learning, Python Programming, pytorch&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="section-3"&gt;2021&lt;/h2&gt;
&lt;h3 id="december"&gt;December&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/uol-machine-learning-for-all"&gt;Machine Learning for All&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.london.ac.uk"&gt;University of London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/MHELK7SU6CUC"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/MHELK7SU6CUC"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Machine Learning&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="november"&gt;November&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Classical Cryptosystems and Core Concepts
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: University of Colorado System&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Cryptosystems&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="october"&gt;October&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/python-for-active-defense"&gt;Python for Active Defense&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.infosecinstitute.com/"&gt;Infosec&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/7XNHAXGZCN6X"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/7XNHAXGZCN6X"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Python Programming, Active defense&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/command-and-control-exfiltration-and-impact"&gt;Python for Command-and-control, Exfiltration and Impact&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.infosecinstitute.com/"&gt;Infosec&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/ULMTGDXU7HTW"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/ULMTGDXU7HTW"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Python Programming, Command-and-control, Exfiltration&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/credential-access-discovery-lateral-movement--collection"&gt;Credential Access, discovery, lateral movement &amp;amp; collection&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.infosecinstitute.com/"&gt;Infosec&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/S66AP3CWUGFK"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/S66AP3CWUGFK"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Python Programming, Credential access, Lateral Movement&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/execution-persistence-privilege-escalation-and-evasion"&gt;Execution, persistence, privilege escalation and evasion&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.infosecinstitute.com/"&gt;Infosec&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/LAEG9H9R8CL9"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/LAEG9H9R8CL9"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Persistence, Python Programming, privilege escalation and evasion, Cybersecurity, Execution&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/pythonforcybersecurity-introduction"&gt;Introduction to Python for Cybersecurity&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.infosecinstitute.com/"&gt;Infosec&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/records/ZQ3HH2E8L4ZN"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/ZQ3HH2E8L4ZN"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Python Programming&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/pythonforcybersecurity"&gt;Python for Cybersecurity&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.infosecinstitute.com/"&gt;Infosec&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/specialization/T48YD8LN288G"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/T48YD8LN288G"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: pre-att&amp;amp;ck, Python Programming, Cybersecurity, attack and defend, Computer Programming&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="september-2"&gt;September&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Object Oriented Programming
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Course for credit towards BSc in Computer Science&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.london.ac.uk"&gt;University of London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Software Design and Development
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Course for credit towards BSc in Computer Science&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.london.ac.uk"&gt;University of London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Graphics Programming
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Course for credit towards BSc in Computer Science&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.london.ac.uk"&gt;University of London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Algorithms and Data Structures II
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Course for credit towards BSc in Computer Science&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.london.ac.uk"&gt;University of London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="june-2"&gt;June&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/developing-applications-with-sql-databases-and-django"&gt;Developing Applications with SQL, Databases, and Django&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/MD6ZH66X8L34"&gt;Verification link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Relational Database (RDBMS), Object Relational Mapping (ORM), SQL, Django (Web Framework), Back-End Applications&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/applications-development-microservices-serverless-openshift"&gt;Application Development using Microservices and Serverless&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/records/PEDF2V78E93T"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/PEDF2V78E93T"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: serverless, Microservices, Representational State Transfer (REST), Openshift, Cloud Applications&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="may-2"&gt;May&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/python-project-for-ai-application-development"&gt;Python Project for AI &amp;amp; Application Development&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/85TBJMJVX7XX"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/85TBJMJVX7XX"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Artificial Intelligence (AI), Web Application, Python Programming, Application development, Flask&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/ibm-containers-docker-kubernetes-openshift"&gt;Introduction to Containers w/ Docker, Kubernetes &amp;amp; OpenShift&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/records/EF7REH4D826F"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/EF7REH4D826F"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Kubernetes, Docker, Cloud Native, Containers, Openshift&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="april-2"&gt;April&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/node-js"&gt;Developing Cloud Apps with Node.js and React&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/DKPSKMDSDAJD"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/DKPSKMDSDAJD"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: React (Web Framework), Node.Js, Json, express, JavaScript&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/developing-cloud-native-applications"&gt;Developing Cloud Native Applications&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/ATFJJKFP8SQC"&gt;Verification link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Devops, NoSQL, Git (Software), Cloud Infrastructure, Json&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/introduction-to-cloud"&gt;Introduction to Cloud Computing&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/records/83HVU3BUV6UX"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/83HVU3BUV6UX"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Cloud Native, Devops, Iaas, PaaS, Saas, Hybrid Multicloud, Cloud Computing&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/introduction-to-web-development-with-html-css-javacript"&gt;Introduction to Web Development with HTML, CSS, JavaScript&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/records/XH9TJP6GAW8S"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/XH9TJP6GAW8S"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Web Development, Cascading Style Sheets (CSS), HTML, Git (Software), JavaScript&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/ibm-cloud-application-development-foundations"&gt;Cloud Application Development Foundations&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/specialization/BWYTUNLQMDNQ"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/BWYTUNLQMDNQ"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Devops, Python Programming, Node.Js, HTML and CSS, Cloud Applications&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="march-3"&gt;March&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Programming with Data
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Course for credit towards BSc in Computer Science&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.london.ac.uk"&gt;University of London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Agile Software Projects
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Course for credit towards BSc in Computer Science&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.london.ac.uk"&gt;University of London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="section-4"&gt;2020&lt;/h2&gt;
&lt;h3 id="september-3"&gt;September&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fundamentals of Computer Science
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Course for credit towards BSc in Computer Science&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.london.ac.uk"&gt;University of London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Algorithms and Data Structures I
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Course for credit towards BSc in Computer Science&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.london.ac.uk"&gt;University of London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="april-3"&gt;April&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/data-analysis-with-python"&gt;Data Analysis with Python&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/records/QJGEMQUZWSRT"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/QJGEMQUZWSRT"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Predictive Modelling, Python Programming, Data Analysis, Data Visualization (DataViz), Model Selection, Pandas, Numpy, SciPy, scikit-learn&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/applied-data-science-capstone"&gt;Applied Data Science Capstone&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/records/R3DKHY69VUPJ"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/R3DKHY69VUPJ"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Methodology, Github, Jupyter Notebook, Data Science Methodology, K-Means Clustering&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/python-for-data-visualization"&gt;Data Visualization with Python&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/records/SASQM4RFU39Q"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/SASQM4RFU39Q"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Dashboards and Charts, dash, Python Programming, Matplotlib, Data Visualization (DataViz)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/sql-data-science"&gt;Databases and SQL for Data Science with Python&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/records/EKQTHX2NWBDP"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/EKQTHX2NWBDP"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Cloud Databases, Python Programming, Jupyter notebooks, Relational Database Management System (RDBMS), SQL&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/machine-learning-with-python"&gt;Machine Learning with Python&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/DLPBWBM6XXBA"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/DLPBWBM6XXBA"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: SciPy, scikit-learn, Machine Learning, regression, classification, Hierarchical Clustering&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/python-for-applied-data-science-ai"&gt;Python for Data Science, AI &amp;amp; Development&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/295GTVFGL8JC"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/295GTVFGL8JC"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Data Science, Python Programming, Data Analysis, Pandas, Numpy&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/professional-certificates/ibm-data-science"&gt;IBM Data Science&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/professional-cert/6QGYRMSCX8ZG"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/6QGYRMSCX8ZG"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/applied-data-science"&gt;Applied Data Science&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/specialization/VZRP58TUSLD4"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/VZRP58TUSLD4"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="march-4"&gt;March&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/data-science-methodology"&gt;Data Science Methodology&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/records/6P49GX78LUHG"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/6P49GX78LUHG"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Data Science, Methodology, CRISP-DM, Data Analysis, Data Mining&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/open-source-tools-for-data-science"&gt;Tools for Data Science&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/D849WXZHZTF4"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/D849WXZHZTF4"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Data Science, Github, Python Programming, Jupyter notebooks, Rstudio&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/what-is-datascience"&gt;What is Data Science?&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/4P5YL94ZJDX6"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/4P5YL94ZJDX6"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Data Science, Deep Learning, Machine Learning, Big Data, Data Mining&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Introduction to Programming II
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Course for credit towards BSc in Computer Science&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.london.ac.uk"&gt;University of London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Discrete Mathematics
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Course for credit towards BSc in Computer Science&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.london.ac.uk"&gt;University of London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="section-5"&gt;2019&lt;/h2&gt;
&lt;h3 id="october-1"&gt;October&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/introduction-enterprise-computing"&gt;Introduction to Enterprise Computing&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/8U6HG6NYLJ53"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/8U6HG6NYLJ53"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Mainframe, z/OS, Enterprise Software, security, IBM Z&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/system-programming"&gt;Basic System Programming on IBM Z&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/D3BZDEX9W2ED"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/D3BZDEX9W2ED"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: System Programming, Unix, DB2, System Administration, JCL&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/deploy-micro-kube-icp"&gt;IBM Cloud Private: Deploying Microservices with Kubernetes&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/RXDYZ5DE7LCC"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/RXDYZ5DE7LCC"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Microservices, Kubernetes, IBM Cloud Private&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/deploy-micro-kube-ibm-cloud"&gt;IBM Cloud: Deploying Microservices with Kubernetes&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/QDWDX8TDU9YV"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/QDWDX8TDU9YV"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Kubernetes, Docker, Yet Another Markup Language (YAML), Cloud, IBM Cloud&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/ibm-microservice-microclimate"&gt;Developing and Deploying Microservices with Microclimate&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/VSN96653UCZC"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/VSN96653UCZC"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Microservices, Microclimate&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/z-commands-and-panels"&gt;Getting Started on Mainframe with z/OS Commands and Panels&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/Q4JZ84DUM2YD"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/Q4JZ84DUM2YD"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: System Administration, z/OS Commands, Panels, TSO, SysOp&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/ibm-z-mainframe"&gt;IBM z/OS Mainframe Practitioner&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/professional-cert/4VWC9LGSR7DF"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/4VWC9LGSR7DF"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Linux, Mainframe, z systems, security, IBM Z&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/ibm-microservices"&gt;IBM Microservices&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/specialization/RRMYDBQ4A4US"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/RRMYDBQ4A4US"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Microservices, Kubernetes, Devops, Cloud Computing&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="september-4"&gt;September&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/intro-ibm-microservices"&gt;Microservices - Fundamentals&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/ANT4KB5LUP5S"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/ANT4KB5LUP5S"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Introduction to Programming I
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Course for credit towards BSc in Computer Science&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.london.ac.uk"&gt;University of London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Numerical Mathematics
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Course for credit towards BSc in Computer Science&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.london.ac.uk"&gt;University of London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Web Development
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Course for credit towards BSc in Computer Science&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.london.ac.uk"&gt;University of London&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="january-1"&gt;January&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/it-security"&gt;IT Security: Defense against the digital dark arts&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/google-career-certificates"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/59QXVPNBSTFD"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/59QXVPNBSTFD"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Cybersecurity, Wireless Security, Cryptography, Network Security&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/google-it-support"&gt;Google IT Support&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/google-career-certificates"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/professional-cert/9YNQJVXGX2WL"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/9YNQJVXGX2WL"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Debugging, Encryption Algorithms and Techniques, Customer Service, Network Protocols, Cloud Computing&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="section-6"&gt;2018&lt;/h2&gt;
&lt;h3 id="december-1"&gt;December&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/os-power-user"&gt;Operating Systems and You: Becoming a Power User&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/google-career-certificates"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/4ZEE9XWH4GS2"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/4ZEE9XWH4GS2"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Powershell, Linux File Systems, Linux, Command-Line Interface&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/system-administration-it-infrastructure-services"&gt;System Administration and IT Infrastructure Services&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/google-career-certificates"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/C5S2TV52K3VD"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/C5S2TV52K3VD"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Directory Service, Lightweight Directory Access Protocol (LDAP), Backup&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/computer-networking"&gt;The Bits and Bytes of Computer Networking&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/google-career-certificates"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/KM9N6F6S4RZZ"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/KM9N6F6S4RZZ"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Domain Name System (DNS), Ipv4, Network Model, Troubleshooting&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/technical-support-fundamentals"&gt;Technical Support Fundamentals&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/google-career-certificates"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/6FLVPKK925FE"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/6FLVPKK925FE"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Binary Code, Customer Support, Linux, Troubleshooting&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="section-7"&gt;2017&lt;/h2&gt;
&lt;h3 id="december-2"&gt;December&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/grammar-punctuation"&gt;Grammar and Punctuation&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/uci"&gt;University of California, Irvine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/4GB5YYUEYJAK"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/4GB5YYUEYJAK"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: English Grammar, Punctuation, Grammar, Writing&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="section-8"&gt;2016&lt;/h2&gt;
&lt;h3 id="november-1"&gt;November&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/dna-sequencing"&gt;Algorithms for DNA Sequencing&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/jhu"&gt;Johns Hopkins University&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/NYLNAZU7ZNAP"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/NYLNAZU7ZNAP"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Bioinformatics Algorithms, Algorithms, Python Programming, Algorithms On Strings&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="october-2"&gt;October&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/papers-molecular-genetics"&gt;Classical papers in molecular genetics&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/google-career-certificates"&gt;University of Geneva&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/FFDDM5CXT4YE"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/FFDDM5CXT4YE"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Biology, Genetics, Evolution, Genomics&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="july"&gt;July&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/python-genomics"&gt;Python for Genomic Data Science&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/jhu"&gt;Johns Hopkins University&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/WC2P9E6UWKPN"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/WC2P9E6UWKPN"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Bioinformatics, Biopython, Python Programming, Genomics&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/galaxy-project"&gt;Genomic Data Science with Galaxy&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/jhu"&gt;Johns Hopkins University&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/9TGTWFQK6WHY"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/9TGTWFQK6WHY"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Bioinformatics, Data Analysis, Genome, Genomics&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="june-3"&gt;June&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/introduction-genomics"&gt;Introduction to Genomic Technologies&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/jhu"&gt;Johns Hopkins University&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/YSV532PT5B9C"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/YSV532PT5B9C"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Bioinformatics, Statistics, Data Science, Computational Biology&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="april-4"&gt;April&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/hiddenmessages"&gt;Finding Hidden Messages in DNA (Bioinformatics I)&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ucsd"&gt;University of California San Diego&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/WCMCNHTNHU"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/y/WCMCNHTNHU"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Bioinformatics, Bioinformatics Algorithms, Algorithms, Python Programming&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="february-1"&gt;February&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/project-management-capstone"&gt;Project Management Project&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/uci"&gt;University of California, Irvine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/DR5ZFZKRZBZ7"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/DR5ZFZKRZBZ7"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Schedule, Project Management, Risk Management, Budget&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/project-management"&gt;Project Management Principles and Practices&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/uci"&gt;University of California, Irvine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/specialization/Z6JA9E244RV6"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/specialization/certificate/Z6JA9E244RV6"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Schedule, Project Management, Risk Management, Budget&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="january-2"&gt;January&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/project-risk-management"&gt;Managing Project Risks and Changes&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/uci"&gt;University of California, Irvine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/H33XRSTLYUTL"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/H33XRSTLYUTL"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Project Management, Change Control, Risk Management, Change Management&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/project-planning"&gt;Initiating and Planning Projects&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/uci"&gt;University of California, Irvine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/T9QXCDZXA7JX"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/T9QXCDZXA7JX"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Project Management, Project, Planning, Project Planning&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/schedule-projects"&gt;Budgeting and Scheduling Projects&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/uci"&gt;University of California, Irvine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/L5Z4S2D59JYN"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/L5Z4S2D59JYN"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Schedule, Project Management, Budget, Budget Estimation&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="section-9"&gt;2015&lt;/h2&gt;
&lt;h3 id="december-3"&gt;December&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/cloudnetworking"&gt;Cloud Networking&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/illinois"&gt;University of Illinois at Urbana-Champaign&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/BJ4L9A85UE"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/y/BJ4L9A85UE"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Software-Defined Networking, Python Programming, Cloud Infrastructure, Cloud Computing&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="october-3"&gt;October&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/cloudapplications"&gt;Cloud Computing Applications&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/illinois"&gt;University of Illinois at Urbana-Champaign&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/EQT864KYDZ"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/y/EQT864KYDZ"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Cloud Infrastructure, Cloud Applications, Cloud Storage, Cloud Computing&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/chem991"&gt;Introduction to Chemistry: Reactions and Ratios&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/duke"&gt;Duke University&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/ZTTQUAZ8JT"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/y/ZTTQUAZ8JT"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="june-4"&gt;June&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/cloudcomputing2"&gt;Cloud Computing Concepts: Part 2&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/illinois"&gt;University of Illinois at Urbana-Champaign&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/4J7QWRXLYU"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/y/4J7QWRXLYU"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Distributed Computing, C++, Cloud Computing, NoSQL&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="april-5"&gt;April&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/cloudcomputing"&gt;Cloud Computing Concepts&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/illinois"&gt;University of Illinois at Urbana-Champaign&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/verify/2VN4Z7UZMA"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/2VN4Z7UZMA"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Distributed Algorithm, Distributed Computing, C++, Cloud Computing&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/genetics-evolution"&gt;Introduction to Genetics and Evolution&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/duke"&gt;Duke University&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/account/accomplishments/records/2RCDAKPDG6"&gt;Verification link&lt;/a&gt; | &lt;a href="https://www.coursera.org/account/accomplishments/certificate/2RCDAKPDG6"&gt;Certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Biology, Genetics, Evolution, Genomics&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;</content><category term="lifelong learning"></category><category term="learning"></category><category term="python"></category></entry><entry><title>Learning Log - In Progress</title><link href="/learning-in-progress.html" rel="alternate"></link><published>2023-06-27T00:00:00-06:00</published><updated>2025-01-02T14:58:00-07:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2023-06-27:/learning-in-progress.html</id><summary type="html">Brad Lazaruk’s in progress learning</summary><content type="html">&lt;p&gt;&lt;a href="/learning-queue.html"&gt;Queued learning&lt;/a&gt; | &lt;a href="/learning-in-progress.html"&gt;In progress learning&lt;/a&gt; | &lt;a href="/learning-completed.html"&gt;Completed learning&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Entries here are listed by their projected completion date, if available.&lt;/p&gt;
&lt;p&gt;– &lt;a href="https://www.coursera.org/professional-certificates/google-data-analytics"&gt;Google Data Analytics Professional Certificate&lt;/a&gt; - &lt;strong&gt;Professional certificate&lt;/strong&gt; - Author: &lt;a href="https://www.coursera.org/google-career-certificates"&gt;Google&lt;/a&gt; - Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt; - Skills: Spreadsheet, Data Cleansing, Data Analysis, Data Visualization (DataViz), SQL, Questioning, Decision-Making, Problem Solving, Metadata, Data Collection, Data Ethics, Sample Size Determination, Data Integrity, Data Calculations, Data Aggregation, Tableau Software, Presentation, R Programming, R Markdown, Rstudio&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/certified-business-analysis-professional-cbap"&gt;Certified Business Analysis Professional (CBAP) Specialization&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/starweaver"&gt;STARWEAVER&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Requirements Management, Soft Skills Development, Stakeholder Engagement, Business Analysis Planning, Solution Evaluation&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/hu-business-problem-solving"&gt;Business Problem Solving Specialization&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/howard"&gt;Howard University&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Modeling, Spreadsheet, Microsoft Excel, Business Analysis, Business Strategy&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/professional-certificates/google-business-intelligence"&gt;Google Business Intelligence Professional Certificate&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/google"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Business Intelligence, Extraction, Transformation And Loading (ETL), Bigquery, Dashboarding and Reporting, Data Analysis, Data Modeling, Business Analysis, SQL, Tableau Software, Business Process, Sheets, Data Visualization&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/professional-certificates/bi-analyst"&gt;IBM Business Intelligence (BI) Analyst Professional Certificate&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Data Collection, Data Wrangling, Data Analysis, BI analytics, Data Warehousing, Data visualization with Tableau, SQL, Data Cleansing, Data Mining, Tableau reporting and dashboard creation, Relational Database Management Systems (RDBMS), Database querying using SQL&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Evolutionary Computer Vision
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Book&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: Gustavo Olague&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/wharton-business-foundations"&gt;Business Foundations Specialization&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/partners/penn"&gt;University of Pennsylvania&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/professional-certificates/microsoft-business-analyst"&gt;Microsoft Business Analyst Professional Certificate&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/partners/microsoft"&gt;Microsoft&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;</content><category term="lifelong learning"></category><category term="learning"></category><category term="python"></category></entry><entry><title>Learning Log - Queue</title><link href="/learning-queue.html" rel="alternate"></link><published>2023-06-27T00:00:00-06:00</published><updated>2025-01-02T14:58:00-07:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2023-06-27:/learning-queue.html</id><summary type="html">Brad Lazaruk’s learning queue</summary><content type="html">&lt;p&gt;&lt;a href="/learning-queue.html"&gt;Queued learning&lt;/a&gt; | &lt;a href="/learning-in-progress.html"&gt;In progress learning&lt;/a&gt; | &lt;a href="/learning-completed.html"&gt;Completed learning&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.cloudskillsboost.google/journeys/118"&gt;Generative AI Learning Path&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google Cloud Skills Boost&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/foundations-data"&gt;Foundations: Data, Data, Everywhere&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/google-career-certificates"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Spreadsheet, Data Cleansing, Data Analysis, Data Visualization (DataViz), SQL&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/ask-questions-make-decisions"&gt;Ask Questions to Make Data-Driven Decisions&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/google-career-certificates"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Spreadsheet, Questioning, Decision-Making, Problem Solving, Data Analysis&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/data-preparation"&gt;Prepare Data for Exploration&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/google-career-certificates"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Spreadsheet, Metadata, Data Collection, Data Ethics, SQL&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/process-data"&gt;Process Data from Dirty to Clean&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/google-career-certificates"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Spreadsheet, Data Cleansing, Sample Size Determination, SQL, Data Integrity&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/analyze-data"&gt;Analyze Data to Answer Questions&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/google-career-certificates"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Spreadsheet, Data Analysis, SQL, Data Calculations, Data Aggregation&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/visualize-data"&gt;Share Data Through the Art of Visualization&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/google-career-certificates"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Data Analysis, Tableau Software, Data Visualization (DataViz), Presentation&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/data-analysis-r"&gt;Data Analysis with R Programming&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/google-career-certificates"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: R Programming, Data Analysis, Data Visualization (DataViz), R Markdown, Rstudio&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/google-data-analytics-capstone"&gt;Google Data Analytics Capstone: Complete a Case Study&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/google-career-certificates"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Job portfolio, Data Cleansing, Data Analysis, Data Visualization (DataViz)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cloudskillsboost.google/course_templates/536"&gt;Introduction to Generative AI&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google Cloud Skills Boost&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Introduction to Large Language Models
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google Cloud Skills Boost&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Introduction to Responsible AI
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google Cloud Skills Boost&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Generative AI Fundamentals
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google Cloud Skills Boost&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Introduction to Image Generation
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google Cloud Skills Boost&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Encoder-Decoder Architecture
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google Cloud Skills Boost&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Attention Mechanism
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google Cloud Skills Boost&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Transformer Models and BERT Model
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google Cloud Skills Boost&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Create Image Captioning Models
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google Cloud Skills Boost&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Introduction to Generative AI Studio
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google Cloud Skills Boost&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Generative AI Explorer - Vertex AI
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.cloudskillsboost.google/"&gt;Google Cloud Skills Boost&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course/python-the-complete-python-developer-course/learn/lecture/5058970?start=0#overview"&gt;Learn Python Programming Masterclass&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.udemy.com"&gt;udemy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course-dashboard-redirect/?course_id=4823070"&gt;Python Django 4 Masterclass&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.udemy.com"&gt;udemy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course-dashboard-redirect/?course_id=1899124"&gt;Recommender Systems and Deep Learning in Python&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.udemy.com"&gt;udemy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course-dashboard-redirect/?course_id=1726410"&gt;Building Recommender Systems with Machine Learning and AI&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.udemy.com"&gt;udemy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course-dashboard-redirect/?course_id=1399474"&gt;The Complete Python Course for Machine Learning Engineers&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.udemy.com"&gt;udemy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course-dashboard-redirect/?course_id=2133386"&gt;Practical Introduction to Machine Learning with Python&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.udemy.com/user/madhu-siddalingaiah/"&gt;Madhu Siddalingaiah&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.udemy.com"&gt;udemy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course-dashboard-redirect/?course_id=772462"&gt;Data Science: Modern Deep Learning in Python&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.udemy.com"&gt;udemy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course-dashboard-redirect/?course_id=1655490"&gt;Practical Machine Learning by Example in Python&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.udemy.com"&gt;udemy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course-dashboard-redirect/?course_id=1560148"&gt;The Complete Self-Driving Car Course - Applied Deep Learning&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://www.udemy.com"&gt;udemy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Python 101: Second Edition
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Book&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/fundamentals-of-business-analysis"&gt;Fundamentals of Business Analysis&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/starweaver"&gt;STARWEAVER&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Business Analysis, Business Analysis Methodology, Requirements Analysis, Stakeholder Identification, Solution Delivery&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/business-process-modelling"&gt;Business Process Modelling&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/starweaver"&gt;STARWEAVER&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Business Operations, Business Modeling, Notations, Sequencing, BPMN&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/certification-of-capability-in-business-analysis"&gt;Certification of Capability in Business Analysis&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/starweaver"&gt;STARWEAVER&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Problem Solving, Business Analysis, Performance Assessment, Stakeholder Management, Solution Evaluation&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/projects/business-analysis-using-spreadsheets"&gt;Introduction to Business Analysis Using Spreadsheets: Basics&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/project-network"&gt;Coursera Project Network&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Spreadsheet, Mathematics, Data Analysis, Business Analysis, Data Visualization&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/projects/business-analysis-process-management"&gt;Business Analysis &amp;amp; Process Management&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/project-network"&gt;Coursera Project Network&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/business-analysis-mastery?specialization=certified-business-analysis-professional-cbap"&gt;Business Analysis: Key Definitions &amp;amp; Strategy Analysis&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/starweaver"&gt;STARWEAVER&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Modeling, Risk, strategy, analysis, Change&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/advanced-business-analysis-elicitation-analysis?specialization=certified-business-analysis-professional-cbap"&gt;Advanced Business Analysis: Elicitation &amp;amp; Analysis&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/starweaver"&gt;STARWEAVER&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Decision-Making, Communication, analysis, Collaboration, Elicitation&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/advanced-requirements-management-solution-evaluation?specialization=certified-business-analysis-professional-cbap"&gt;Advanced Requirements Management &amp;amp; Solution Evaluation&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/starweaver"&gt;STARWEAVER&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Evaluation, Traceability, analysis, Prioritization, Root Cause&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/business-analysis-mastery-planning-skills-and-perspective?specialization=certified-business-analysis-professional-cbap"&gt;Business Analysis Mastery: Planning, Skills, and Perspective&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/starweaver"&gt;STARWEAVER&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Observation, Adaptability, governance, Planning, engagement&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/analytics"&gt;Business Analytics Specialization&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/illinois"&gt;University of Illinois at Urbana-Champaign&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Data Analysis, Analytics, Machine Learning, Rstudio, power bi&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/financial-management"&gt;Financial Management Specialization&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/illinois"&gt;University of Illinois at Urbana-Champaign&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Financial Management, Risk Management, Financial Mismanagement, Financial Aid Management, Investment&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/managerial-economics-business-analysis"&gt;Managerial Economics and Business Analysis Specialization&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/illinois"&gt;University of Illinois at Urbana-Champaign&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Economics, Consumer Behaviour, Supply And Demand, Cost, Externality, Game Theory, Market (Economics), Data Analysis, Microsoft Excel, Statistical Analysis, Normal Distribution, Statistical Inference, Statistical Hypothesis esting&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/business-value-project-management"&gt;Business Value and Project Management Specialization&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/illinois"&gt;University of Illinois at Urbana-Champaign&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Financial Accounting, Project Management, Strategic Management, Project Execution, Organizational Structure&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/strategic-leadership"&gt;Strategic Leadership and Management Specialization&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/illinois"&gt;University of Illinois at Urbana-Champaign&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Strategic Management, Negotiation, Leadership, Business Strategy&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/innovation-creativity-entrepreneurship"&gt;Innovation: From Creativity to Entrepreneurship Specialization&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/illinois"&gt;University of Illinois at Urbana-Champaign&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Business Model, Creativity, Innovation, Entrepreneurship, Innovation Management&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/global-challenges-business"&gt;Global Challenges in Business Specialization&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/illinois"&gt;University of Illinois at Urbana-Champaign&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Global Marketing, Marketing, Brand Management, Strategic Planning&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/value-chain-management"&gt;Value Chain Management Specialization&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/illinois"&gt;University of Illinois at Urbana-Champaign&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Lean Manufacturing, Program Management, Six Sigma, Process Control, Market Analysis, Marketing, Marketing Strategy, Marketing Mix, Process Analytics, Supply Chain, Inventory, Operations Strategy, Management Accounting, Cost Accounting, Activity Based Costing, Cost, Marketing Plan, Marketing Management, Writing, Accounting, Investment, Analysis Of Variance (ANOVA)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/excel-mysql"&gt;Excel to MySQL: Analytic Techniques for Business Specialization&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Professional certificate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/duke"&gt;Duke University&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Business Communication, Big Data, Binary Classification, Data Analysis, Microsoft Excel, Business Analysis, SQL, Business Analytics, Tableau Software, Data Visualization, MySQL&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/business-intelligence-essentials"&gt;Business Intelligence (BI) Essentials&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOOC course&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/ibm-skills-network"&gt;IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills: Data Wrangling, Data Analysis, Data Warehousing, Data Visualization, Data Mining&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/data-science-foundations"&gt;Data Science Foundations Specialization&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Author: &lt;a href="https://www.coursera.org/specializations/data-science-foundations"&gt;University of London and IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delivered via: &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;</content><category term="lifelong learning"></category><category term="learning"></category><category term="python"></category><category term="queue"></category></entry><entry><title>Moving to Linux, Building my System</title><link href="/building-my-linux-pop_os-system.html" rel="alternate"></link><published>2024-07-05T00:00:00-06:00</published><updated>2024-07-05T00:00:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2024-07-05:/building-my-linux-pop_os-system.html</id><summary type="html"></summary><content type="html">&lt;p&gt;Herein lies all the things I did to get my system to the state it is in today. Mostly this is a record so that I can re-create it if need be. But hey, it might also be helpful to someone.&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;&lt;p&gt;Install the system. Just accept all the defaults from the installation media. Make sure to enable the disk encryption and record the passwords.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There are some great points &lt;a href="https://mutschler.dev/linux/pop-os-post-install/"&gt;here&lt;/a&gt;. I also probably am writing up this document because of being inspired by Willi. Thanks!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install &lt;a href="https://www.fosslinux.com/125641/how-to-backup-data-on-your-pop_os-using-timeshift.htm"&gt;Timeshift&lt;/a&gt; to capture backups of the state of the system. This still needs more testing to determine if it’s useful.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/nbfc-linux/nbfc-linux"&gt;NoteBook FanControl&lt;/a&gt;&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;I found that the fans were not coming on effectively and the system was a bit hot. Installing this app and setting it to the “HP Spectre x360 Convertible 15-ch0xx” config has fixed this up.&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;As part of my initial requirements to make the system look as much like Windows 11 as possible, to aid in my unconscious acceptance of the system, I’ve installed Dash to Panel. The configuration of it and the default dock are generally:&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;In the system settings:
&lt;ol type="1"&gt;
&lt;li&gt;Disable the default dock in the Settings &amp;gt; Desktop &amp;gt; Dock.&lt;/li&gt;
&lt;li&gt;Toggle some settings for the Top Bar in Settings &amp;gt; Desktop &amp;gt; Desktop Options. Remove the Workspaces and Applications Buttons. The Super Key Action should continue to be set to Launcher. Window Controls should have both Minimize and Maximize Buttons enabled.&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;In Dash to Panel settings:
&lt;ol type="1"&gt;
&lt;li&gt;The settings are backed up in ~/Documents and the differences between my settings and the defaults are not necessarily all captured below. Need to expand on this as further tweaks are identified.&lt;/li&gt;
&lt;li&gt;Position: remove the Applications button and set the Taskbar to Monitor Center.&lt;/li&gt;
&lt;li&gt;Style: Set App Icon Margin to 4. Tweak Animate hovering app icons settings.&lt;/li&gt;
&lt;li&gt;Running indicator: set focused app to Metro and unfocused apps to Dashes.&lt;/li&gt;
&lt;li&gt;Panel style: Override panel theme background opacity and set it to 50%, and enable the Dynamic background opacity.&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;File Syncing / Backup&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;This has been quite an adventure.&lt;/li&gt;
&lt;li&gt;My preferred sync option, Proton, doesn’t have a Linux app for their cloud drive (as of early July 2024). I tried Internxt and have had more problems than success with it. At this point I’m taking advantage of my free Dropbox account and Mega account to do some syncing. I also purchased a lifetime 100GB account from &lt;a href="https://filen.io"&gt;Filen&lt;/a&gt; which is working great. So right now I’m basically leaving everything in the various locations they were in before I moved to Linux and if I ever need something that’s when I get it to the local system and find a new permanent home for it.
&lt;ol type="1"&gt;
&lt;li&gt;The big advantage right now is that Mega and Filen allow me to sync the local directories without moving them. Internxt allows me to backup the directories in place (except for the errors with the backup service), but if I wanted to sync them I need to move the directories to the Internxt Drive directory, and then symlink from my home folder. I don’t really want to do that and have to manage it (plus, it doesn’t reliably work right now).&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;I also needed to capture game save information for the 2 or 3 games that I ever play. These were purchased through Steam for my Windows system. Thankfully they are functional on the Linux system with the Steam ProtonDB Windows emulation. To backup the game save information, I found the Windows filesystems in home/&lt;username&gt;/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/compatdata/ and added those to my sync client.
&lt;ol type="1"&gt;
&lt;li&gt;I chose to not use Steam Cloud here because I just have too many save files right now. When I get those reduced to a volume that can reliably live in Steam Cloud then that’s the path I’ll change to.&lt;/li&gt;
&lt;/ol&gt;&lt;/username&gt;&lt;/li&gt;
&lt;li&gt;I tried using &lt;a href="https://wiki.gnome.org/Apps/DejaDup"&gt;Déjà Dup&lt;/a&gt; to create the backups and while it works well there isn’t a lot of reason to add another tool to the backup pipeline when Mega and Filen are syncing things just fine. I did try using Déjà Dup to run backups and store those in my Internxt Drive and let that sync up but that introduces a potential data loss between the time I change a file and the time of the next backup and sync. Again, since Mega and Filen sync in near real time there was no reason to use Déjà Dup here.&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Adding launcher icons for things that don’t otherwise have them&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;For example, Anaconda.&lt;/li&gt;
&lt;li&gt;Thankfully, Joe Lotz &lt;a href="https://www.joelotz.com/blog/2021/creating-a-launch-shortcut-for-anaconda-on-ubuntu.html"&gt;has a page for this&lt;/a&gt;. Thanks again Joe.&lt;/li&gt;
&lt;li&gt;Just crete a desktop file in the applications directory: &lt;code&gt;gedit ~/.local/share/applications/&amp;lt;application name&amp;gt;.desktop&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;And then add data to the file:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;[Desktop Entry]
Version=1.0
Type=Application
Name=&amp;lt;app name&amp;gt;
Exec=&amp;lt;path&amp;gt;
Icon=&amp;lt;path&amp;gt;
Terminal=false&lt;/code&gt;&lt;/pre&gt;
&lt;ol type="1"&gt;
&lt;li&gt;Since I’ve only had to do this for Anaconda so far, I can make a list of the app icon locations fairly quickly:
&lt;ol type="1"&gt;
&lt;li&gt;&lt;code&gt;/home/&amp;lt;username&amp;gt;/anaconda3/lib/python3.7/site-packages/anaconda_navigator/app/icons/Icon1024.png&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Getting the graphics to work&lt;/p&gt;
&lt;p&gt;Pop!_OS has a few graphics options built in to the power menu. Initially I set mine to hybrid, thinking that it would be best to use the lower power integrated graphics as the default and then use the discrete GPU when necessary. Now, it became necessary when I was running some machine learning python code, which I was able to get running by adding the command &lt;code&gt;__NV_PRIME_RENDER_OFFLOAD=1 &amp;lt;application&amp;gt;&lt;/code&gt;, per the &lt;a href="https://support.system76.com/articles/graphics-switch-pop/"&gt;support page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But when I tried running switching between GPU enabled apps and integrated apps, especially when using the docking station, I found the system started having power problems and would inevitably freeze. Sometimes these freezes could be recovered by removing the system from the dock, and sometimes I needed to hard reboot and lose whatever I was working it.&lt;/p&gt;
&lt;p&gt;I also found that I was unable to use my two external monitor plus laptop panel setup as the resolutions and zoom settings could not be set such that all three panels were useful at the same time.&lt;/p&gt;
&lt;p&gt;I suspect that my laptop simply does not use the discrete GPU for the external display(s) when in hybrid mode. It looks like &lt;a href="https://github.com/pop-os/nvidia-graphics-drivers/issues/61"&gt;maybe this is a bug with xorg, or that the problem may be solved with the new Cosmic DE&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The solution was to just switch to using the nVidia graphics mode. Since then the performance with the dock has been fine, the system is not freezing when switching between applications, and I can once again use all three panels at the same time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Integrate AppImages&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;Use &lt;a href="https://github.com/TheAssassin/AppImageLauncher"&gt;AppImageLauncher&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Designate a directory to store the appimages, and set something to back it up if you like.&lt;/li&gt;
&lt;li&gt;Install the launcher:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;sudo add-apt-repository ppa:appimagelauncher-team/stable
sudo apt update
sudo apt install appimagelauncher&lt;/code&gt;&lt;/pre&gt;
&lt;ol start="4" type="1"&gt;
&lt;li&gt;Run the app and customise the integration directory to point to your designated directory.&lt;/li&gt;
&lt;li&gt;That’s it. Running appimages will pop up the launcher to ask if you want to move them and add launcher icons.&lt;/li&gt;
&lt;li&gt;Thanks to &lt;a href="https://ostechnix.com/integrate-appimages-to-application-menu-using-appimagelauncher/"&gt;ostechnix&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AntiVirus&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;I get that a lot of advice says to not bother installing AV for Linux, but I’m hardcoded to need to see AV on my workstation. To this end, I installed &lt;a href="https://www.clamav.net/downloads"&gt;ClamAV&lt;/a&gt; and ClamTK from the Pop!_Shop to be able to use it quickly.&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keeping lists of installed applications&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;To restore from a crash I’ll need to know what is installed.
&lt;ol type="1"&gt;
&lt;li&gt;&lt;code&gt;apt list --installed&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ls /usr/share/applications&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;flatpak list&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Screenshots&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;The default screenshot app is fine, but I like to be able to do quick pixelisations or annotations. On Windows I’ve been using Greenshot for years, but they have no Linux option.&lt;/li&gt;
&lt;li&gt;Thankfully, Flameshot exists. Does everything I need it to do on Linux.&lt;/li&gt;
&lt;li&gt;Install the DEB from their &lt;a href="https://github.com/lupoDharkael/flameshot/releases"&gt;GitHub&lt;/a&gt; so that you can configure the system to use the Print Screen button to take a screenshot with the &lt;code&gt;flameshot gui&lt;/code&gt; command. There may be a way to do this with the flatpak version that is available through the Pop!_Shop.&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Changing the behaviour when closing the laptop lid&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;Thankfully I didn’t need to do any of this. But just in case &lt;a href="https://ubuntuhandbook.org/index.php/2020/05/lid-close-behavior-ubuntu-20-04/"&gt;this might be useful&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The fingerprint reader&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;Apparently is not supported by either the gnome option or any of the other options I was able to find and try, such as fprint.&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;LibreOffice&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;Again, I’m interested in kinda forcing myself to stick with Linux by making it look as much as possible like my more familiar Windows surroundings.&lt;/li&gt;
&lt;li&gt;So, &lt;a href="https://www.howtogeek.com/788591/how-to-make-libreoffice-look-like-microsoft-office/"&gt;tweaking LibreOffice&lt;/a&gt; a bit doesn’t hurt.&lt;/li&gt;
&lt;li&gt;I also found that the versions of LibreOffice that come with Pop!_OS don’t seem to upgrade to the newest versions. To resolve this I did a fresh install of the Linux versions of the apps, and then removed those older ones that came with the OS.&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Photo Manager&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;One of my big problems is that over the years my photos have become very duplicated and spaghettified. They are spread over hundreds of folder and renamed here and there in attempts to identify or save meta data. At times I’ve done mass restores to separate folders that then were merged - it’s a nightmare.&lt;/li&gt;
&lt;li&gt;After looking through &lt;a href="https://itsfoss.com/linux-photo-management-software/"&gt;some options&lt;/a&gt;, I settled on digiKam to try and help me sort this out. It looks like it does a great job of identifying duplicates which is the first step for me. Now I can go through all the files I have and sort them as I import them and remove the straight up duplicates.&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="customise-apps"&gt;Customise Apps&lt;/h3&gt;
&lt;ol type="1"&gt;
&lt;li&gt;vscodium
&lt;ol type="1"&gt;
&lt;li&gt;Change the terminal with the command palette &lt;code&gt;terminal: select default profile&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Set up sync with the &lt;a href="https://open-vsx.org/vscode/item?itemName=Shan.code-settings-sync"&gt;Settings Sync extension&lt;/a&gt;. Make sure it’s set to Auto Download and Auto Upload, add and remove extensions, and quiet sync (otherwise it keeps popping up an output window and taking the focus from any terminals that are running).&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;PyCharm
&lt;ol type="1"&gt;
&lt;li&gt;Change the terminal here too - use the &lt;a href="https://www.jetbrains.com/help/pycharm/settings-tools-terminal.html#project-settings"&gt;New Terminal&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;pandoc
&lt;ol type="1"&gt;
&lt;li&gt;Required for some of my static sites. pandoc is a pain but it’s easy to fix thanks to &lt;a href="https://stackoverflow.com/a/71585691"&gt;this post&lt;/a&gt;. Basically, in conda you can get it working with &lt;code&gt;conda install pandoc&lt;/code&gt;, and without conda there are other things that need doing.&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;/ol&gt;</content><category term="Linux Workstation Build and Maintenance"></category><category term="Linux"></category><category term="Pop!_OS"></category><category term="Ubuntu"></category><category term="Anaconda"></category><category term="Filen"></category><category term="Internxt"></category><category term="Mega"></category><category term="Timeshift"></category><category term="nbfc"></category><category term="AppImageLauncher"></category><category term="Work in Progress"></category></entry><entry><title>Merging Git Repositories</title><link href="/merging-git-repositories.html" rel="alternate"></link><published>2024-06-27T00:00:00-06:00</published><updated>2024-07-05T00:00:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2024-06-27:/merging-git-repositories.html</id><summary type="html">–</summary><content type="html">&lt;p&gt;I had a bunch of separate git repositories that I wanted to merge into one, while also maintaining the existing git history as much as possible.&lt;/p&gt;
&lt;p&gt;There were three cases: one where the original repository is in a directory which can be simply renamed to fit into the new structure, one where the repository was in a subfolder which needed to be moved up a level or two, and one where there were multiple repositories in a directory which needed to be all be folded together into one directory in the new structure. The new repository should be reformatted so that it looks like all the commits were originally made in the new directory structure. In all cases there are loose files which had been added here and there over time and then not added to the repository at all. Overall, a big mess that I just wanted to get cleaned up, all added to a single repository, and then archived.&lt;/p&gt;
&lt;p&gt;Turns out this is time consuming but not technically challenging. Thanks to &lt;a href="https://stackoverflow.com/a/10548919"&gt;this post&lt;/a&gt; from Andresch Serj, and reinforced with &lt;a href="https://www.slingacademy.com/article/how-to-merge-two-git-repositories-into-one/"&gt;this article on SlingAcademy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Both of the cases require the use of &lt;a href="https://github.com/newren/git-filter-repo"&gt;git-filter-repo&lt;/a&gt;. To get this to work I simply downloaded the script, placed it into a new ~/opt directory, and set the file to executable. I then added this ~/opt directory to my path with export PATH=/home/&lt;username&gt;/opt:$PATH. I know this is ephemeral but it suits my purposes right now as I’m not sure I’m going to need to add more things to ~/opt in the future.&lt;/username&gt;&lt;/p&gt;
&lt;h3 id="case-1"&gt;Case 1&lt;/h3&gt;
&lt;p&gt;In this case, the source directory contains the development material. But it should be bundled together into a single subfolder so that it fits in the target directory as a sub-project, rather than hanging directly off the root, to make room for further sub-projects to be added.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;root
|- target new directory
|-- target new repository and tracked files
|- existing source directory
|-- existing source repository and tracked files
|-- loose files&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;to&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;root
|- new target directory
|-- subdirectory - exact copy of the source directory
|-- new repository blended with original repository&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On the terminal, cd into the source directory. Use the command to bundle that material into a new sub-sub-project directory:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git filter-repo --to-subdirectory-filter &amp;lt;sub-sub-project&amp;gt; --force&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;So, if have a folder structure like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;root
|- 2024_update
|-- source_code&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and I want to have it look like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;root
|- projectAlpha
|-- 2024_update
|--- source_code&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;then I first have to create the desired directory structure in place, with this command issued from the /2024_update folder:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git filter-repo --to-subdirectory-filter 2024_update --force&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This will leave us with the intermediate structure of&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;root
|- 2024_update
|-- 2024_update
|--- source_code&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now you can go to the target repository and merge the modified repository in.&lt;/p&gt;
&lt;p&gt;Note: In the git remote command be sure of your spelling. The command will not give any error messages if you get the path wrong.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd &amp;lt;into the folder with the target repository&amp;gt;
git remote add &amp;lt;name&amp;gt; /path/to/the/modified_repository
git fetch &amp;lt;name&amp;gt; --tags
git merge --allow-unrelated-histories &amp;lt;name&amp;gt;/&amp;lt;branch name&amp;gt;
git remote remove &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The result of this will be the desired target structure and the git repository with the original timestamps and appearing to be commits to the current directory structure. Gather up and add the loose files and commit them to the new directory.&lt;/p&gt;
&lt;h3 id="case-2"&gt;Case 2&lt;/h3&gt;
&lt;p&gt;Here, the source repository is in a subfolder which needs to be moved up.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;root
|- target new directory
|-- target new repository and tracked files
|- existing source directory
|-- loose files
|-- source subfolder
|--- existing source repository
|--- loose files&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;to&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;root
|- new target directory
|-- subdirectory - exact copy of the source directory
|-- new repository blended with original repository&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The process here is mostly the same as in case 1. You just need to use the &lt;code&gt;git filter-repo&lt;/code&gt; command to create the target directory structure from the bottom up.&lt;/p&gt;
&lt;p&gt;So, if have a folder structure like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;root
|- 2024_update
|-- 2023_proposal
|--- july_presentation
|---- source_code&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and I want to have it look like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;root
|- projectAlpha
|-- 2024_update
|--- source_code&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;then I first have to create the desired directory structure in place, with this command issued from the july_presentation folder:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git filter-repo --to-subdirectory-filter 2024_update --force&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This will leave us with the intermediate structure of&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;root
|- 2024_update
|-- 2023_proposal
|--- july_presentation
|---- 2024_update
|----- source_code&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and the git repository will believe the root of this is the 2024_update directory. Now you can merge this repository into the target repository with the above commands to get the desired structure.&lt;/p&gt;
&lt;h3 id="case-3"&gt;Case 3&lt;/h3&gt;
&lt;p&gt;This case is a touch more complex as there are multiple repositories that need to be merged together to give the appearance that they were always in one repository and under the same parent directory.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;root
|- target new directory
|-- target new repository and tracked files
|- existing source directory
|-- loose files
|-- subdirectory project 1
|--- original repository 1
|--- loose files
|-- subdirectory project 2
|--- original repository 2
|--- loose files
|-- subdirectory project 3
|--- original repository 3
|--- loose files&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;to&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;root
|- target directory
|-- subdirectory1 - exact copy of the source subdirectory 1
|-- subdirectory2 - exact copy of the source subdirectory 2
|-- subdirectory3 - exact copy of the source subdirectory 3
|-- new repository blended with all the original repository&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For this I found it easiest to go through the subfolders and use the above &lt;code&gt;git filter-repo&lt;/code&gt; command to build the desired directory structure for each of the repositories. Then I used the fetch and merge commands above to merge each of those repositories into a new temporary repository, named for the desired new parent folder name. Once all the smaller repositories were folded together the &lt;code&gt;git filter-repo&lt;/code&gt; command is used on the temporary repository to bundle it all together into a single subfolder - and then finally that repository can be merged into the target repository.&lt;/p&gt;
&lt;h2 id="all-cases"&gt;All Cases&lt;/h2&gt;
&lt;p&gt;Done. Not the end of the world, really. Now you can review the folder structure of the new repository to make sure things moved as they should have, and check the git history to see if the merging worked as expected, maintaining the timestamps and respecting the new folder structure. If it didn’t, stop now and re-clone the new repository and do it all over again. If the git commands worked properly but there are some objects in the original directories still well, those were added to the directories but never to any repository. Just add them to the new target directory now so they are captured.&lt;/p&gt;
&lt;p&gt;When everything looks as it should, sync up to GitHub, or archive it however you like. Then you can delete all the old directories so you don’t in the future have to wonder if you ever merged them! Clean as you go!&lt;/p&gt;</content><category term="Development"></category><category term="GitHub"></category><category term="Git"></category></entry><entry><title>Hello, world.</title><link href="/deploy-pelican-to-netlify.html" rel="alternate"></link><published>2022-08-14T14:11:00-06:00</published><updated>2023-06-27T16:31:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2022-08-14:/deploy-pelican-to-netlify.html</id><summary type="html">The quick summary of how I created the shell of this site and deployed it from GitHub to Netlify</summary><content type="html">&lt;p&gt;Well it only seems fitting that the first post I write for this iteration of the site would be a description of how I made it. As I go back and add content from the old site(s) to this one I’m going to manually update the timestamp to the original posting time. So things may be older on the site - but this is the first post. This site is a static site generated with &lt;a href="https://getpelican.com"&gt;Pelican&lt;/a&gt; and hosted on &lt;a href="https://netlify.com"&gt;Netlify&lt;/a&gt;. I chose Pelican because I wanted a static site generator, and I wanted it to be associated with Python if possible, and I wanted to use Markdown to write the actual posts and files. I don’t require anything like Django right now … maybe later.&lt;/p&gt;
&lt;p&gt;Assumptions: You have a &lt;a href="https://github.com"&gt;GitHub&lt;/a&gt; account, and GitHub desktop is installed and configured. &lt;a href="https://anaconda.com"&gt;Anaconda&lt;/a&gt; is installed and configured. You’ve got a Netlify account.&lt;/p&gt;
&lt;h2 id="setup"&gt;Setup&lt;/h2&gt;
&lt;ol type="1"&gt;
&lt;li&gt;&lt;p&gt;I like Anaconda, so I defined a new environment there. I double checked that python was at least version 3.8, and installed pelican and markdown, along with whatever dependencies those brought about.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Since I prefer to use GitHub desktop I fired that up and clicked on File &amp;gt; New Repository. I gave my new repo a name and description and pointed the local path to the repos folder to let the application create the subfolder based on the name of the repository. I created the README so I could populate it later. Since I was creating my own Git ignore file later I did not choose one here and I since this is a Pelican website I used the GNU AGPLv3 license to respect the license of the original project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now I opened the project folder and create a file called .gitignore. Into .gitignore I added the default Python exclusions from &lt;a href="https://gitignore.io"&gt;gitignore.io&lt;/a&gt;, and at the end of the file I added&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Pelican output directory
    output/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After committing that to the repo the standard Python bits, as well as the output directory of the site itself, are not going to be pushed to GitHub. That’s fine since Netlify will be rebuilding the output directory locally every time I commit a new change to the repo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From inside the project folder, I setup the pelican structure with the command &lt;code&gt;pelican-quickstart&lt;/code&gt;. This launched a configuration wizard. I accepted the defaults except for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“What will be the title of this web site?”
&lt;ul&gt;
&lt;li&gt;This is written to the pelicanconf.py file as the SITENAME&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;“Who will be the author of this web site?”
&lt;ul&gt;
&lt;li&gt;Written to pelicanconf.py as AUTHOR&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;“Do you want to specify a URL prefix?”
&lt;ul&gt;
&lt;li&gt;Set this to N. When I specified Y then the URL was used instead of relative paths for images which made local development pretty much impossible.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Get the timezone for the site from &lt;a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones"&gt;Wikipedia&lt;/a&gt;, and enter it when prompted.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="customise-pelican-and-prepare-it-for-netlify"&gt;Customise Pelican and Prepare It For Netlify&lt;/h2&gt;
&lt;ol type="1"&gt;
&lt;li&gt;&lt;p&gt;I wanted to have a bit of a theme on the site from the beginning, so I hunted around on &lt;a href="http://pelicanthemes.com"&gt;pelicanthemes.com&lt;/a&gt; and settled on the &lt;a href="https://github.com/molivier/nest"&gt;nest&lt;/a&gt; theme. After messing about with it a bit I discovered that it needed to be changed to work with the version of Pelican I was using. So I &lt;a href="https://github.com/lazarukb/nest"&gt;forked&lt;/a&gt; the original theme and applied the changes to the fork.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To do the changes I edited base.html on the theme and changed four instances of ‘|format(’ to be ‘.format(slug=’, so that CATEGORY_FEED_ATOM|format(category.slug) becomes ‘CATEGORY_FEED_ATOM.format(slug=category.slug)’.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After that, I created a /theme folder in the project folder, and downloaded the theme to it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the project folder under /content, I added an images folder and a file there for the logo of the site. I scaled it down to 25x25. I also added an image for the background of the header.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To pelicanconf.py I added the &lt;a href="https://github.com/molivier/nest"&gt;default configuration information for the theme&lt;/a&gt;. Among other customisations for various strings I pointed the site logo to ‘/images/logo.png’, including the path, and homepage header image specified as the filename only, ‘header-scaled.jpg’.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;That should be the base of the site. I committed those changes to the repo and test built the site locally with&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pelican content -d -s publishconf.py -t theme --autoreload
pelican --listen&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;… which you can now combine on Windows as&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pelican content -d -s publishconf.py -t theme --autoreload --listen&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Alternatively you can skip the second command for –listen and use a local server like Live Server in vscode to actually view the site.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;-d&lt;/code&gt; flag causes pelican to delete the content directory before rebuilding the site. The &lt;code&gt;--autoreload&lt;/code&gt; flag tells pelican to keep watch on the content folders and rebuild the site automatically when content is added, edited, or removed. As expected, that gave me a functioning site on http://localhost:8000 with the logo and background images I specified.&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;Special usage note: until the site is building reliably, just use&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;pelican content -d -s publishconf.py -t theme&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;…so you can see the console errors in the build process.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now that the shell is working, I created a requirements.txt file of the working environment, both as a checkpoint myself and also so Netlify will be able to duplicate it, with the command &lt;code&gt;pip freeze &amp;gt; requirements.txt&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When I tested this originally, Netlify was deploying the site with Python 2.7 which was not at all working. So to specify the version of Python I was using locally, 3.8, per &lt;a href="https://docs.netlify.com/configure-builds/manage-dependencies/#python"&gt;the docs&lt;/a&gt; I created a runtime.txt file in the root of the project, and added &lt;strong&gt;3.8&lt;/strong&gt; to that file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After committing those changes to the repo, it’s ready to go. So I published it to GitHub with the desktop app. I left the repo set to private at this point.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="deploy-the-site-to-netlify"&gt;Deploy the site to Netlify&lt;/h2&gt;
&lt;p&gt;All that remains is to deploy the site with Netlify.&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;I logged in to Netlify and selected Sites &amp;gt; Add New Site &amp;gt; Import an existing project.&lt;/li&gt;
&lt;li&gt;On the next page, I clicked GitHub.
&lt;ul&gt;
&lt;li&gt;The first time I did this I needed to connect my Netlify account to my GitHub account by following the prompts.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Once GitHub and Netlify were connected, I did a search on my repos to find the one for the website, and selected it.&lt;/li&gt;
&lt;li&gt;On the next page:
&lt;ul&gt;
&lt;li&gt;on &lt;em&gt;branch to deploy&lt;/em&gt; I selected &lt;strong&gt;main&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;em&gt;base directory&lt;/em&gt; I left blank.&lt;/li&gt;
&lt;li&gt;The &lt;em&gt;build command&lt;/em&gt; is &lt;code&gt;pelican content -s publishconf.py -t theme&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The &lt;em&gt;publish directory&lt;/em&gt; is &lt;strong&gt;output&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;That’s it. I clicked on Deploy Site and awaited …&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;… the shell of my site was deployed to Netlify. Volia.&lt;/p&gt;
&lt;p&gt;After that all that remained was to re-direct my domain to point here, and configure the Let’s Encrypt certificate to enable HTTPS. This is available under the Netlify Site settings for the new site. Following the directions on the Netlify pages this change took me all of 4 minutes of editing on my DNS server, and the deployment of the SSL certificate was a couple of clicks and otherwise automatically done in a few minutes.&lt;/p&gt;
&lt;p&gt;And that’s it. After several years of stalling I have completed a reasonable starting point for a new static site version of the website and deployed it. Took me a couple of hours to figure it all out, and maybe 20 minutes start to finish for the final production version. Hope this helps.&lt;/p&gt;
&lt;hr/&gt;
&lt;h3 id="thanks"&gt;Thanks!&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://razcodes.dev/"&gt;Raz&lt;/a&gt;, for general direction &lt;a href="https://dev.to/razcodes/how-to-create-a-static-website-using-pelican-24he"&gt;here&lt;/a&gt; and &lt;a href="https://dev.to/razcodes/how-to-deploy-your-static-pelican-website-to-netlify-55d7"&gt;here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://frankcorso.dev/"&gt;Frank Corso&lt;/a&gt; for the general directions &lt;a href="https://frankcorso.dev/deploying-your-pelican-static-site-to-netlify.html"&gt;here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/mirajpatel19"&gt;Miraj Patel&lt;/a&gt; for the pointers to hack the theme so it would work with Pelican 4 &lt;a href="https://github.com/getpelican/pelican/issues/2489#issuecomment-472176621"&gt;here&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><category term="Development"></category><category term="Pelican"></category><category term="Python"></category><category term="Netlify"></category><category term="GitHub"></category></entry><entry><title>Building a learning log with Python</title><link href="/learning-log.html" rel="alternate"></link><published>2023-06-27T00:00:00-06:00</published><updated>2023-06-27T00:00:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2023-06-27:/learning-log.html</id><summary type="html">How I built my learning log exporter</summary><content type="html">&lt;p&gt;Since I started using &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt; and &lt;a href="https://edx.org"&gt;edX&lt;/a&gt; back in 2014, I’ve completed a lot of courses. I still have many more that I’d like to complete.&lt;/p&gt;
&lt;p&gt;Keeping a list of these was easy enough with bookmarks. But then I came across a page on the website of Sébastien Lavoie, &lt;a href="https://www.sglavoie.com/posts/2022/06/18/what-it-took-to-propel-a-career-in-tech-in-five-years/"&gt;What it took to propel a career in tech in five years&lt;/a&gt;. Sébastien and I both attended the University of London Bachelor of Computer Science programme, and I thought his listing of what education and learnings he had completed was a great idea. Not only that, but Sébastien’s site and my own are both based in &lt;a href="https://getpelican.com"&gt;Pelican&lt;/a&gt; … so basically I decided to fork his idea to list all my learnings in a spreadsheet and write some code to convert that to markdown. (… one day I should look into his code and update my own. :-) )&lt;/p&gt;
&lt;p&gt;There is a lot more work that I want to do on this, especially before I post the code on GitHub. But the output so far is giving me what I wanted, separate lists of &lt;a href="/learning-queue.html"&gt;queued learning&lt;/a&gt;, &lt;a href="/learning-in-progress.html"&gt;in progress learning&lt;/a&gt;, and &lt;a href="/learning-completed.html"&gt;completed learning&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks for the inspiration Sébastien.&lt;/p&gt;</content><category term="lifelong learning"></category><category term="learning"></category><category term="python"></category></entry><entry><title>Add to Pelican - Sitemap and Robots.txt</title><link href="/add-sitemap-and-robots-to-pelican.html" rel="alternate"></link><published>2022-09-11T00:00:00-06:00</published><updated>2022-09-11T00:00:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2022-09-11:/add-sitemap-and-robots-to-pelican.html</id><summary type="html">–</summary><content type="html">&lt;p&gt;Finally with some more time on my hands I fixed up the last bit of the site migration from Wordpress to Pelican: adding the sitemap and robots.txt file.&lt;/p&gt;
&lt;p&gt;The robots.txt file was easy, as this is a static file in the first place. Just create the file in /content/extra and on the next build it will be available in the output.&lt;/p&gt;
&lt;p&gt;The sitemap is a bit more involved. Fortunately, there’s &lt;a href="https://github.com/pelican-plugins/sitemap"&gt;a plugin for that&lt;/a&gt;.&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;Add the sitemap plugin to your environment.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;python -m pip install pelican-sitemap&lt;/code&gt;&lt;/pre&gt;
&lt;ol start="2" type="1"&gt;
&lt;li&gt;Update your requirements.txt so the deployments to other environments, like Netlify when this is published, also add the plugin.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;pip freeze &amp;gt; requirements.txt&lt;/code&gt;&lt;/pre&gt;
&lt;ol start="3" type="1"&gt;
&lt;li&gt;Add the configuration of the plugin to pelicanconf.py file.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;    SITEMAP = {
    "format": "xml",
    "priorities": {
        "articles": 0.5,
        "indexes": 0.5,
        "pages": 0.5
    },
    "changefreqs": {
        "articles": "monthly",
        "indexes": "daily",
        "pages": "monthly"
    },
    "exclude": ["tag/", "category/", "author/"]
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And … that’s that. Super easy. Pelican is great.&lt;/p&gt;</content><category term="Development"></category><category term="Pelican"></category><category term="Python"></category><category term="Netlify"></category><category term="GitHub"></category><category term="Sitemap"></category><category term="Pelican Plugins"></category></entry><entry><title>Email Sieve Filtering with Simplelogin</title><link href="/sieve-filtering-with-simplelogin.html" rel="alternate"></link><published>2022-09-10T00:00:00-06:00</published><updated>2022-09-10T00:00:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2022-09-10:/sieve-filtering-with-simplelogin.html</id><summary type="html">–</summary><content type="html">&lt;p&gt;Recently I started using &lt;a href="https://simplelogin.io"&gt;Simplelogin&lt;/a&gt;. A wonderful service, it lets you create temporary email addresses and disable or delete them when you don’t want them anymore.&lt;/p&gt;
&lt;p&gt;I also get to redirect all my domain email through there so I can use throwaway email addresses with my own &lt;span class="citation" data-cites="lazaruk.com"&gt;@lazaruk.com&lt;/span&gt; domain.&lt;/p&gt;
&lt;p&gt;But on the downside, once I turned it on, all my email filters broke. Most of them were based on sender email addresses or domains in the SMTP header &lt;em&gt;from&lt;/em&gt; field, and with Simplelogin intercepting all the emails the addresses all changed and the domain for all email reaching me is now simplelogin.co.&lt;/p&gt;
&lt;p&gt;I’ve had the same email address for 25 years, and I have no intention of disabling it. So for those spammers that are sending to my main address I need to filter their mail after Simplelogin has forwarded it.&lt;/p&gt;
&lt;p&gt;This gave me the reason to finally figure out the &lt;a href="http://sieve.info/"&gt;Sieve&lt;/a&gt; email filtering that my mail service provider has.&lt;/p&gt;
&lt;p&gt;In the end I was able to work out three filters: one for the name that the sender included in their email, one for their original &lt;em&gt;from&lt;/em&gt; address, and another for the &lt;em&gt;Message-ID&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;To-Do&lt;/strong&gt;: I’m sure there are too many commands in the require statements. I still need to go through those and reduce them to the minimum required.&lt;/p&gt;
&lt;h3 id="name"&gt;Name&lt;/h3&gt;
&lt;p&gt;By far the easiest to implement, probably the most useful for filtering people that I know, and also the least likely to be useful for filtering spammers. Spammers will easily change the “name” that they appear to send their email from. On the other hand, my friends “Bob McGoodGuy” and “Alice SeemsFriendly” always configure their email accounts to send their name as the &lt;em&gt;from&lt;/em&gt; field.&lt;/p&gt;
&lt;p&gt;So to file emails from my friends, I use this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;require ["include", "environment", "variables", "relational", "comparator-i;ascii-numeric"];
require ["fileinto"];

if allof (address :all :comparator "i;unicode-casemap" :contains "From" ["Bob McGoodGuy", "Alice SeemsFriendly"]) {
    fileinto "Mail from friends";
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;While to reject emails from “Eve Real-Person”, who just won’t leave me alone, this does the trick:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;require ["include", "environment", "variables", "relational", "comparator-i;ascii-numeric"];
require ["reject"];

if allof (address :all :comparator "i;unicode-casemap" :contains "From" "Eve Real-Person") {
    reject "550 5.1.1: Recipient address rejected: Address does not exist";
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="from-address"&gt;From: Address&lt;/h3&gt;
&lt;p&gt;Now some spammers will fiddle with their &lt;em&gt;from&lt;/em&gt; name, but leave the email address they are sending from alone. Also, this filter works for catching those distribution lists that are not respecting unsubscribe requests. They often send from the same addresses or domains and so are easy to filter. It can also be used to reject entire domains.&lt;/p&gt;
&lt;p&gt;But as I noted above, the &lt;em&gt;from&lt;/em&gt; field is always changed by Simplelogin. You can set it up so that the “name” portion is retained and still comes through in the &lt;em&gt;from&lt;/em&gt; field. But the address is always changed.&lt;/p&gt;
&lt;p&gt;To resolve this, I configured Simplelogin to include to original sender in the email headers (just a click in their settings). And now I just have to have my sieve filter scan the &lt;em&gt;X-Simplelogin-Envelope-From&lt;/em&gt; field in the header and compare the original name and email address information with those that I want to filter.&lt;/p&gt;
&lt;p&gt;All this also has the nice effect of surviving and functioning if I choose to change the way Simplelogin presents the original sender name to me. There are a few options, but changing them won’t break these sieve filters.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;require ["include", "environment", "variables", "relational", "comparator-i;ascii-numeric"];
require ["imap4flags", "reject"];

if anyof (header :is "X-Simplelogin-Envelope-From" ["daily-list.ext", "newsletter@daily-list.ext", "idiot06@yahoo.ca", "Spammer McSpammyPants"]) {
    reject "550 5.1.1: Recipient address rejected: Address does not exist";
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="message-id"&gt;Message-ID&lt;/h3&gt;
&lt;p&gt;The most complicated so far is for those spammers that change the name and email domain in the header &lt;em&gt;from&lt;/em&gt; field. This, of course, is most of them.&lt;/p&gt;
&lt;p&gt;Now I’m sure this will be an evolving battle.&lt;/p&gt;
&lt;p&gt;Even if their names and domains are forged, they still need to send the emails from somewhere. And those spammers that are concerned about not wasting their time and resources will put in legitimate addresses to catch bouncebacks from mailboxes that no longer exist. That way when they receive a “550” error that my mailbox doesn’t exist they stop sending mail to that address.&lt;/p&gt;
&lt;p&gt;I know that this field is set by the spammers so they can technically forge it too, but right now the &lt;em&gt;Message-ID&lt;/em&gt; field is giving me enough to filter them with.&lt;/p&gt;
&lt;p&gt;Checking into the headers of the recent batches of spam, I noted they were coming from a few specific domains. So I added a filter to scan the &lt;em&gt;Message-ID&lt;/em&gt; field and trigger if those domains are found.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;require ["include", "environment", "variables", "relational", "comparator-i;ascii-numeric", "imap4flags", "reject"];

if anyof (header :contains "Message-Id" ["@spammer-domain.com", "@alter.spammers.co", "@another.spammer.net"]) {
    reject "550 5.1.1: Recipient address rejected: Address does not exist";
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And voila. Regardless of the name and email address that the spammer uses, this does the job in rejecting messages that include those domains in the &lt;em&gt;Message-ID&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;So for so good!&lt;/p&gt;</content><category term="Note to Self"></category><category term="sieve filtering"></category><category term="simplelogin"></category></entry><entry><title>Remember to Disable Caching</title><link href="/disable-caching.html" rel="alternate"></link><published>2022-09-02T00:00:00-06:00</published><updated>2022-09-02T00:00:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2022-09-02:/disable-caching.html</id><summary type="html">–</summary><content type="html">&lt;p&gt;Remember when doing site development work to disable local caching in the browser dev tools.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Disable caching on the browser when doing site development" src="/images/devtools.png"/&gt;&lt;figcaption aria-hidden="true"&gt;Disable caching on the browser when doing site development&lt;/figcaption&gt;
&lt;/figure&gt;</content><category term="Note to Self"></category><category term="caching"></category></entry><entry><title>Fixing my Pelican to display images</title><link href="/fixing-pelican-to-show-images.html" rel="alternate"></link><published>2022-09-02T00:00:00-06:00</published><updated>2022-09-02T00:00:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2022-09-02:/fixing-pelican-to-show-images.html</id><summary type="html">–</summary><content type="html">&lt;p&gt;I found that the Pelican site theme I was using was automatically expanding images to 100% width, which I didn’t want to have. I also wanted to use captions on my images.&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a href="https://www.joelotz.com/blog/2021/use-pandoc-markdown-in-pelican.html"&gt;Joe Lotz&lt;/a&gt; I was able to sort this out.&lt;/p&gt;
&lt;p&gt;This involved switching from the Pelican provided &lt;a href="https://python-markdown.github.io/"&gt;Python Markdown&lt;/a&gt; to &lt;a href="https://garrettgman.github.io/rmarkdown/authoring_pandoc_markdown.html"&gt;Pandoc Markdown&lt;/a&gt;. This adds a whole bunch more Markdown functionality to the site.&lt;/p&gt;
&lt;ol type="1"&gt;
&lt;li&gt;Add Pandoc and the Pelican Pandoc reader to your environment.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;python -m pip install pandoc
python -m pip install pelican-pandoc-reader&lt;/code&gt;&lt;/pre&gt;
&lt;ol start="2" type="1"&gt;
&lt;li&gt;Update your requirements.txt so the deployments to other environments, like Netlify when this is published, also do this.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;pip freeze &amp;gt; requirements.txt&lt;/code&gt;&lt;/pre&gt;
&lt;ol start="3" type="1"&gt;
&lt;li&gt;I wanted to extend the site CSS to use my own CSS file. But I also wanted to not make a lot of changes to the source CSS of the theme if possible. So I created a new CSS file under /theme/static/css and then updated /theme/templates/base.html and added my css file in last. I also had to edit the pelicanconf.py file and change the line &lt;code&gt;NEST_CSS_MINIFY = True&lt;/code&gt; to &lt;code&gt;NEST_CSS_MINIFY = False&lt;/code&gt;; without this change the minified css file is used instead and my custom css is ignored.&lt;/li&gt;
&lt;li&gt;Now I was able to comment out the &lt;code&gt;width: 100%&lt;/code&gt; and &lt;code&gt;height: 100%&lt;/code&gt; from nest.css, and add the captioning CSS that I wanted to use to lazaruk.css.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This also served as a good reminder that css settings for images override the settings on individual images. Because I wanted to use the individual settings to define image size I needed comment those out of the css completely.&lt;/p&gt;</content><category term="Development"></category><category term="Pelican"></category><category term="Python"></category><category term="Netlify"></category><category term="GitHub"></category><category term="Pandoc"></category></entry><entry><title>Evidence for Evolution</title><link href="/papers-showing-evidence-for-evolution.html" rel="alternate"></link><published>2020-09-02T00:00:00-06:00</published><updated>2022-08-21T00:00:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2020-09-02:/papers-showing-evidence-for-evolution.html</id><summary type="html">A collection of scientific papers that together provide more evidence for biological evolution than one person should really need</summary><content type="html">&lt;p&gt;Back in previous years I used to do a lot of arguing on Twitter about evolution. It was fun for a time.&lt;/p&gt;
&lt;p&gt;When I discovered &lt;a href="https://www.coursera.org"&gt;Coursera&lt;/a&gt; I also found a wonderful course called &lt;a href="https://www.coursera.org/learn/genetics-evolution"&gt;Introduction to Genetics and Evolution&lt;/a&gt;, taught by the wonderful Dr. Mohamed Noor from Duke University. I thought this would be a great course to help me get some more ammunition for my arguments about evolution.&lt;/p&gt;
&lt;p&gt;But instead what I found was that I had really missed learning. So eventually I enrolled in another course, &lt;a href="https://www.coursera.org/learn/papers-molecular-genetics"&gt;Classical Papers in Molecular Genetics&lt;/a&gt; by Dominique Belin of the University of Geneva.&lt;/p&gt;
&lt;p&gt;(This course really knocked me on my butt. It’s utterly amazing what people were able to hypothesise, isolate, discover, and document back before they even were certain what DNA was even composed of. They were mapping exact segments of DNA before anyone had even seen DNA. Incredible.)&lt;/p&gt;
&lt;p&gt;From the readings of that course I put together this list of papers that I would send to evolution deniers, or those who would say there was no evidence for evolution. I’m sure there were more at one point so I guess I’ll have to revisit that course and gather the papers up again.&lt;/p&gt;
&lt;hr/&gt;
&lt;ol type="1"&gt;
&lt;li&gt;&lt;p&gt;Paper exploring a possible hereditary, genetic cause of disease E. Garrod, The Incidence of Alkaptonuria: A Study in Chemical Individuality, Lancet vol 2, 1616-20 (1902). &lt;a href=""&gt;http://www.esp.org/foundations/genetics/classical/ag-02.pdf&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;1944 paper showing that genetic heritability has a chemical foundation and that DNA is likely the carrier Avery et al., Studies on the chemical nature of the substance inducing transformation of pneumococcal types, J.Exp.Med. 79, 137-158 (1944). &lt;a href=""&gt;http://jem.rupress.org/content/79/2/137.full.pdf+html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;1953 paper showing the first determinations of the structure of DNA. &lt;a href=""&gt;http://www.nature.com/nature/dna50/watsoncrick.pdf&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;1943 paper showing that specific beneficial mutations can be isolated and duplicated in a population, indicating such mutations are not wholly random. S.E. Luria &amp;amp; M. Delbrück. Mutations of bacteria from virus sensitivity to virus resistance. Genetics 28, 491-511 (1943). &lt;a href=""&gt;http://www.genetics.org/content/28/6/491.full.pdf+html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Seymour Benzer’s work in mutating specific sections of DNA, controlling inherited changes. &lt;a href=""&gt;http://www.pnas.org/content/47/3/403.full.pdf&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;</content><category term="Evolution"></category><category term="Coursera"></category><category term="Twitter"></category></entry><entry><title>PowerPoint Wrapping In The Middle of a Word</title><link href="/powerpoint-words-wrapping.html" rel="alternate"></link><published>2022-08-21T00:00:00-06:00</published><updated>2022-08-21T00:00:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2022-08-21:/powerpoint-words-wrapping.html</id><summary type="html">How to stop Microsoft PowerPoint from wrapping words in the middle of a word</summary><content type="html">&lt;p&gt;I had a PowerPoint document that I inherited where the text boxes were allowing words to be split in the middle of the word. Turns out the solution, copied/pasted below, was this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Your presentation was edited at one time on a computer running an oriental language. When that happened, an obscure PowerPoint setting got applied to it. If it’s just a few placeholders that are affected, here’s how to fix it:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;ol type="1"&gt;
&lt;li&gt;Choose File&amp;gt;Options&amp;gt;Language. In the Office authoring languages and proofing section, click Add a Language.&lt;/li&gt;
&lt;li&gt;Choose an Asian language (Chinese, Japanese, Korean all will work). OK out and restart all Office programs.&lt;/li&gt;
&lt;li&gt;Open your deck in PowerPoint.&lt;/li&gt;
&lt;li&gt;Select the text in an affected text box or text placeholder.&lt;/li&gt;
&lt;li&gt;Open the Home&amp;gt;Paragraph dialog and click on the Asian Typography tab.&lt;/li&gt;
&lt;li&gt;Uncheck the option for Allow Latin text to wrap in the middle of a Word. OK out.&lt;/li&gt;
&lt;li&gt;Repeat steps 4 to 6 for all other affected text boxes and text placeholders.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;If the presentation is large and the problem is widespread, take an alternate approach:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;ol type="1"&gt;
&lt;li&gt;Use File&amp;gt;Save As and change the Save as type to PowerPoint XML Presentation (*.xml).&lt;/li&gt;
&lt;li&gt;Open the XML file in NotePad&lt;/li&gt;
&lt;li&gt;Choose Edit&amp;gt;Replace.&lt;/li&gt;
&lt;li&gt;In the Find what field, type latinBreak=“1”.&lt;/li&gt;
&lt;li&gt;In the Replace with field, type latinBreak-“0”&lt;/li&gt;
&lt;li&gt;Choose Replace All.&lt;/li&gt;
&lt;li&gt;Save the file and close NotePad.&lt;/li&gt;
&lt;li&gt;Open PowerPoint and use File&amp;gt;Open to find and reopen the XML version. Resave in the normal PowerPoint pptx format. All English text will now break normally.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;Source: &lt;a href="https://answers.microsoft.com/en-us/msoffice/forum/all/powerpoint-text-box-issue-how-to-stop-text/9f574574-d287-4394-86d9-1c44d667098f"&gt;PowerPoint text box issue: how to stop text splitting in the middle of words in a text box MS PowerPoint 365 plz i need answer&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;</content><category term="note to self"></category><category term="PowerPoint"></category></entry><entry><title>Problems with BOINC</title><link href="/my-problems-with-boinc.html" rel="alternate"></link><published>2022-08-19T08:59:00-06:00</published><updated>2022-08-19T08:59:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2022-08-19:/my-problems-with-boinc.html</id><summary type="html">Solving a problem with getting BOINC and World Community Grid to download new work to me</summary><content type="html">&lt;p&gt;I’m a long time user of &lt;a href="https://boinc.berkeley.edu/"&gt;BOINC&lt;/a&gt;. In fact I was an early user of the old SETI@Home project before BOINC was even established.&lt;/p&gt;
&lt;p&gt;Over the years I’ve tried some project managers with BOINC, starting with &lt;a href="http://www.gridrepublic.org/"&gt;GridRepublic&lt;/a&gt;, and then moving to &lt;a href="https://www.worldcommunitygrid.org/"&gt;World Community Grid&lt;/a&gt; when I joined IBM in 2005.&lt;/p&gt;
&lt;p&gt;A few years ago it seemed to me that GridRepublic was no longer being maintained and so I dabbled with &lt;a href="https://scienceunited.org/"&gt;ScienceUnited&lt;/a&gt; as well.&lt;/p&gt;
&lt;p&gt;But in the end I didn’t like the strain that ScienceUnited was putting on my laptop, and I felt that I had to spend far too much time tweaking and monitoring it so that it completed the work units on time. So I decided to switch back to World Community Grid where I could easily specify limits that I was comfortable with and knew they would be respected.&lt;/p&gt;
&lt;p&gt;At the beginning of 2022, IBM transferred the WCG project to Krembil, and as part of the migration all work was stopped. When the project came back online I wasn’t getting new work units.&lt;/p&gt;
&lt;p&gt;So today I finally took the time to look into this.&lt;/p&gt;
&lt;p&gt;Removing and re-adding the WCG project from BOINC didn’t solve the problem. In fact, I was unable to re-add the project at all to my BOINC manager; I just got errors when trying to do so. So I tried removing the application entirely and re-installing from the version downloaded from the BOINC website, and from the WCG website. Neither of those solved the problem. I was sometimes able to add the project to the BOINC manager, and sometimes not. But even when it did add I was unable to get any work units to transfer.&lt;/p&gt;
&lt;p&gt;Performing a scrub of the program files directories and the registry didn’t move things forward for me either.&lt;/p&gt;
&lt;p&gt;But finally, installing the BOINC client as downloaded from ScienceUnited and then using it to attach to World Community Grid worked. The project attached and new work units are being downloaded in a reasonable timeframe.&lt;/p&gt;
&lt;p&gt;Odd. But it works.&lt;/p&gt;</content><category term="note to self"></category><category term="BOINC"></category><category term="GridRepublic"></category><category term="World Community Grid"></category><category term="ScienceUnited"></category></entry><entry><title>Updating Anaconda Navigator</title><link href="/updating-anaconda-navigator.html" rel="alternate"></link><published>2021-03-25T00:00:00-06:00</published><updated>2021-03-25T00:00:00-06:00</updated><author><name>Brad Lazaruk</name></author><id>tag:None,2021-03-25:/updating-anaconda-navigator.html</id><summary type="html">Updating Anaconda Navigator</summary><content type="html">&lt;p&gt;For whatever reason my installations of Anaconda Navigator always refuse to update through the GUI. No matter how many times I click the Yes to upgrade, nothing happens.&lt;/p&gt;
&lt;p&gt;So finally I found 15 seconds where I was both tired of this situation and had the clarity of thought to do something about it.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;conda deactivate
conda update anaconda-navigator&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Problem solved. Sigh.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Source: &lt;a href="https://docs.anaconda.com/anaconda/navigator/update-navigator/"&gt;Updating Navigator — Anaconda documentation&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;</content><category term="note to self"></category><category term="Anaconda"></category><category term="conda"></category></entry></feed>