Sunday, June 17, 2018

Fixing Touchpad Palm Sensitivity on a Laptop Running Ubuntu 18.04

A couple months ago I was really excited to update my laptop from Ubuntu 17.10 to the newly released 18.04.  A side affect of the upgrade was as I typed, my palms would inadvertently select things on the screen and remove focus of what I was actually doing.  So I searched and made some changes based on what I read here: https://help.ubuntu.com/community/SynapticsTouchpad but the problem I had was that I don't really feel comfortable randomly changing configurations without actually knowing what I was changing.  For instance, Synaptics Finger (267): 50, 80, 257 is great to know that those number will help me out, but what exactly does each value actually change. So I decided to look into a better explanation, which brought me to this page: https://unix.stackexchange.com/questions/28306/looking-for-a-way-to-improve-synaptic-touchpad-palm-detection While it still has config changes in it, at least I feel a little bit more comfortable with named values I'm changing. So I modified PalmMinWidth to equal 4 and then after a few iterations changed PalmMinZ to equal 75. These settings seem to have taken care of my problem for now. But I wanted to document what worked for me as to hopefully help others in the future.

On my setup, to persist the changed values, I had to add the following to the /usr/share/X11/xorg.conf.d/70-synaptics.conf file:

            Option "PalmMinZ" "75"

            Option "PalmMinWidth" "4"

Monday, October 9, 2017

Not Becoming a SILO

As much as all of us try, some of us can become a SILO.  I feel that I've done my best not to let this happen, but it inevitably happened.

So I got my shot in the tech industry when I was less than 6 months in college for Computer Science.  My wife, who works in IT,  was at a happy hour with co-workers and I called to see what she was up to.  I was invited to the party only to find myself talking to her boss (the CTO) most of the evening about what I was studying and an article I read about not using silicon in processors anymore.  This was a Friday evening.  On Monday evening I got an email from her boss asking if I'd like to work on a part time project he needed help with.  Of course I said yes and I was dieing to get into the industry.

 The side project was Salesforce Development for their instance.  If any of you have developed in Apex, it's a huge pain, but nothing good comes easy am I right?  I was extremely thankful and regardless of how bad it sucked, I still pressed on.  Over a few months I feel that I built a handful of decent products.  I had a full time job working for Mallinckrodt Pharmaceuticals and did the coding on the side.  After awhile I told my wife that I was going to quit my job and focus 100% of my time on working in IT.  The job doing Salesforce was very clear that it was only a single project, I started speaking with recruiters at Meetups in my area.  I had a number of leads, and was hot on the track of getting a full time job doing what I enjoyed so much.  But within 2 weeks of me quiting Mallinckrodt, I was offered a full time job where I was working the small project.

After a number of months doing Salesforce Development, I moved onto the SQL Database team, working on SSIS that fed into our Salesforce Org.  My new boss asked a number of times if I wanted to become a DBA, and after I continually told him that I wanted to be a Developer, he arrange it so I was on the .NET side of our company as a Developer.  Now I know I am a Salesforce Developer, but I feel I picked up C# pretty fast.  I currently still do Salesforce, but everytime a ticket comes up, I tend to not share what I know about the proprietary language Apex.  I'm honestly not trying to keep myself as the sole keeper of knowledge of that platform, but I want to shield others from the pain of developing in that language.

Recently I've had to work a ticket to add functionality to my current code, and got a developer up to speed, but it got blocked and I switched my pair.  I by no means felt that he wasn't capable of understanding the code I wrote, but I felt that it would be faster if I just "did it myself".  At our Retrospective, I realized I wasn't being fair to my team by not spreading the knowledge, regardless of how painful it was.  So needless to say I'm going to make a better effort to spread what I know about the codebase I built and making it so I can have someone to share the pain with.

-Kwiknick

Monday, October 2, 2017

Making an old Laptop/Computer come back to life

