tag:blogger.com,1999:blog-80861500391122453652024-03-13T10:27:58.227-04:00mock.techgeek by birth. linux by choice.mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comBlogger208125tag:blogger.com,1999:blog-8086150039112245365.post-21391921976324801222023-07-12T15:50:00.000-04:002023-07-12T15:50:02.940-04:00Revenge of the NanoIt's funny. I thought I had removed <span style="font-family: inherit;">nano</span> on my main system. Yet today, I typed <span style="font-family: courier;"><b>sudo visudo</b></span> to check the syntax of the file, and the file opened in <span style="font-family: inherit;">nano</span>. I was both confused and annoyed. I had removed <span style="font-family: inherit;">nano</span> from my system with extreme prejudice. (Ref: https://blog.mock.tech/2021/10/fedora-updates-remove-vim-default.html)<div><br /></div><div>Indeed <span style="font-family: courier;"><b>/usr/bin/nano</b></span> persisted. Someone in the <b>#fedora-social</b> suggested <span style="font-family: courier;"><b>rpm -qf `which nano`</b></span>. It was from Fedora 34. Somehow, the package was still installed and left the cruft of nano behind.</div><div><br /></div><div>So, with a swift <span style="font-family: courier;"><b>rpm -e $(rpm -e `which nano`)</b></span>, I finally swept away the last remnants of that horrid editor.</div><div><br /></div><div>Long live vim!</div>mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-49425464096106769752023-05-22T12:30:00.002-04:002023-05-25T13:36:32.508-04:00Chat Etiquette<p>At work last week on our intercompany daily update, a post was made discussing chat courtesy. The original message was to convey that instead of sending a greeting and waiting for a response, send with the greeting a question. So, instead of this:</p><p></p><blockquote>Joe: Hello.<br />Frank: ...?<br />Joe: How do I do this?<br />Frank: This is is how....</blockquote><p></p><p>This is preferred:</p><p></p><blockquote>Joe: Good morning, Frank. How do I do this?<br />Frank: This is how....</blockquote><p></p><p>The post received a load of responses. Many initially applauded the idea calling the first behavior a pet peeve. Many others countered with the opposite approach of perhaps a greeting and then asking if now is a good time for a question.</p><p>I happen to agree solely with the author's approach of asking the question along with the greeting. But I noticed that the answers did not take other factors into consideration. I believe these other factors are these:</p><ul style="text-align: left;"><li>Assumed/understood behaviors</li><li>Audience</li><li>Efficiency</li></ul><p>There are assumed behaviors of how the technology works. Chat or messaging is not equivalent to a phone call. Phone calls take more or complete attention to engage. Messaging was not designed to do that but to fill the gap of not interrupting someone's flow of work to get a response.</p><p>Messaging is not email, which has come to represent a document to be read and answered with a bit more time and attention put into it at a more convenient time. There is an implied delay with email in this culture almost to the point of considering it the same as snail mail.</p><p>Chat is a hybrid of these two: A more direct interaction than email without the complete interruption of a phone call (or video call). It's designed to be an efficient means of communicating.</p><p>The approach of the latter group in the above response pool, this is how they would prefer the messaging engagement to go:</p><p></p><blockquote>Joe: Good morning, Frank. Do you have a moment for a question?<br />Frank: Sure.<br />Joe: How do I do this?</blockquote><p></p><p>In this case, the question to ask a question is not only inefficient but also introduces the phone-call style interruption. Frank now has to take extra moments just to respond to the question to ask a question. But even when a question is posted in chat, there is assumed sometimes that there can be a delay.</p><p>Some of the responses included "ideas" of having a status of "unavailable," something which our messaging tool clearly has as a status indicator including a do not disturb option with even a place for text, e.g. "Busy until noon." Adding more to it would be redundant. I can also see when people are in meetings and not only that but when they are also presenting. The technology helps when the uncertainty of understanding of immediacy isn't obvious.</p><p>I think the audience also factors into this. With my team and more frequent conversation colleagues, I have no problem asking them messages even without a greeting. I would take a different approach with people I have never met or only have engaged a few times. Maybe a long time since the last interaction requires a greeting to renew the connection. There are different approaches to different people. I think the less familiar you are with the colleague, the more pleasantries.</p><p>Efficiency is the biggest factor as I see chat. If I can know what you want as soon as I see your message, the quicker I can respond. More than that, I'm less interrupted and definitely less derailed. There are some who just ping me with a greeting:</p><blockquote><p>Joe: Hello.<br /></p></blockquote><p>I'm in the zone. My brain is deep into some logic and needs to stay on track. Waiting for a response from me now requires my full attention. (Phone call style interrupting in effect.)</p><blockquote><p>Me: Yes?</p></blockquote><p>I switch back to my train of thought to not lose it. Anywhere from a few second to a few minutes later comes the actual question. Now comes my second derailment...and aggravation mainly because it could have happened like this:</p><p></p><blockquote>Joe: Hey, what's the name of the Python library we decided to use for the project?<br />Me: pandas</blockquote><p></p><p>That entire engagement took at most 10 seconds to process and answer. Maximum efficiency achieved! I'm still in the zone. And if I choose to engage more on the subject, I can.</p><p>The first approach might seem kind, but here is what you are really communicating to me:</p><p>Joe: Hello. <i>[I am more important than what you are doing so I need your full attention to me so I can ask even the simplest of questions.]</i><br />Me: Yes? <i>[If you had asked the question, we'd already be done with this. You are now being selfish.]</i><br /></p><p>I get that different people need more interaction and this one-line exchange seem rude. So, I think the best way to approach this is this way: <b>When you engage me in messaging, be efficient. Ask the question without having me respond or pull it out of you. It might feel rude, but it won't be. It will be efficient!</b></p><p><br /></p>mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-77167813799403046752023-03-15T09:17:00.002-04:002023-03-15T09:17:23.102-04:00Fedora and Radeon HDMI Sound Issues<p>I have recently moved my desktop system into a rack mount case and rearranged my office. There were a few changes I ended up making because the rack case I ordered is a little short on depth. I ended up replacing the Gigabyte ATX motherboard with Intel CPU to a mini-ITX board with an AMD CPU which fits better. I transferred the hard drives and everything was working just fine...except for sound.</p><p>I spent a good bit of time tracking this down. The audio devices were recognized, the sinks were all operational (I could see activity on the meter in the sound settings), but there was no actual audio through the TV which was my monitory. All this had worked with the same equipment under the Intel resgeme.</p><p>My searching online provided no real help. I had a friend from the Fedora IRC support channel check things for comparison. But we couldn't find any real differences after two days. Being still frustrated had me checking Google results again.</p><p>I had found this page and started to look it over this morning: <a href="https://bbs.archlinux.org/viewtopic.php?id=256989">https://bbs.archlinux.org/viewtopic.php?id=256989</a>. It got me thinking about Alsa configurations which are part of an older configuration possibly left over from upgrades. I had my friend check his <span style="font-family: courier; font-size: x-small;"><b>/etc/modprobe.d/alsa-base.conf</b></span> for what he had. He didn't. Mine had some options.</p><p><span style="color: #04ff00; font-family: courier;"><b>options snd-hda-intel model=generic</b></span></p><div>I commented that line out and rebooted. And that was the fix! Sound check was working again. Comment the options or remove the file for great justice!</div>mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-76804280557032367692023-02-28T09:37:00.121-05:002023-02-28T16:42:35.705-05:00Better Logging for the Best Sleep<p style="text-align: left;">I enjoy my sleep. An uninterrupted night after completing a coding project and having it deployed into a production environment is some of the best sleep I can have.</p><p style="text-align: left;">Being woken in the middle of the night because my code is failing in production and the support team not knowing the cause is something I have learned over the year to try to address long before my head hits the pillow. My logging should help them understand if the problem is really bad code or really something else such as a network problem or bad data. Well constructed logging can point the spotlight on the right place to look.</p><p style="text-align: left;">I was going through logs of some automation software at work trying to find a flow to the process. I will admit I did not know the package that well, so I was trying to gain an understanding reading through the logs. I've found using an application's logs to be helpful to understanding how it works without taking a class on the software. This got me thinking about how I log my own code. I've been writing log statements for years, but I know I could always improve my own logging skills. The following aspects are a few things I've learned over the years.</p><h3 style="text-align: left;">Logging is communication</h3><p style="text-align: left;">Relationships are always better with good communication. The clearer the communication, the better the relationship. Assumptions can be made when it comes to believing what the code is doing, and we all know what is said about assumptions. In fact, the logical flow one expects might actually be part of the problem which logging could reveal. Being explicit when logging to remove any guesswork will save so much time when troubleshooting. Log clearly and concisely. Get to the point.</p><div><br /></div><h3 style="text-align: left;">Understand the levels</h3><p style="text-align: left;">Logging generally has about five levels: Debug, Info, Warning, Error, and Critical. And most loggers allow for customizing these levels or even adding levels among these defaults. Knowing what goes into a general flow of knowledge when reading logs and what belongs at the debug level should be obvious, but it might take a little time to make those judgment calls. At the Info level, I normally want to give more of an overall stepping through the code at points which mark functionality so that a first pass of the logs can help me at least see where in the code it is failing. I will throw in more variables and values into my Debug level statements when I need to see beyond the obvious logic. Warnings are for giving notice of things to not do or things which could be done better. Errors should be obvious as are Critical responses.</p><h3 style="text-align: left;">Logging is documentation</h3><p style="text-align: left;">To be clear, logging does not replace documentation. It is a form of documentation. It goes hand-in-hand with documentation. Instead of explaining how the code functions, it shows how the process flows. It's a real-time walkthrough of the logical execution of the code. It can tell the story of what the program is doing while you watch it play out before you. If you consider it a part of the of the documentation, how you construct the statements might vary a little from what might seem obvious when in the middle of coding.</p><p style="text-align: left;">Another idea is to combine the documentation with the logging. Sometimes it is better to put longer explanations and suggestions for solving in the actual documentation and use custom codes in the logging to direct the support team to text that will give them a better understanding of the causes and outline the solutions to take.</p><h3 style="text-align: left;">Write for a larger audience</h3><p style="text-align: left;">Sawing logs is an expression defining heavy sleeping. But when someone in a support capacity who does not have an intimate knowledge of the code, what they have in the logs can be enough for them to know what is wrong or leave them confused even a little bit which will prompt a next level call to the development team and possibly the developer.</p><p style="text-align: left;">My approach to logging has always been to write it so that no one needs to call me in the middle of the night because they have reached a point where it cannot be solved by them. In most cases, other pieces in the system could be the cause and easily determined with clear logging. When certain common problems have been experiences, adjusting the logs to better pinpoint the place to check and even suggest a course of action can help keep notifications at bay.</p><h3 style="text-align: left;">Keep it safe</h3><p style="text-align: left;">Logging is generally put on a protected file system (or it should be) and/or ingested by a secure logging service, but logging credentials is generally unnecessary. Login ids should be enough to know which credentials are being used. Sometimes connection strings logged as a lump of information. Measures should be taken to mask passwords in those blocks of strings. I've seen functions built to parse that output before it's put out to mask the sensitive information. Knowing again the audience who will view the logs should also be considered for this.</p><p style="text-align: left;"><br /></p><p style="text-align: left;">I'm sure more could be said about logging. Clear and thorough logging can keep you sleeping when your code is being reviewed by a support team. Support teams can do their jobs more efficiently and effectively with skilled logging. Developers who will manage projects you leave behind will herald you wise. It should be every developer's goal to become a master at logging.</p>mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-52629008728247987322023-02-18T12:59:00.002-05:002023-02-18T12:59:28.339-05:00More Thought on Dell's Recent Battery PolicyAfter mulling over <a href="https://blog.mock.tech/2023/02/dell-now-follows-apples-business-model.html" target="_blank">the situation</a> for the past couple of days, I have considered another course of action if I want to keep purchasing Dell laptops: When I buy a new laptop, just add two replacement batteries to the cart to keep the life of the laptop going well past the five years they will support them.<div><br /></div><div>This does not mean I am remaining exclusively with Dell has been my practice. Extra batteries from Dell are three times the perfectly good third-party replacements found on Amazon. I will be doing a little more investigation into other companies like Lenovo and HP. If they allow for generic replacement batteries to be used without a BIOS block, then they are definitely a better investment.</div><div><br /></div><div>I did spend some time yesterday evening disassembling an official Dell battery (which was dead). I thought maybe I could either swap out the actual lithium-ion packs or extract whatever circuitry which identified the units as officially Dell. The batteries are not a something that can be simply disassembled. Neither of those theories were feasible.</div>mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-67149911041290363872023-02-16T09:56:00.003-05:002023-02-16T09:56:26.548-05:00Dell Now Follows Apple's Business Model<p>This is a sad day for me. I have been a big supporter of Dell computers for years. I have spent a lot of money over the years choosing Dell hardware including some PowerEdge servers. When a few batteries had started reaching the end of their lives, I went to Amazon to purchase replacements. This practice has extended the life of the laptops past their supported time.</p><p>But all this changed when purchasing new batteries from Amazon. The batteries are not official Dell batteries and are prohibited from charging because the BIOS does not allow it. I surf over to Dell's site to purchase an official battery, but they do not exist. I cannot get an official Dell battery from Dell. (There is the eBay option, but that's no guarantee of a <i>new</i> battery.)</p><p>This is the transcript from the technical support when I inquired about batteries and the policy:</p><p><br /></p><blockquote><p>Vidya S (2/16/2023, 8:48:44 AM): Welcome to Dell Out of Warranty Chat Support. My name is Vidya Sehgal.</p><p><br /></p><p>While I am checking the details, let me also inform you that your chat has landed to paid support queue. </p><p>Vidya S (2/16/2023, 8:49:01 AM): Greetings, Hope you are doing well today! </p><p>Vidya S (2/16/2023, 8:49:37 AM): To confirm, you are contacting us today in regards to the system service tag ******* ? </p><p>Mark (2/16/2023, 8:49:41 AM): Yes </p><p>Vidya S (2/16/2023, 8:50:35 AM): Thank you for confirming. </p><p>Vidya S (2/16/2023, 8:50:43 AM): I regret the inconvenience this issue has caused and assure you that I will try my best to resolve the issue to your satisfaction. </p><p>Mark (2/16/2023, 8:51:02 AM): I have purchased third-party batteries for this and other Dell laptops I own to extend their life. But for some reason, the BIOS no longer recognizes these batteries informing me to purchase official Dell batteries. I come ot the site to do that and cannot find official Dell batteries to purchase. </p><p>Mark (2/16/2023, 8:51:37 AM): Is there no way to get these other batteries to be accepted since Dell can no longer provide what they require? </p><p>Vidya S (2/16/2023, 8:51:38 AM): Okay! </p><p>Vidya S (2/16/2023, 8:52:33 AM): No! They won't work. </p><p>Mark (2/16/2023, 8:52:51 AM): And there is no provided batteries from Dell anymore? </p><p>Mark (2/16/2023, 8:53:13 AM): *are no </p><p>Vidya S (2/16/2023, 8:53:30 AM): Let me check the part availability. </p><p>Vidya S (2/16/2023, 8:54:38 AM): Part is not available. </p><p>Tanuj S (2/16/2023, 8:55:15 AM): Welcome to Dell Out of Warranty Chat Support. My name is Tanuj Sharma.</p><p><br /></p><p>While I am checking the details, let me also inform you that your chat has landed to paid support queue. </p><p>Tanuj S (2/16/2023, 8:55:29 AM): Greetings, Hope you are doing well today! </p><p>Tanuj S (2/16/2023, 8:55:45 AM): To confirm, you are contacting us today in regards to the system service tag ******* ? </p><p>Mark (2/16/2023, 8:56:09 AM): Yes </p><p>Tanuj S (2/16/2023, 8:56:26 AM): I can see you have mentioned issues with battery, correct ? </p><p>Mark (2/16/2023, 8:56:58 AM): Since Dell cannot provide the part and third-party batteries are not supported, I have no options to continue using my laptops other than power cord, correct? </p><p>Mark (2/16/2023, 8:58:26 AM): This seems like an Apple approach to business: Only allow use for the supported time and then force new purchases every few years. I'm not a fan of this. </p><p>Tanuj S (2/16/2023, 8:59:22 AM): Unfortunately the part is not available. It is not possible for us to procure parts after certain point of time as the technology advances, the old products gets obsolete from the market. </p><p>Tanuj S (2/16/2023, 9:00:39 AM): I understand how frustrating it is, but the parts can only be procured for 4-5 years of manufacturing as after that the system is considered as end of life. </p><p>Mark (2/16/2023, 9:01:13 AM): The option for me to procure parts is possible through Amazon, although they are not official Dell parts. They do work as I have tested them in the past. But the programming of the BIOS restricts it. At the very least, there should be a disclaimer to accept to proceed with the use of the non-Dell batteries. </p><p>Mark (2/16/2023, 9:01:33 AM): It not just frustrating, it's restrictive. </p><p>Tanuj S (2/16/2023, 9:04:00 AM): That is true. Every part is not compatible with the system. That is the reason parts goes obsolete as software and hardware products advances. </p><p><br /></p><p>Regarding BIOS, you can try to update the BIOS if it is not updated. </p><p>Mark (2/16/2023, 9:05:56 AM): I will try the BIOS update. but this is a real disappointment in Dell. </p><p>Mark (2/16/2023, 9:07:39 AM): If that fails, I am going to make a public post about this policy change as a warning to others who consider purchasing equipment from Dell and am going to look for another laptop provider who will support good equipment. </p><p>Tanuj S (2/16/2023, 9:08:26 AM): Unfortunately there is nothing we can do in this case. This is situation with all the products. We can not procure parts after a certain point of time. </p><p>Mark (2/16/2023, 9:09:12 AM): This is a sad moment for me. I've been a big Dell supporter for years. I have spend a LOT of money on laptops and other hardware. Knowing Dell will no long honor that loyalty means I need to find another place for it. </p><p>Tanuj S (2/16/2023, 9:10:58 AM): We really appreciate you being a loyal Dell customer however you also have to understand that the parts can not be procured for ever.</p><p>I wish there is something I can do for you. </p><p>Tanuj S (2/16/2023, 9:13:30 AM): Is there anything else I can assist you today ? </p><p>Mark (2/16/2023, 9:13:50 AM): I realize these laptops will not last forever, but their lives don't need to be truncated because Dell chooses to give up on them. There is a lot of tech out there outliving their expected life cycles with other options. I have extended the lives of these laptops already with third-party batteries, so it's possible. Having Dell cut that option off from customers is the change in all this. </p><p>Mark (2/16/2023, 9:13:56 AM): No, I guess not. </p><p>Mark (2/16/2023, 9:14:06 AM): Thanks for confirming all this for me. </p><p>Mark (2/16/2023, 9:14:43 AM): And if it can make a difference, please let them know about how this affects a former customer. </p><p>Mark (2/16/2023, 9:14:57 AM): ...how this affects a now former customer. </p><p>Tanuj S (2/16/2023, 9:15:48 AM): Thank you for choosing Dell and allowing us the opportunity to assist you. Have a wonderful day! </p><p>Mark (2/16/2023, 9:16:02 AM): You too.</p></blockquote><p><br /></p><p>At the very least, Dell, provide a legal disclaimer in your BIOS to shift the responsibility of potential problems to the customer. I would gladly accept the waiver knowing that the batteries could cause fires. To be honest, you cannot prevent your own batteries from not catching fire. Will you cover a house fire if your own official batteries overload and cause damage? (Maybe I need to read the fine print on the documentation more closely.)</p><p>I post this as knowledge before buying Dell equipment. If you do this, know that you will spend money for a limited life laptop, not because it cannot continue to live but because Dell will not allow it to continue to live.</p><p>One more thing: I <i>cannot</i> update the BIOS on these laptops because the BIOS has determined that being plugged into an outlet and a dead battery insufficient power requirement to allow the update. This has turned into a lose-lose scenario.</p><p>Very disappointed, Dell.</p>mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-17167663278902453782023-02-03T12:00:00.003-05:002023-02-08T09:40:01.644-05:00Bandheight<p>This quote still seems appropriate in so many places that I built this meme, yet I don't have it readily available. So, I'm posting it here for my future reference.</p><p>The source of this was Alex Albretch's guest appearance on <a href="https://www.tikibartv.com/" target="_blank">Tiki Bar TV</a> years ago when he and Kevin Rose were producing Diggnation. The quote is genius. You can find that episode linked below, which at this point is still online.</p><p><br></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhKiHC0ZVn1sH4fxE2wngUGMhLSSpuRrf6tQKFnoErKsXYK4EdSkJ1ZoLhFdRFNgOzSk8ilfz9DGUngZuMG9htAMrl_LOU6oWdDdeYQ1s0TWsOJPnqQaYRU1xo61Oja98iS_b3pd5u41JD72pgIHaSYOF6OtUlvmRB4jrukU_mdy6Dg-4-i622atNoFDA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="360" data-original-width="640" height="180" src="https://blogger.googleusercontent.com/img/a/AVvXsEhKiHC0ZVn1sH4fxE2wngUGMhLSSpuRrf6tQKFnoErKsXYK4EdSkJ1ZoLhFdRFNgOzSk8ilfz9DGUngZuMG9htAMrl_LOU6oWdDdeYQ1s0TWsOJPnqQaYRU1xo61Oja98iS_b3pd5u41JD72pgIHaSYOF6OtUlvmRB4jrukU_mdy6Dg-4-i622atNoFDA" width="320"></a></div><br><br><p></p><p>I actually made a t-shirt with this quote.</p><p>Source video: <a href="https://vimeo.com/124379530">https://vimeo.com/124379530</a></p>mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-38181475598843937512023-01-12T09:00:00.001-05:002023-01-12T09:00:00.226-05:00Feature Requests for YouVersionI love the YouVersion app! It's very rich and features and has many options for reading and examining God's Word.<div><br></div><div>I like the options for many reading plans and guides within the app. I like the notification system built in for those guides as well. But most importantly, I like the ability to cross reference different transitions of the Bible quickly and in one spot. You can even do parallel comparisons which is very convenient!</div><div><br></div><div>There are a few things I wish were available within the app.</div><div><br></div><div>The first is something I have found I need on a regular basis. There are times when I'm reading through certain passages on my own for my daily consumption and then will click on a link for a reference in a study guide or switch to a different place when following along with my pastor on Sundays. When I make that change, it treats that location as the last location where I want to pick back up when I resume reading. It would be nice to have a way to hold a reference without having to bookmark it.</div><div><br></div><div>For example, I'm reading through the Psalms, and I stopped at Psalm 61. Then I go listen to my pastor who is teaching from Romans 4. I would like for a way to be available to hold the Psalm 61 position to easily flip back and resume my progress readings which sometimes are not daily. Having a few of these resume points would be nice.</div><div><br></div><div>I was able to find <a href="https://sites.google.com/view/mybibletracker/home?pli=1">this app</a> which fills the gap for the above desired feature. It's not exactly what I would have in mind for a built-in feature for YouVersion, but it does help me keep track of what I have read and where I need to continue.</div><div><br></div><div>Another feature that they offer is the ability to take notes for a verse or a block of verses. These notes usually tied to a specific translation. What I have found is that it would be nice to have a study feature that allows me to take notes separately from verses yet tie back to those verses even across transitions. Currently, the notes are anchored within the content. What I would ask is for is a way to have a section in the app (maybe called "Studes") for notes that links to the verses. The notes would be grouped under a study with links to verses. This is especially helpful when the study is topical.</div><div><br></div><div>I did reach out to YouVersion asking about contributing custom studies to their application. It's not exactly what I had intended in order to accomplish some of the functionality, but it might be worth looking into for creating simple reading plans like I would choose.</div>mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-50712781709246161492023-01-05T07:28:00.001-05:002023-01-05T07:29:46.971-05:00Traded LIFX for SengledI finally replaced all the LIFX bulbs in my house with <a href="https://us.sengled.com/">Sengled</a> bulbs.<div><br></div><div>After going through yet another change in my networking, getting the LIFX bulbs to connect to a new network was frustrating beyond measure. Even though I can reset the bulbs to choose a new network, that process proved to not be simple. Several bulbs I reset several times without getting any connectivity to the new network. Factor in the changes to the application they made a couple of years ago reducing it to something very non-intuitive, this was the last straw.</div><div><br></div><div>On an interesting note, I was going back through the drafts of my blog and found an unpublished post from one year ago in December stating a list of frustrations with LIFX.</div><div><br></div><div>I had actually purchased the Sengled bulbs earlier last year with the intent of eventually making the sweeping swap. I already had at least one bulb in the mix when I had decided to test one when I lost my LIFX bulb.</div><div><br></div><div>I have been pleased with the bulbs so far with a few exceptions. The Sengled bulbs connected to the network very easily. The app is simple and straightforward, much like LIFX was when I first started using them.</div><div><br></div><div>One thing I have noticed is that the bulbs tend to be a little bit brighter at the lowest setting. This becomes any annoying feature when I try to sleep the lights. It changes the color to a warm setting which is very bright compared to the LIFX bulbs. Sleeping the lights should just dim the lights over a 30-minute period rather than changing the color by default. This would be something I would suggest as a feature change to Sengled's firmware/software. (I am also going to try using a Kasa bulb in my master bedroom to see how they handle this behavior.)</div><div><br></div><div>Overall, I've been very pleased with Sengled. They have some very unique products which I think should be setting standards on the market.</div><div><br></div><div>Note: I did voice my frustrations on Twitter. And I got a response from Dav Kavanagh who is LIFX Head of Experience.</div><div><br></div><div><a href="https://twitter.com/12kav/status/1606198944303759360?t=yxtcfEY4HG2m7egqzJ4daA&s=19">https://twitter.com/12kav/status/1606198944303759360?t=yxtcfEY4HG2m7egqzJ4daA&s=19</a></div>mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-78725790144245111402021-11-06T10:57:00.003-04:002021-11-06T10:57:34.838-04:00Tripping up to Fedora 35<p>I installed <a href="https://getfedora.org/" target="_blank">Fedora 35</a> on my desktop system this past week following the <a href="https://fedoramagazine.org/announcing-fedora-35/" target="_blank">release this week</a>. I thought it would be a benign activity since I've been <span style="font-family: courier;"><b>dnf system-upgrade</b></span> in place for years now without much ado. Things changed this time,though.</p><p>The change to <a href="https://fedoraproject.org/wiki/Changes/WirePlumber" target="_blank">wireplumber</a> for this release had some side effects regarding my HDMI sound output. I have two monitors and one TV all for my displays. I don't have a dedicated sound card in my machine, so I use audio through the output via Intel or Radeon HDMI output. This had been working perfectly in Fedora 34. The upgrade, however, seemed to bork the sound settings completely. My choice in the Setting control panel kept switching to Dummy Output. When I tried to test my speakers, there was no sound. Then when I tried to switch the device to one of the listed HDMI options, the ability to test speakers didn't include speakers to click.</p><p>Of course, I hit the <a href="https://web.libera.chat/?channels=#fedora" target="_blank">IRC support channel</a> and posed my dilemma. <b>ledeni</b> walked me through a few things to try to get more information about what might be missing or misconfigured. After all the effort, I still didn't have sound. One of the things suggested was this addition and a post reboot:</p><p><span style="color: #04ff00; font-family: courier; font-size: x-small;"><b>$ echo "options snd-hda-intel model=generic" | sudo tee -a /etc/modprobe.d/alsa-base.conf</b></span></p><p>Although it didn't work at the time, it remains in effect. And it might still be part of the solution, but what I ended up doing this morning was the following:</p><p><span style="color: #04ff00; font-family: courier; font-size: x-small;"><b>$ sudo dnf swap pulseaudio pipewire-media-session --allowerasing<br />$ sudo dnf swap pipewire-media-session wireplumber</b></span></p><p>Then rebooted to find devices discovered. I found the HDMI for the TV and tested the sound successfully.</p><p>I'm documenting this for anyone else who might have similar problems. Oh, there is a suggested default answer as the first attempt to get sound working. It is this:</p><p><b><span style="color: #04ff00; font-family: courier; font-size: x-small;">$ systemctl --user enable --now wireplumber</span></b></p><p>That is also running and active as part of my working configuration.</p><p><br /></p>mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-43109326499192255042021-10-06T07:43:00.003-04:002023-07-12T15:39:56.846-04:00Fedora Updates Remove vim-default-editor Package<p>I just recently ran an overdue update on my desktop system. What I didn't expect was for a simple <b><span style="font-family: courier;">dnf upgrade -y</span> </b>to uninstall the <span style="font-family: courier;"><b>vim-default-editor</b></span> which is now an intentional choice over that trash editor nano. I consider this action a bug.</p><p>Nevertheless, these are the methods I have employed to prevent this shameful deed from happening again. I have added a <span style="font-family: courier;"><b>vim.conf </b></span>to the <span style="font-family: courier;"><b>/etc/dnf/protected.d</b></span> directory with the following contents:</p><p><span style="color: #04ff00;"><span style="font-family: courier;">───────┬───────────────────────────────────────────────<br /></span><span style="font-family: courier;"> │ <b>File: /etc/dnf/protected.d/vim.conf</b><br /></span><span style="font-family: courier;">───────┼───────────────────────────────────────────────<br /></span><span style="font-family: courier;"> 1 │ vim-common<br /></span><span style="font-family: courier;"> 2 │ vim-powerline<br /></span><span style="font-family: courier;"> 3 │ vim-minimal<br /></span><span style="font-family: courier;"> 4 │ vim-enhanced<br /></span><span style="font-family: courier;"> 5 │ vim-default-editor<br /></span><span style="font-family: courier;">───────┴───────────────────────────────────────────────</span></span></p><p>This won't prevent <span style="font-family: courier;"><b>nano</b></span> or <span style="font-family: courier;"><b>nano-default-editor</b></span> from being reinstalled. So, I added this line in my <span style="font-family: courier;"><b>/etc/dnf/dnf.conf</b></span> file:</p><p><span style="color: #04ff00; font-family: courier;"><b>excludepkgs=nano-default-editor,nano</b></span></p><div>Now, dnf will totally ignore those nano packages from visibility. Safe and clean system!</div>mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-27259094161292094822021-09-06T15:29:00.001-04:002021-09-06T15:30:04.993-04:00Netgear Wireless Routers - The Saga Ends<p dir="ltr">I have been a happy Netgear networking device consumer for a long time. Their small wired eight port hubs have been solid for years. I will even admit to being pleases with their wireless routers too.</p>
<p dir="ltr">But with a change in my home networking design, I really only use either routers as access points rather than firewalls and DHCP servers. My last device purchase was a dedicated access point (WAC-124). I have offloaded those other services to a dedicated appliance for firewall operations. Since Netgear's wireless router software has an access point mode, all should work well.</p>
<p dir="ltr">This all gets complicated by Netgear attempting to make their router management centralized...to themselves. They now require an account at <a href="http://netgear.com">netgear.com</a> to access the admin interface of your home router. I'm sure this is under the guise of "making things easier" for support, but I see it more as a security risk. It's definitely an inconvenience.</p><p dir="ltr"><div class="separator" style="clear: both; text-align: center;">
<a href="https://lh3.googleusercontent.com/-VFekLbilSC0/YTZsO1VwSDI/AAAAAAACSVY/Q8XQZqI34fY3FU1AX_7WJ7TifLiXu4q-QCLcBGAsYHQ/s1600/1630956603697199-0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">
<img border="0" src="https://lh3.googleusercontent.com/-VFekLbilSC0/YTZsO1VwSDI/AAAAAAACSVY/Q8XQZqI34fY3FU1AX_7WJ7TifLiXu4q-QCLcBGAsYHQ/s1600/1630956603697199-0.png" width="400">
</a>
</div><br></p>
<p dir="ltr">The way it works is that I enter the router's IP address which now redirects me to <a href="http://accounts.netgear.com">accounts.netgear.com</a> for my official Netgear account login. Once I login to their site (note: not my router), I am redirected back to the IP address of my router. Seems benign, but it turns out to be a point of failure. Recently, I was unable to gain access to my wireless router because after redirecting to <a href="http://accounts.netgear.com">accounts.netgear.com</a>, I was blocked by HTTP code 503. I reset my router and tried a few more times. Blocked. There is ko reason to need to go to extra physical steps to directly access this device on my network.</p>
<p dir="ltr">Maybe that's the problem. Maybe Netgear considers this their network since I am using their equipment. This asinine workflow is enough for me to only buy devices reprogrammable with OpenWRT. Linksys is good for this. So is ASUS. And there are other brands not as well known which cater to this sort of configuration. That's where my money will go.</p>
<p dir="ltr">There are some workarounds to Netgear's long way home approach. Disconnecting internet access will let the router time out to direct access. I believe you can connect directly to the device with a cable (maybe disable internet connectivity too?). But you can see the problems with taking those actions. At least give me the option within the router's settings to disable this option, Netgear. It's extra hassle to do something which was once simple.</p>
<p dir="ltr">I'm done with this. Let me access my devices when I want! Give the people freedom!</p>mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-54024936532800055862021-08-06T12:21:00.002-04:002022-12-08T11:49:19.573-05:00Video Meeting Etiquette<p>I can't believe this hasn't blanketed the internet (or maybe I haven't seen the blanket coverage), but here are a few items of video meeting etiquette that might be tough to hear but is what everyone wishes you knew.</p><h3 style="text-align: left;">Always enter meetings on mute</h3><p>You might be confident about starting every meeting with your video active, but never think charging into a meeting unmuted is what people really want.</p><p>If you are regularly late to meetings, expect a lot of loathing from your colleagues. This is equivalent to entering an in-person meeting already in progress while arguing with your spouse or sibling over some personal matter. Silence is golden.</p><h3 style="text-align: left;">Using only laptop (computer) microphone and speakers makes you "that person"</h3><p>This creates the least awesome echo tunnel evar. Everyone will hate to ask you questions because you'll need to activate the voice tunnel to answer. No one wants the tunnel! No! One!</p><p>You can spend about $12 on Amazon to buys a four-plus star rated headset with earpiece and boom mic. This will win points with your colleagues by leaps and bounds. They might even throw you a party.</p><h3 style="text-align: left;">Stay on mute when not actively engaged in discussion</h3><p>If you never involve yourself vocally in a meeting, there is no reason to not be on mute. Your keyboarding, food chewing, slurpee slurping, dog barking activities are so much less subdued when a microphone is added to the scenario.</p><p>Please mute yourself if you know you need to cough or sneeze. At least move away from mic if you can't click a button in time. If we learned anything from <a href="https://www.youtube.com/watch?v=EwTZ2xpQwpA&t=22s" target="_blank">Zonday</a>, it is to move away from the mic when merely breathing.</p><p>And if you are guilty of the situation above, just stay on mute...forever. Your mic will likely try to pick up all sounds to make sure you are heard. You will be, as well as every other sound around you.</p><h3 style="text-align: left;">Add a profile picture to your account</h3><p>This is less of an annoyance than the first three, but it can really help people quickly identify you. Most meeting platforms will switch to your account's representation when you speak. Video is cool but not always possible. A picture to represent is a nice welcome. It helps to have an actual photo of you, especially for meetings where people don't know the whole audience. Even if you choose to upload an image of your cat, it's still better than just a name.</p><p>Note: This is very beneficial for other communication mediums such as interactive chat/messaging. Just having the system-generate initial(s) for your name will help others assume you are someone else at a quick glance. I tend to quick glance at a chat when multitasking.</p><p>One of my smaller chat groups involved five other people all with the first initial "S." The chat tool defaulted to a color circle with the initial of the first name...and the colors were duplicated. To make matters worse, the colors didn't help. It would have been nice if the two green circles were the men and the two pink circles were the women or vice versa. But no. Green was one man, one woman. Pink the same. Color didn't really help. It took extra time to figure out which "S" I was answering. "Is the green 'S' Sharon or is the pink 'S' Steve? No, that green 'S' was Sharanya!"</p><p><br /></p><p>If you know of other things which I didn't list, feel free mention in the comments. I know these are the recurring things which should have been said now that we've all experienced a year communicating in this fashion.</p><p><br /></p>mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comKnoxville, TN 37923, USA35.9276062 -84.08544327.6173723638211541 -119.2416932 64.237840036178852 -48.9291932tag:blogger.com,1999:blog-8086150039112245365.post-1046315274435027792020-02-11T18:25:00.001-05:002020-02-11T18:25:16.322-05:00Robot Authenticity<div>I've gone back and started watching "Mr. Robot" from the beginning again. I always believed that a lot of the code was real and the technology was legit and something with which I could identify.</div><div><br></div><div>And then I reached an episode where Elliot typed in <b>nano</b> to edit a file and realized it's just Hollywood garbage again.</div><div><br></div><div>No real hacker uses nano.</div><div><br></div><div>I would have respected him for even starting up Emacs. I wouldn't have agreed, but he would have had my respect.</div>mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-8865345028900886232019-10-29T10:27:00.000-04:002019-10-29T10:27:23.790-04:00No More CaptionsI am a bit late in posting the follow up to the previous rant about the persistent captions on Google Play media. They did in fact release an update fixing the captioning problem, but it took about a month to get it.<br />
<br />
I ended up using the Google Play Movies & TV app on Roku to avoid the captioning problem. The app for Roku is not the standard app found on Android devices. It was uneffected by this phenomenon. Something I will keep in mind if things go wonky again.<br />
<br />mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-18410850352047831372019-08-27T10:20:00.000-04:002019-08-27T10:20:44.170-04:00Google Play Movies & TV App Version 4.14.22-tv Enables Closed Captions by DefaultI started watching a moive the other night on my Sony Bravia Android TV via Google Play Movies & TV and found the closed captions active. I turned them off and watched the movie thinking it was fluke.<br />
<br />
But then, I switched over to watch a few episodes of some televsion shows I purchased through the Google app to find the closed captioning enabled for each of these. No matter how many times I turned it off, the next episode/movie would have it enabled again.<br />
<br />
After calling Sony (and having them point to Google) and calling Google (who thought I had turned them on myself), I was at the end of things promised a call back the next day. I think it might have come two days later, but I had already determined the problem.<br />
<br />
I had jumped through the hoops of clearing data and cache and force stopping the app with no effect. It later dawned on me that a tech had me remove the updates for an app and reapply them for a different matter in the past. I gave that a shot.<br />
<br />
What I discovered is that version <b>4.14.22-tv</b> of the <b>Google Play Movies & TV app</b> automatically turns closed captioning on for everything. Switching it off only applies ot the current show (episode or movie). The next selection will take the new global, unctrollable setting.<br />
<br />
There is a small reddit thread started by someone six days before I found it. I documented whole experienece of removing the updates, having normal closed caption behavior, then reapplying the updates and going back to frustration land.<br />
<br />
If you downgrade (remove the updates) in the meantime, you can enjoy everything as normal. My Sony Bravia will auto update the app, so I will be continuing the practice of downgrading until Google fixes this (I assume this is a bug and not some new default setting).<br />
<br />
Reddit: <a href="https://www.reddit.com/r/GooglePlayMovies/comments/crf3uc/subtitles/">https://www.reddit.com/r/GooglePlayMovies/comments/crf3uc/subtitles/</a><br />
YouTube: <a href="https://www.youtube.com/watch?v=wAOOrGev3cQ&t=7s">https://www.youtube.com/watch?v=wAOOrGev3cQ&t=7s</a><br />
<br />mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-875318844489209452019-08-15T14:25:00.000-04:002019-08-15T14:25:14.618-04:00Amazon: New or UsedMy niece is a gamer. When she pinged me a couple of months back during E3 to tell me how excited she was about the "Zelda: Breath of the Wild" sequel, I went ahead and bit the bullet to get her a Nintendo Switch for her birthday.<br />
<br />
I jumped onto the Amazon app, searched up the device, made sure all was legit, and purchased the unit. It came promptly, and I put it aside until her birthday a couple of months later.<br />
<br />
The day finally arrived. I knew she was going to be so excited to get this. And she was! She was very happy. Since we had spent the day out celebrating her birthday, she was tired and planned on opening the Switch the next day.<br />
<br />
Midmorning the following day, I pinged her to ask her how the Switch was going. She told me she had just gotten up and was starting it up at that moment. A few minutes later, she messaged me asking if I ordered the unit was new or used. She said there were accounts already on the device.<br />
<br />
I checked the order from Aamzon, and it was listed as New, sold by Amazon Services, Inc. I Googled the account names and found nothing to indicate any dummy/default accounts preinstalled. I opened a chat session with Amazon. A tech joined shortly, and I began to ask about the situation.<br />
<br />
In the meantime, my niece was still trying to connect the unit to the WIFI with no success.<br />
<br />
I had asked her to send me the serial number. I thought it might come up in the conversation with the tech. She gave me the number. I did another quick search only to see if there were any reports with that serial number. But the number didn't seem to match a Nintendo Switch. A little more digging informed me that the serial number my niece provided was for the charging unit. When I told her this and where the serial number should be, she told me it had been torn off leaving only little bit of white sticker where it once was.<br />
<br />
So, now I have discovered that although I ordered New and my invoice reports New, I was sent a Used device which isn't even functioning as refurbished.<br />
<br />
To make matters more frustrating, the return window for an expensive device like this is only one month. When I mention this to the tech, she tells me that she can make an exception to the return window. This is a concern to me since I tend to buy gifts in advance, especially around Christmas. I have purchased many items a couple of months before the event. With a one month window for returning items, I am now realizing that I am going to need to either wait until it is less than a month and take the chance it might be sold out or order early and open it make sure it works.<br />
<br />
What really makes me the most angry is that although the device was listed as New in all the places for the order, I received a less than Refurbished item. I could even understand if this was sent from an Amazon seller, but it was Amazon Services itself.<br />
<br />
Amazon has made things right, something I expect for an item this caliber. A one month return window on this type of device seems a little small. (A friend suggested a one-month-from-open and not one-month-from-receipt. That seems smart.) And how does a unit with non-functioning WIFI end up in a box in their New-status stock?<br />
<br />
This experience will change how I handle gifts from Amazon.<br />
<br />mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-61336586307810982732019-07-31T08:42:00.001-04:002019-07-31T08:42:35.766-04:00Ryzen 5 2600 Browser LatencyI have recently built my first Ryzen desktop. I am running the Ryzen 5 2600 processor with 32GB RAM, the Sapphire Radeon Pulse RX 580 8GB graphics card, and a couple of SSDs.<br />
<br />
My goal was to get system which could handle the output of one 4K monitor and an HD second monitor without any sluggishness. The graphics card seems to be meeting this goal. The 32GB RAM also helps keep the machine spiffy.<br />
<br />
What I am finding, though, is that at times when choosing functionality within a website, operations for that activity pauses for a moment or two. Simple actions such as opening a page from a bookmark or pulling a list for a dropbox are met with the same pause. It's more than data retrieval on the backend. The all browser interaction is suspended.<br />
<br />
I do see a spike for the browser process in my system monitor, but I've seen that on Intel processors running under the same or lesser load with no latency. The spike happens, but there is no lag with Intel. And the Intel boxes do not have the graphics horsepower or increased memory this Ryzen box has.<br />
<br />
And it is not just a single browser. I have seen this behavior with four different browsers on the same system. Is this just a Ryzen thing?<br />
<br />
I want to blame Javascript because we all know how much of a glutton for memory it is. But it is more than just a single page or tab within the browser. I cannot immediately switch among my tabs during that pause. Maybe it really is Javascript impacting the whole browser. I have not done any investigation to determine if that is the case.<br />
<br />
If it is the Ryzen chip, maybe the Ryzen 5 2600X might perform better. Overall, I am pleased with Ryzen and would like to do more with it. This is the only real issue I have encountered.mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-63316864302619035732019-07-24T14:16:00.000-04:002019-07-24T14:24:25.613-04:00NMAP AdventuresToday, I spent some time checking some firewall rules to see if any were still valid and which ones could be cleaned up. (These are internal firewall rules between our cloud account and our data center.) I was using <b>nmap</b>.<br />
<br />
At a point, I wanted to be able to check both TCP and UDP protocols for a specific port for a specific host. I read through the help and man pages to see that I can use <span style="font-family: "courier new" , "courier" , monospace;"><b>-sO</b></span>. This is where things got a little wonky. (Number have been changed to protect the innocent.)<br />
<br />
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">$ <b>nmap -sO 1-17 -p 52001 10.10.10.5</b></span><br />
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">Starting Nmap 7.70 ( https://nmap.org ) at 2019-07-24 13:16 EDT</span><br />
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">Protocols specified must be between 0 and 255 inclusive</span><br />
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">QUITTING!</span><br />
<div>
<br /></div>
<div>
Huh?</div>
<div>
<br /></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">$ <b>nmap -sO 1,6,17 -p 52001 10.10.10.5</b></span><br />
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">Starting Nmap 7.70 ( https://nmap.org ) at 2019-07-24 13:16 EDT</span><br />
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">Protocols specified must be between 0 and 255 inclusive</span><br />
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">QUITTING!</span><br />
<div>
<br /></div>
</div>
<div>
This goes on for a little longer using different syntax. I dig further into the man page. After hashing it out, this sentence reveals the confusion:</div>
<div>
<br /></div>
<blockquote class="tr_bq">
<span style="color: #fff2cc;">Yet it still uses the -p option to select scanned protocol numbers, reports its results within the normal port table format, and even uses the same underlying scan engine as the true port scanning methods. So it is close enough to a port scan that it belongs here.</span></blockquote>
<div>
<br /></div>
<div>
Wait, so, the <span style="font-family: "courier new" , "courier" , monospace;">-p</span> option is used differently than everywhere else? Seems like it. I feel like points should be deducted here.</div>
<div>
<br /></div>
<div>
Using the following gets me the list of my protocols, however they are not completely what I need to know:</div>
<div>
<br /></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">$ <b>nmap -sO 10.10.10.5 -p 1,6,17</b></span></div>
<div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">Starting Nmap 7.70 ( https://nmap.org ) at 2019-07-24 14:06 EDT</span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">Nmap scan report for 10.69.55.214</span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">Host is up (0.00086s latency).</span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">PROTOCOL STATE SERVICE</span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">1 open icmp</span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">6 open|filtered tcp</span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">17 open udp</span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">Nmap done: 1 IP address (1 host up) scanned in 1.48 seconds</span></div>
</div>
<div>
<br /></div>
<div>
Here's the real truth, though:</div>
<div>
<br /></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">$ <b>nmap -sU -sT -p 52001 10.10.10.5</b></span></div>
<div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">Starting Nmap 7.70 ( https://nmap.org ) at 2019-07-24 13:32 EDT</span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">Nmap scan report for 10.69.55.214</span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">Host is up (0.00081s latency).</span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">PORT STATE SERVICE</span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">52001/tcp open unknown</span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">52001/udp closed unknown</span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">Nmap done: 1 IP address (1 host up) scanned in 0.49 seconds</span></div>
</div>
<div>
<br /></div>
<div>
And it leads me to this final bit of confusion: Why does the scan using <span style="font-family: "courier new" , "courier" , monospace;">-sT -sU -p 52001</span> not give me the same as using the <span style="font-family: "courier new" , "courier" , monospace;">-p U:52001,T:52001</span> syntax? This is what the latter gives me:</div>
<div>
<br /></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">$ <b>nmap -p U:52001,T:52001 10.10.10.5</b></span></div>
<div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">Starting Nmap 7.70 ( https://nmap.org ) at 2019-07-24 14:06 EDT</span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">Nmap scan report for 10.69.55.214</span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">Host is up (0.00084s latency).</span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">PORT STATE SERVICE</span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">52001/tcp open unknown</span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div>
<span style="color: lime; font-family: "courier new" , "courier" , monospace;">Nmap done: 1 IP address (1 host up) scanned in 0.49 seconds</span></div>
</div>
<div>
<br /></div>
<div>
This is very confusing. Comment if you have some insight into this.</div>
mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-34751800289097742792019-02-27T09:51:00.001-05:002019-02-27T09:51:54.076-05:00recreating a usera short while back, i made an attempt to <a href="https://blog.mock.tech/2018/10/changing-shells.html">switch my home shell from bash to xonsh</a>. in the process of doing this, i took more of a raw approach. despite the learning process that was, it left me with scars.<br />
<br />
these scars are specific to my system's user management and my account (see the last paragraph of the shell switch post). i no longer had a recognized user requiring me to type in my username rather than just typing in my password.<br />
<br />
today, i made the attempt to fix that. now, i will admit there might be a better way out there to do this, but i took this (raw) route again.<br />
<br />
with superuser privileges, i edited the <b><span style="font-family: Courier New, Courier, monospace;">/etc/passwd</span></b> file and appened a digit to my username and changed my user id to 1001. i did this in the <b><span style="font-family: Courier New, Courier, monospace;">/etc/group</span></b> and <b><span style="font-family: Courier New, Courier, monospace;">/etc/shadow</span></b> files.<br />
<br />
i then created a new user with my original name using this command (as root):<br />
<br />
<span style="color: lime; font-family: Courier New, Courier, monospace;"><b># useradd mock -d /home/mock -M -u 1000 -G wheel -U</b></span><br />
<br />
i set the password for the replacement user, and i rebooted the system for all the things to be recognized. (i came back later to add the other groups to which this user belonged.)<br />
<br />
the command created the new user with the established name assigning the original user id to the new user and the original user's home directory also to the new user. because the user id is the same, all filesystem permissions still belong to the appropriate user.<br />
<br />
i then removed the old, modified username from the <b><span style="font-family: Courier New, Courier, monospace;">/etc/passwd</span></b> and <b><span style="font-family: Courier New, Courier, monospace;">/etc/group</span></b> files.<br />
<br />
now, things are back to normal.mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-11246076853363635332019-02-08T09:53:00.001-05:002019-02-08T09:53:10.332-05:00when to use less instead of vimi am baffled that so many people feel like <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>vim</b></span> is the correct tool for viewing files on linux systems. using <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>vim</b></span> to view files you'd edit is fine. when i am viewing code or a config file which i may change, i might use <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>vim</b></span> but only if i plan on making changes to the file.<br />
<br />
but when i am going to view a file which i don't ever plan to edit or ever need to edit, i use <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>less</b></span>. log files are ones where i see this happening very often. unless you expect to change the log file, i see no reason for using <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>vim</b></span>.<br />
<br />
even when viewing files which could be edited, it's best to use <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>less</b></span>. scenario: someone wants to view a file. they use <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>vim</b></span>. i jump on the server and need to actually change the file. i get the message that the file is already being edited. maybe i can say that i want to edit it anyway, but there are no guarantees someone won't <b><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">:wq</span></b> or <b><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">ZZ</span></b> out of the file and undo my changes. if they used <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>less</b></span>, there would be no threat of this.<br />
<br />
less lets me move through a file much quicker for pure examination purposes. <b>spacebar</b> works like <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>CTRL+F</b></span> to scroll a page at time, yet all the vim moving commands are available too. searching text is the same as <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>vim</b></span>. and i can exit <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>less</b></span> with a simple tapping of the <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>q</b></span> key.<br />
<br />
"but, but i need line numbers and <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>vim</b></span> lets me do that!" so does less. use the <b><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">-N</span></b> option on less to get line numbers.<br />
<br />
"what if learn that i need to edit a file after i have entered less?" just press <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>v</b></span> in <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>less</b></span> to enter <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>vim</b></span> mode.<br />
<br />
and a side annoyance are any leftover swap files <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>vim</b></span> might leave behind on a dirty exit of <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>vim</b></span>. swap files for log files? how first-year cadet is that?<br />
<br />
if you feel the outstanding need to use <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>vim</b></span> to view files which should never be edited, then use the <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>-R</b></span> argument to ensure the file is never changed. if you practice using the <b><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">-R</span></b>, i am willing to bet you'd find typing <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>less</b></span> much easier.<br />
<br />
and before you ask me, "why not use <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>more</b></span>?" i will let you figure out why <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>less</b></span> is more. (and if you are viewing files with <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>nano</b></span>, there are no words to describe that insanity.)<br />
<br />
bonus assignment: find out what the <span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>view</b></span> command does.mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-10169467739037772652018-10-25T08:33:00.002-04:002018-10-25T08:33:41.572-04:00changing shellsi don't know if this a fedora-specific thing or a newer linux thing, but in the past changing your default shell was as simple as editing the <b><span style="font-family: Courier New, Courier, monospace;">/etc/passwd</span></b> file. today, there is the <span style="font-family: Courier New, Courier, monospace;"><b>chsh</b></span> which can perform this for you. there is a catch, however. the shell must exist in the <span style="font-family: Courier New, Courier, monospace;"><b>/etc/shells</b></span> file to be allowed to be changed.<br />
<br />
to make this work, i needed to add my shell to the <b><span style="font-family: Courier New, Courier, monospace;">/etc/shells</span></b> file. then i issued the <b><span style="font-family: Courier New, Courier, monospace;">chsh</span></b> to make my shell change.<br />
<br />
<span style="color: lime; font-family: Courier New, Courier, monospace;">$ <b>chsh -l</b></span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace;">/bin/sh</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace;">/bin/bash</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace;">/usr/bin/sh</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace;">/usr/bin/bash</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace;">/usr/bin/tmux</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace;">/bin/tmux</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace;">/usr/bin/xonsh</span><br />
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace;">$ <b>sudo chsh -s /usr/bin/xonsh mock</b></span></div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace;">Changing shell for mock.</span></div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace;">Shell changed.</span></div>
</div>
<div>
<br /></div>
<div>
my previous post about xonsh is what led me here. i had manually changed the shell directly in the <b><span style="font-family: Courier New, Courier, monospace;">/etc/passwd</span></b> file, but then my gnome session did not recognize my user. this was the strange side effect of changing the default shell not on the <b><span style="font-family: Courier New, Courier, monospace;">/etc/shells</span></b> list. gnome (gdm) started the <span style="font-family: Courier New, Courier, monospace;"><b>gnome-initial-setup</b></span> process which runs when gnome is freshly installed.</div>
<div>
<br /></div>
and thing are still messed up. the <b>gnome settings > users</b> section shows no one, even though i am logged in under my account. (figuring out how to fix this will be another lesson for a future time.)mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-8569534624023881472018-10-23T08:39:00.000-04:002018-10-23T08:39:03.546-04:00xonshthere was small thread on the knoxdev's slack account about shells the other day. as i was trying to continue the discussion cleverly using the shell names as regular words in sentences, i did a quick search for available shells from my package manager (i.e. <span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">dnf search shell</span>). as i was looking through the results, i found <b>xonsh</b>.<br />
<br />
the description listed in my package manager tells me this is what it is:<br />
<blockquote class="tr_bq">
Description : xonsh is a Python-ish, BASHwards-compatible shell language and<br /> : command prompt. The language is a superset of Python 3.4 with<br /> : additional shell primitives. xonsh (pronounced *conch*) is<br /> : meant for the daily use of experts and novices alike.</blockquote>
<div>
i have toyed around with the idea of using python's interactive shell as my main terminal shell for some time, but i always felt it would be too hard to do some of the simple things, such as file management. sure, i could write equivalent scripts to do those tasks, but i never made the effort.</div>
<div>
<br /></div>
<div>
this accomplishes exactly what i wanted to do. with xonsh, i can do this:</div>
<div>
<br /></div>
<div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">~ $ <b>ls -l gPodder/</b></span></div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">total 124</span></div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">-rw-r--r--. 1 mock mock 90112 Feb 19 2018 Database</span></div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">drwxrwxr-x. 3 mock mock 4096 Feb 12 2018 Downloads</span></div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">drwxrwxr-x. 2 mock mock 4096 Feb 19 2018 Logs</span></div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">-rw-rw-r--. 1 mock mock 2715 Feb 19 2018 Settings.json</span></div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">-rw-r--r--. 1 mock mock 20480 Feb 19 2018 gpodder.net</span></div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">~ $ <b>from datetime import datetime</b></span></div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">~ $ <b>datetime.now()</b></span></div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">datetime.datetime(2018, 10, 23, 8, 35, 50, 863981)</span></div>
</div>
<div>
<br /></div>
<div>
there is much more to xonsh than just this. the full documentation can be found at <a href="http://xon.sh/">http://xon.sh</a>.</div>
mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-84805172810037746142018-04-09T14:13:00.000-04:002018-04-09T14:13:13.805-04:00python string concatenation is a bad practicei think because python is a scripting language, people tend to thing it's super fine to do something like this:<div>
<br /></div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">>>> val + '-string'</span></div>
<div>
<br /></div>
<div>
the problem is that the <span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;"><b>+</b></span> operator does not do any casting of the variable to make it compatible with the string. this sort of thing will throw an error if the type of <span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;"><b>val</b></span> is anything other than a string.</div>
<div>
<br /></div>
<div>
check it:</div>
<div>
<br /></div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">>>> val = None</span></div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">>>> val + '-string'</span></div>
<div>
<span style="color: #e06666; font-family: Courier New, Courier, monospace; font-size: x-small;">Traceback (most recent call last):</span></div>
<div>
<span style="color: #e06666; font-family: Courier New, Courier, monospace; font-size: x-small;"> File "<input>", line 1, in <module></span></div>
<div>
<span style="color: #e06666; font-family: Courier New, Courier, monospace; font-size: x-small;"> val + '-string'</span></div>
<div>
<span style="color: #e06666; font-family: Courier New, Courier, monospace; font-size: x-small;">TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'</span></div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">>>> '{}-string'.format(val)</span></div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">'None-string'</span></div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span></div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">>>> val = 4</span></div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">>>> val + '-string'</span></div>
<div>
<span style="color: #e06666; font-family: Courier New, Courier, monospace; font-size: x-small;">Traceback (most recent call last):</span></div>
<div>
<span style="color: #e06666; font-family: Courier New, Courier, monospace; font-size: x-small;"> File "<input>", line 1, in <module></span></div>
<div>
<span style="color: #e06666; font-family: Courier New, Courier, monospace; font-size: x-small;"> val + '-string'</span></div>
<div>
<span style="color: #e06666; font-family: Courier New, Courier, monospace; font-size: x-small;">TypeError: unsupported operand type(s) for +: 'int' and 'str'</span></div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">>>> '{}-string'.format(val)</span></div>
<div>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">'4-string'</span></div>
<div>
<br /></div>
<div>
now, you could force cast it using <span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;"><b>str(val)</b></span>, but that seems silly when you can just use the <span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;"><b>format()</b></span> method on the string object to handle things for you.</div>
<div>
<br /></div>
mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.comtag:blogger.com,1999:blog-8086150039112245365.post-53511411709872699772018-03-02T13:55:00.001-05:002018-03-02T13:55:55.543-05:00python is referentialthis is often misunderstood about python, especially if you are accustomed to other languages, such as C/C++.<br />
<br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">>>> class thing(object):</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">... def __init__(self, some):</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">... self.some = some</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">... def add_on(self, addition):</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">... self.some = self.some + addition</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">... </span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">>>> a = thing("hello")</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">>>> print(a.some)</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">hello</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">>>> b = a</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">>>> print(b)</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;"><__main__.thing object at 0x7f9d267cf7f0></span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">>>> print(a)</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;"><__main__.thing object at 0x7f9d267cf7f0></span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">>>> print(b.some)</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">hello</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">>>> a.add_on(", world")</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">>>> print(a.some)</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">hello, world</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">>>> print(b.some)</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">hello, world</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">>>> print(a)</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;"><__main__.thing object at 0x7f9d267cf7f0></span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;">>>> print(b)</span><br />
<span style="color: lime; font-family: Courier New, Courier, monospace; font-size: x-small;"><__main__.thing object at 0x7f9d267cf7f0></span>mockhttp://www.blogger.com/profile/00042839037344931325noreply@blogger.com