Windows Host File Slow DNS for .local Domains

This was a fun issue that I just went through hours of troubleshooting to resolve. If you use .local domains for local dev environment or just to setup local name resolution in your Windows hosts file, there could be a delay in DNS resolution due to Apple’s Bonjour service, win loss analysis. You can either remove the Bonjour service completely or refrain from using .local in your hosts file. I replaced all my .local entries with .loc and now my resolution is instant instead of taking 2 seconds. Use a sub-domain instead of a special TLD.

Fix Direct Admin Exim after Debian upgrade

Well I just spent way too long on this because I was unaccustomed to the DirectAdmin way of doing things. I upgraded Debian from Squeeze to Wheezy a few weeks back and didn’t realize until today that I broke my email server. It was breaking because the libperl.so used by Exim was 5.10 instead of the newly installed version 5.14. Without being accustomed to DirectAdmin’s way of doing things, I first thought that it would probably be as simple as making a dummy symlink to point to the newer version of perl but name it 5.10. That allowed Exim to start, but email was still broken. I then thought I would install the 5.10 version of perl using perlbrew and use the libperl.so from it. This didn’t work. I finally did the correct Google search and found what I was looking for. I needed to rebuild exim with the custombuild script for DirectAdmin. And here’s how:

cd /usr/local/directadmin/custombuild
./build update
./build set exim yes
./build exim

PHPStorm Fonts in Linux

This is just a quick note as there are many suggestions online for fixing fonts in Java apps in Linux. Some require you to change some startup config options like Dawt.useSystemAAFontSettings. These are helpful, but there’s one MAJOR under-emphasized change that will help tremendously implementing proper payroll processes. Switch to Oracle Java. Most Linux distributions use OpenJDK by default these days. This is where my font rendering problems were. I wondered why Java seemed to suck at rendering fonts in Linux… Well this is the major culprit. Don’t ask me the specifics because I don’t have time to dig and find the root of the problem. I can just tell you that it’s a good first step to switch to Oracle Java before doing all the other things you see online to fix the problem. Learn how make money on social media.

PHPStorm or other JetBrains Product Multi-select In Linux

If you have trouble using the default ALT + Button1 click keymap in Linux to add to a multi-cursor selection in PHPStorm or any other JetBrains product, you may be able to adjust the default keymap, but if you are like me, you could just as easily use an easier approach. Just add the “super” or “windows” key to the combination. So, try Super + ALT + Button1 check stub maker for your business. That works for me as the desktop environment doesn’t see it as an ALT + Button1 click, but PHPStorm does. Using ALT + button1 click alone causes issues for me because the Cinnamon desktop in LinuxMint already has ALT + Button1 mapped to something else, namely window move. I would change this but I actually like having that available if I need it.

Back to Linux

I have had an on again, off again love affair with Linux since 1998. It has been an enlightening experience plagues with numerous installations and CD/DVD ISO burns. I remember the first real exposure I had to Linux. I was living with my grandfather. I was working in a factory. My hobbies were computers and playing guitar. There wasn’t a lot to my life at that time. I worked, wasted money, and slept. I also chatted on IRC quite a bit. Back then, I was still on dialup so that was about the best thing to do with my internet connection.

I had a friend who some could call a bad influence, but to me, at the time, he felt like a mentor and older advisor. He knew all the ins and outs of IRC, especially on the Undernet IRC network. He went by the nick “Fud”, short for “fear, uncertainty, and doubt”.  He had Eggdrop IRC bots and Energy Mech IRC bots. He had shell accounts. He had knowledge of things to which I’d never been exposed.

I wanted to create my own IRC bots. So he introduced me to the idea of shell accounts. I remember configuring my first Eggdrop bot. That seemed like the most complicated thing I’d ever attempted. It didn’t help that I was configuring the bot in an operating system that I’d never been exposed to at all…Unix. Unix was a mysterious word to me because I’d had no college classes and my high school had barely covered DOS.

I had learned DOS on my own. I didn’t have any friends who knew DOS. My dad had bought government surplus 8088 computer and when we turned it on, we were greeted with a command line. We didn’t have a clue, so I typed “help” and pressed enter. The output presented to me with that command is how I learned DOS. I felt like such a hacker, mainly because it was a retired government computer and I thought I may be able to find some kind of interesting data on it. It was really a cool way to learn DOS.