I'm a .NET developer and I get a lot of flack about my love for Linux.  I take it with a grain of salt, but when you find the proof in the pudding, it's hard to ignore.  I bought a laptop 3+ years ago when I started college and I thought it was pretty good based on the budget I gave myself.  1 terabyte, 8GB of RAM, i5 processor, what more could you want on a budget. 

Well late last year I upgraded to Windows 10 per the persistent requests from Microsoft that it was the greatest thing on earth.  Now mind you, I have a lot of different scripting languages, databases, sdk's and such installed on this machine.  But if it's such a great OS surely it should handle it.  Well come to find out, it would take like 4 minutes just to boot up.  Opening things like chrome were horrible.  My wife, who is also a developer, hated using my laptop.  I pleaded that I was just going to wipe it and install Ubuntu and all would be well.  But alass we still had to keep our quickbooks on the machine until we did our taxes for our business. 

Well last week that day finally came!  I don't know how many of you have delved into Linux, but I'm a very rule oriented individual, so knowing that Logical Volume Management is the way to go for any install, I had to go that route with my laptop. 

So the first thing to do is copy off all things that you feel is important.  Then create a bootable Linux USB drive (not the one with your backup on it).  Modify your BIOS so you boot up from the USB drive, and select the "I'm just looking" option.  While in the Linux OS you can now setup your LVM.  You start by creating your Physical Volume, then you add your Physical Group.  Now this is where things can get hairy, you now setup your Logical Volumes and there size.  This is important.  I don't want to go into what should be what size as this is based on preference.  After this is set, you can get out and do the actual install.  Now this is where you will actually "mount" your "/", "/swap", ... to the newly created LV's.  I know I should go into more detail as there isn't really a good blog post online, but maybe that needs to be another post.

After the install is done, you can now open a Terminal and do a "sudo apt update && sudo apt upgrade".  This will take awhile, but will get you going.  After that is done you will almost instantly notice that your machine runs at a nearly insane rate, like a new puppy being traded in for an old dog. 

I know I didn't go into much detail, but if anyone has questions, feel free to reach out to me and I can point you in the right direction.

-Kwiknick

Wednesday, May 11, 2016

Spinning up a Virtual Machine for Learning New Technologies

As a new developer, I try my best to learn as much as I can in the shortest time period.  One of the best advice I've gotten was from a couple of co-workers when I was asking for help on a problem.  I was enamored with the complexities of git and couldn't learn how to use it effectively fast enough.  So after a bit of reading on my own, I'd come to these developers and ask semi-specific questions about what I was trying to accomplish.  After about a week these 2 individuals said "When we try to learn something new, we just start playing around with the technology.  When you want to know if git rebase will delete your history, create a repo with some folders and files in it, and perform a rebase after a couple of commits."

This advice sparked a flame in the way looked at learning.  With this new advice, I started to create sandboxes everywhere, and for everything.  Anything from git, mongoDB, mysql, c#, python, powershell, and everything in between, I started just doing it and seeing what happened.  That way, when I was working on something at work, I already knew the consequences of the not so familiar method/command.  

What is a great place to play around and not have to worry about destroying your computer?  A Virtual Machine.  There are a number of Hypervisors out there that can be used to create one.  From Hyper-V, VirtualBox, and my favorite VMWare.  This post will focus on creating a VM on VMWare. There are some pre-requisites that you need is to download the following:
  1. VMWare Workstation download.
  2. Ubuntu 16.04 LTS download.
There are many Operating Systems available, over 100 linux distributions that I can think of, but you could always use Windows if you have a license and a current installation ISO or disks.  One of the benefits of the 2 listed downloads is that they're free.  So now that those are downloaded, we can get started.  

The first thing you'll want to do is double click the file downloaded from the VMWare link and follow the on screen instructions.  Once that is done you should open up VMWare and you'll see the Home screen of the program.  From there you'll follow the following steps:
  • Click on "Create a New Virtual Machine"
  • Select the "Installer disc image file (iso)" radio button.
  • Click Browse, and find the downloaded ISO of Ubuntu that was downloaded earlier.  Then Select Next.  This is most likely in your downloads folder.
  • On the next screen fill in the fields to Personalize Linux and Select Next.  Remember this information, as it will be used to login to the Operating System once installed.
  • Now give the VM an allotted amount of space to take up on your hard drive and click Next.  I recommend 20gb, but you could go greater or less based on your use case.
  • On the next screen you can customize some more of the features such as memory.  I usually set my Memory to 2gb's but you can get away with as little as 512mb's.  Keep in mind that the VM is borrowing resources from your host machine, so you don't want to just crank everything up to the max.  Once everything is to your liking click Finish.
  • Now after about 10 minutes and a few questions, you should see the Ubuntu Log In screen.  Use the password created earlier to login and you are done.
Congratulations!  You've just created a Linux based playground to perform all of your coding experiments without having to worry about destroying your host machine.  And one of the best things is that if you really hose up the VM then you can just delete it and start over again with a clean slate by just following these steps again.  Note that you can have multiple VM's created at a time pending that you have enough hard drive space.  

If you are having problems with the Internet inside the VM, you may have to play around with the Network settings of the virtual machine by changing them in the VMWare application.  I hope this helps someone learn new technology as that is what I love to do in my spare time.

-Kwiknick

Wednesday, April 20, 2016

Getting Started learning Docker

With all of the news about windows playing nice with linux in recent times, I've decided to get my feet wet in the docker world.  So I wanted to share some of the resources that have helped me get a grasp on the capabilities of Docker.

Being able to deploy a container with all of the dependencies and the newly written code in a matter of minutes with everything in the environment being the same.  So say goodbye to environmental issues when testing, developing, and even using in production.  This makes me so happy I picture myself sitting on a beach with a drink in hand instead of looking at logs trying to figure out what went wrong.

Here is a video that in my opinion gives an excellent high level view of what Docker is:


Here are some links to 2 useful blogs I read, and a link to the Docker in windows walk-thru.  Dockers walk-thru's are surprisingly really good and will definitely help someone get started.

https://blog.jessfraz.com/

https://jpetazzo.github.io/

Getting Started with Docker in Windows

Using Dockerfiles to Build images - Explained

Tuesday, March 1, 2016

How to Fail When Exposing a Linux Server to the Internet

Recently I restarted an old dream of having a home server out of an old computer.  Years ago I took my old desktop and decided that it was a prime candidate.  64bit AMD processor 8GB's of RAM and a 1TB Hard drive seemed like the perfect fit.  I had another 20GB hard drive laying around that I used as a host for the OS.  Flash forward 5 years and when I'm actually in the IT field, and I decided to make the main HDD a TB as well.  So I reinstalled Ubuntu 14.04 LTS, and started to play around.

One of the first things I couldn't wait to do was have the ability to SSH into my machine.  I got this setup in a day and was so excited.  So what is a person to do with this capability?  Setup a DDNS and remote in via SSH.  This seemed like the coolest thing in the world.  The ability to sign in to my home server from anywhere!!!  But wait, if I can sign in from anywhere, so could anyone else.

A friend of mine is a Project Manager for an IT company where I live.  In particular, he manages projects in the security side of his company.  So at lunch a couple days ago I was talking about my home server and how happy I was with being able to SSH into it from anywhere.  The first thing out of his mouth was, "I hope you're not using default ports."  My stomach dropped as I never changed anything that was default when setting anything up.  As soon as I got home I grepped the auth.log file in the ssh folder for *failed and the results were daunting.  At a minimum, I was getting hit every 4 seconds. Anywhere from Australia to Amsterdam, hackers were trying to hit my open ports.

So lesson learned that I want to share with anyone is if you want to create a home server that you expose to the internet, use a VPN, or if you stick with SSH, at a minimum change the default port.

-kwiknick