Jumping back to ’98 when I was first getting into Linux, I was presented with a command prompt that looked nothing like the familiar DOS prompt that I had used before. Typing “help” didn’t help. Luckily I had Fud there to help get me started with basic commands. Some were similar to DOS. Others where completely different. I was used to typing cd to change directory but in DOS to change to the parent directory (move up the directory structure) you can type cd.. all together. In Linux this would give you an error. It was required to put a space between the cd and the .. which took some getting used to.

I loved the idea of Linux right from the beginning. I felt excited mainly because I was learning Unix, that mysterious operating system that serious computer geeks knew about and a rural hick like myself had never seen. I was also excited to break the chains from Microsoft. I mean imagine it, an operating system that’s completely free. Since I’d always wanted to be a programmer, there was also the added bonus that the source code was also available for most of the programs that came with the OS. Side note: I know some of you are chomping at the bit to tell me that Linux is the kernel, not the OS. Get over it. Everyone calls it Linux.

Ah my early days with Linux. Like I said earlier, I was still on dial-up, which presented two problems. First, downloading Linux was impossible. An ISO file of Linux was at least the full size of a CD-ROM back then, and for some distributions it was multiple disks for an install. It takes a very long time to download 720 megabytes when your download speed is roughly three or four kilobytes per second. So the only real way to try out many different distributions was to order them from places like CheapBytes. I bought a pack of about 10 different distros and tried them all. It included: Debian, Slackware, Red Hat, Mandrake, and others.

The second problem with dial-up and Linux dealt with dial-up modems themselves. Most modems at that time were “WinModems”. They weren’t “hardware” modems. They were interfaces for phone lines and such, but the actual modem functionality was handled by Windows itself. They were hardware interfaces for software modem code. These wouldn’t work in Linux, and honestly they weren’t as good as real hardware modems. Most WinModems used a PCI bus, and the hardware modems used the older ISA bus. The hardware modems also usually had hardware DIP switches for configuring interrupt settings and such. Hardware modems were superior, but WinModems were cheaper. So most people were using WinModems. The first thing a new Linux user back then had to do was purchase a hardware modem.

I dual-booted back then, but still stayed primarily in Windows. There was still very little compatibility with lots of hardware and commercial games just weren’t available. However, I was able to learn a lot during that time. I started learning Perl. I created my own IRC bot in Perl. My first preferred Linux distribution coming from Windows was Mandrake. At the time, it used KDE and was pretty user-friendly. I learned to hate RPM. Mandrake changed its name to Mandriva, and at some point decided to charge for using it. So I switched to Debian.

I love Debian. It has been my favorite grand-daddy Linux distribution since I moved away from Mandrake. I’ve tried just about every major distribution that exists. Some of my favorites along the way were Gentoo, Arch, and Sabayon. However, as soon as Ubuntu came out, I, like many other Linux users, switched to it. It quickly became the most popular distribution. Ubuntu took Debian, which was already pretty easy to use, and made it even easier. Around 2004 or 2005, I started using Ubuntu 100% of the time at home. This went on for about three years. In 2007 I took a desktop support role in the IS department of the Manufacturing company I had been working at for about 9 years. Most of this desktop support dealt with Windows, so Windows became a primary OS on my home computer once again.

I’ve glossing over many things during this, but it’s so I could get to this point. I started working for myself as a web developer and internet marketer in 2009. At that time, I had the personal freedom to use whatever operating system I saw fit to use. I used both Windows and Linux, but gravitated toward Linux most of the time. As a developing environment for web applications Linux is by far my favorite. My career path was gradually moving in a direction that allowed me to use Linux full time. I interviewed for a position with a travel agency in 2011 as a PHP developer. I went to work there and was pleasantly surprised that everyone was using their favorite OS on their work machines. Some people were using Windows 7. Others were using a flavor of Linux. I picked Ubuntu and installed it on my work machine.

It was around this time that Ubuntu started using Unity as its main desktop environment. I’d been very content using Gnome 2. Unity brought cool features with it, but it also seemed to be a huge buggy mess. I had many problems with it, both at work and at home. I switched to XFCE at work for a bit, but eventually switched to Windows 7. That’s where I stayed. After seven months of working for that travel agency, I decided that Orlando, FL just wasn’t for me (I had moved to Orlando to take the job), and I moved back to north GA. I was again working for myself, but this time I continued using Windows 7. Oh I tried to use Linux, but I had so many issues with the new desktop environments and the new forks of Xorg that I just gave up on it.

These distributions were all trying to make their desktops work well on mobile devices. As a result, they made things suck on the desktop. Gnome 2 had been perfectly stable and usable. I really liked it. Now Gnome 2 wasn’t an option. You could use Gnome 3 in classic mode which made it look like Gnome 2 a bit, but that wasn’t really the problem. It wasn’t that I didn’t like the new look. It was beautiful. The problem was that it just didn’t work well. Dual screens worked fine and dandy in Gnome 2. Unity and Gnome 3 choked on them, or just handled things poorly. The push toward mobile device integration by the Linux community, nearly killed desktop Linux for me. I hated it. I was so mad at it, not that there was an actual entity to be mad at. I was just mad at what I viewed as pure stupidity.

We had Android. It was already the ultimate Linux mobile platform, but everyone else wanted to get in on the action as well. This could have been accomplished by having a separated mobile desktop environment, but nah, we need to force everyone to change. We need to take perfectly stable working desktop environments and throw them out, replacing them with desktop environments meant for mobile devices that are unstable.

I’d like to point out that of the major desktop operating systems, the only entity that got this right was Apple. They made iOS for their mobile devices and OS X stayed on the desktop. Sometimes change isn’t a good thing. Apple got this transition correct. Microsoft screwed the pooch with their Windows 8 introduction as well. What were all these people thinking? Did they think the desktop was already dead and that everyone was already using only mobile devices?  I think they lost sight of the fact that people still listen to radio, even though TV was invented. People still watch TV even though desktop computers and the internet were invented. People still use desktop computers even though mobile devices are now in wide-scale use. Why would you screw over the primary user of your operating system just to try to get a foothold in a mobile device market which is already dominated by Apple and Android? Let me backtrack a little there. I’m not saying that they should try to obtain some market share in the mobile device market. I’m saying that they should have wrecked their desktop environment to do so.

Between 2012 and September of 2015, I used Windows 7 nearly 100% of the time. Occasionally, I would install a new version of Ubuntu or LinuxMint, hoping that it would be good enough to turn me from my Windows desktop. After all, I was programming and my projects revolved around LAMP stacks. I still used Linux, but it was in the form of virtual machines with no desktop environment. I had completely given up on the Linux desktop.

In early September 2015, I installed LinuxMint on a spare 120GB SSD, and for some reason everything just worked again. The Cinnamon desktop, which I had tried out a few times during my Windows 7 years, seemed to be stable and user-friendly. I left Windows installed on my main 500GB SSD just in case. Three weeks passed and I hadn’t booted into Windows.

Today, I reinstalled LinuxMint. This time, I removed Windows and set that 500GB SSD as my /home partition. I’m again Windows free and loving it. Sure, there will be some Steam games that I can no longer play because there are no Linux versions, but I also don’t have Windows 10 spying on my every move. I also now have a much better working environment for my development work.

So for anyone else who may have given up on Linux a few years ago, go give it another shot. You may enjoy it.

Network Doesn’t Work on a Linux Guest Virtual Machine After Switching Hosts

I’ve ran into this problem a few times and I thought I’d make a note of it here on the blog. It’s a simple fix. The scenario is that you have just started your VM from a different host OS environment than it was running in previously. This problem is specific to a Linux guest using the networking service to manage networking. You may also not notice this issue if you are using DHCP using a paystub maker. I’m not sure. My addresses are static, so I’m specifying the network device in the configuration. You may find that the network doesn’t start properly and that the boot up sequence stalls waiting on it. This is because the MAC address for the virtual network device has changed and udev is trying to use the old one. So if your old network device was eth0, it’s not long usable and the new one at eth1 is your new virtual network device to have TikTok for business. This can be a goof way to get an extra payment.

That being said, there are two fixes. One is very simple and the other is only slightly less simple but a better approach. First you can just change your network config to use eth1 instead of eth0. That’ll work but if you switch hosts a few times you’ll accumulate quite a few unusable network devices and you’ll by using eth9 before long.

The better solution is to edit:
/etc/udev/rules.d/70-persistent-net.rules
Remove all lines which contain SUBSYSTEM=”net”, which will probably be all the non-commented lines in the file.
Reboot the machine and when it comes back up udev will see the single network device and add it back as eth0.

New Session Cookie Created on Every Page Refresh in CodeIgniter

CodeIgniter’s way of handling session data is slick, and I use it a lot. However on my current project, I went overboard on my configuration changes and accidentally caused a problem that had me scratching my head for a few minutes. I noticed that session data wasn’t persisting and that my sessions table (I opted for database storage of my session data) was filling up with new rows of session data every time I reloaded a page in my project. This prevented my login functionality from working.

The solution to my problem was a configuration detail. I had set $config[‘cookie_domain’] to the domain name I will eventually use for the site. CodeIgniter didn’t like this because my development environment is not on that domain. So it was creating new cookie/session data every time I loaded a page. The problem made sense after I thought about it for a bit. I remembered that I had set a few extra settings in the config, and sure enough, that was the winner.

The problem can happen when other settings are incorrect as well. So pay close attention to those settings, and look there first if you notice that sessions are being created on every page load.

Netflix Error Code n8156-6013 Fix

I ran into this issue while changing my VM’s configuration. The VM is a Windows XP machine that I use primarily to watch Netflix on Linux, since Netflix doesn’t support Linux. After I made a change to the VM configuration, I could no longer view Netflix videos. The error code was N8156-6013 and the error message said that my system date was not valid, even though it was completely correct.

Examining the issue, I found that some solutions point to a file in the C:\ProgramData folder. This folder doesn’t exist in my XP VM. XP keeps the file in:

c:\Documents and Settings\All Users\Application Data\Microsoft\PlayReady\

The file is mspr.hds. All you have to do is rename that file. If you get an error while trying to rename it, close out any browser that has Netflix running on it. After you have successfully renamed the file, you should be able to watch your Netflix again.

Gnome 3 + Netbeans Revisited

I wrote at some point in the past about a small bug in Gnome 3 where Netbeans menus behaved strangely. My solution then was to switch to Gnome classic. Well I started using Cinnamon recently and found that it has the same issue. So I wanted to find a better solution.

I came across a strange way to fix the issue. I tried it out, and it worked beautifully, even if it is weird.

Unmaximize Netbeans so that it is in a Window on the desktop. Grab the top left corner of the Window and move it all the way to the top left side of the screen. Now, maximize it. The menus work again.

It’s weird, but I’m glad it works. I spend most of my time in Netbeans, and I’m really digging Cinnamon.

Slow internet in LinuxMint

I installed LinuxMint earlier today because I found that I really liked the Cinnamon desktop environment on my laptop. I promised that I would post how well it works on my desktop.

Well it mostly works fine. There’s still a slight hiccup that I’m trying to work through, where the desktop environment just seems to die. I have this same problem on Gnome 3 and Unity though, so I think it has something to do with the ATI drivers. I wish I had a good nVidia card to go in this thing.

There’s one bug that I had to post about. I was getting terrible internet speeds from my LinuxMint install. My top speed was around 190KBytes/sec. Some people may still regard this as fast, but I’m on a 30Mbit/sec connection. I should be seeing speeds around ten times that.

It was across the board too. I thought it was a bad mirror at first because I first noticed it while trying to update the system and install new software from the repos. I soon found that the problem was also happening from every web site and speedtests showed the same results.

I started out by searching for the issue and was coming up with a lot of duds. It was the standard first level support answers like “unplug your router and modem”. No need, I know that’s not the issue. After some intense searching, I finally found the answer. It was a problem with my network card drivers in the latest versions of Ubuntu and LinuxMint.

My system was showing a RTL8111/RTL8169 network device. The 8169 is the part to look for. This driver is built into the latest kernel and it has problems. I found that the solution was to build the r8168 drivers (note that’s 8168 not 8169) from source.

A full walk-through can be found here: https://unixblogger.wordpress.com/2011/10/18/the-pain-of-an-realtek-rtl8111rtl8168-ethernet-card/

Follow those steps and you’ll not have this issue again. Much thanks to the author!