2018 Goals: More Regular Writings

Target goals image from https://pixabay.com/en/arrow-target-range-bullseye-sport-2889040/

I had a few goals for 2017. Rather than having a year in a review post, I decided to narrow down my focus to software. At least two of my goals related to software. I succeeded in achieving both of those goals.

Be Proactive

My first goal, was to be more proactive in my ideas. In other words, I wanted to stop dreaming about solutions and to take action on those ideas.

How did I approach this?

Well, for starters, that meant that I had to get into the habit of writing down every new idea. Regardless of the idea and its feasibility. It did not matter what state I was in, where was I, or what I was doing. I wrote everything down and I dated it. Writing things down removes extra load from your beautiful brain and puts the ideas into a specific place. And guess what? You know exactly where that place is and you can reference it at any time.

Dating my ideas came as an after thought. Once my list began to grow and get out of hand, I realized that I needed some structure and cohesion. By now, dating new ideas is second nature by now and I quite enjoy it.

Document All The Things

The other goal for 2017 was to be more deliberate in my software development process. I wanted to be more deliberate in the ways that I approach software engineering. At the end of the day, I want to practice what I preach. I began to document how I plan, brainstorm, document, and iterate on my ideas. There is much more than that, but this was a good start.

What did this entail?

indiehacker.com image

Since I am very much inspired by fellow indie developers, I began searching for strategies. I wanted to discover where everyone hangs out. I wanted to go there and hang out with them. I wanted to give back and participate. I wanted to learn from them. With them.

Not the successful and loud ones. Everyone. And I came to the conclusion that what they do is exactly what I want to do. They want to better their process and their product. How do they do that? By being “transparent” about what they do and how they do it.

wip.chat image

Don’t dwell on the transparency word. What I mean by that is that there is a certain amount of magic in proclaiming a public goal and then working towards achieving that goal.

Documentation plays a big part of this. How? Well, if I make a public goal and everyone sees that I am working towards achieving that goal then an interesting thing happens. First, you get motivated to keep working on that goal. Second, you get immediate feedback from the world. Which bring me to the third point. You need to respond to that feedback and have a conversation. Behind those cat avatars and pseudonyms, on the Internet, are real people with real opinions and thoughts.

Avatars Image from https://pixabay.com/en/networks-personal-users-3017398/

This process of using social media requires you to actually USE it.

So, where is this rambling of mine taking me? Towards my goal for 2018 of course. I want to document things more in the open. I mean, I already do this work for myself so I might as well share it with you.

In the process, I hope to share whatever I find useful with fellow developers and to better my communication skills through it. If you cannot tell from this article, I tend to ramble a lot. Two academic degrees will do that to you. I mean, that research article or lab report isn’t going to write itself 🙉

Or maybe I should just start an ICO? Image from https://pixabay.com/en/bitcoin-currency-blockchain-2018-3047129/

So, this is why I resurfaced my blog and re-added my previous entries. This is my commitment to documenting all of the things. I hope these will be more frequent. At least for 2018. I hope that you will enjoy this adventure because I will.

Unless otherwise mentioned in the post, those projects are side projects which I work on on weekends and evenings, and are not affiliated with my work or employer.

Tags: software development, software engineering, goals, productivity, growth   |   Report a bug via Twitter

Installing Yosemite on E8400

First and foremost… I like experimenting with different OS environment just so I stay familiar. Besides having Windows, CentOS, and Ubuntu running on my computer, I decided to give OS X another try.

Computer Hardware:

As you can see, my hardware is ‘old’ by today’s standards. However, I try to get the best bang for my buck without upgrading. I only upgrade my hardware when something fails. It has been working well so far. My computer is on 24/7/365 except for random reboots and power outages. I’ve had this PC on 24/7 since 2008. I’ve had it on 24/7/365 since 2010. I am on my second motherboard (lan failed on first one), second CPU cooler (by choice), and a 3rd GPU. This CPU is amazing.

I have not installed OS X after purchasing a new graphic card Nvidia GTS450 earlier this year. I had an old 8600GTS before this graphic card. The prior graphic card had no problem with running OS X 10.6.

I decided to give the hackintosh project a shot. I installed OS X 10.6 at first. However, I noticed that my GTS450 was not being recognized. I did perform several troubleshooting steps. After searching for a bit, I found out that GTS450 support improved as of 10.7. At this point, I was debating on whether or not to install 10.7 or to jump to 10.10.

I decided to jump to Yosemite 10.10 after reading the tonymacx86 forums. A number of users reported successful bootings with Fermi graphic cards. I used my macbook to download the upgrade and make a bootable USB. The system did not boot until I added the following flags:

GraphicsEnabler=Yes, PCIRootUID=1, npci=0x2000

You can find out what each of these flags does here. After the inital install everything booted smoothly. I then ran MultiBeast. I followed the specifications for my motherboard and installed the appropriate drives. Everything worked after a restart. However, I noticed that my system experienced random freezes.

There did not appear to be any pattern to the cause of the freeze. The freezing began by not responding to any key presses or mouse clicks. However, I was able to move the mouse across my dual screen setup. After some time, the mouse cursor finally disappeared from the display(s). The system then gives a black screen and instantaneously brings the Yosemite login screen. Upon entering my password and loading Yosemite, the bug report displayed a problem with my graphic card. I spent a few hours looking for a solution.

Rather than troubleshooting a graphic card that is not natively supported by Apple (yet? will it be?), I am leaning towards upgrading my graphic card. I had previous problems with the graphic card. It is not able to support my two monitors at the maximum resolutions. I am really pushing its performance when I am editing images. Therefore, I am leaning towards upgrading my graphic card.

Ultimately, I am going to purchase a graphic card that brings my hardware closer to the Mac specifications outlined by Apple AND drives my two monitors easily (at max. resolution).

In conclusion, this group of people has done a fantastic job in easing the installation of OS X on any Intel-based hardware. Their guides are phenomenal. The difference between installing OS X 10.6 and 10.10 is night and day. It used to take me hours (or days) to research, prepare, compile, and install - took me a few hours for 10.10.

Not only do I have a working OS, but I also have a fully bootable USB that can be natively plugged into any Intel-based machine. Amazing.

Resource used:

http://www.tonymacx86.com/basics/104536-troubleshooting-issuing-boot-flags.html
http://www.tonymacx86.com/basics/116220-do-i-need-graphicsenabler-injection-not.html
http://www.tonymacx86.com/graphics/131937-chimera-hd-graphics-bootflags-igpenabler-igplatformid-igpdeviceid.html
http://www.tonymacx86.com/yosemite-desktop-guides/144426-how-install-os-x-yosemite-using-clover.html
http://www.tonymacx86.com/445-unibeast-install-os-x-yosemite-any-supported-intel-based-pc.html

Unless otherwise mentioned in the post, those projects are side projects which I work on on weekends and evenings, and are not affiliated with my work or employer.

Report a bug via Twitter

A different archival strategy for pictures on CentOS 7

I decided to learn about bash scripting in order to encrypt all of my pictures and movies before uploading them. More specifically, I wanted individual encryption and not an encryption of an entire archive of pictures and movies.

This is an exercise in improving my backups. I have a habit of not downloading an entire archive because the size of an archive is typically large. To solve this problem, I want to mimick my entire library by preserving the file structure on a server. However, I wanted to have all of my files encrypted prior to having them uploaded.

I think that by sampling a few files out of an uploaded directory will allow me to speed up my recovery as compared to downloading the entire archive. Therefore, I needed a way to encrypt and decrypt my files.

Goals that I wanted to achieve for encryption:

  • automated
  • password had to be entered as an argument
  • cipher had to be chosen as an argument
  • after encryption all of the file names had to remain original
  • all JPG files had to be encrypted individually
  • every encrypted file had to be saved into /enc/ folder with the original file name

Goals that I wanted to achieve for decryption:

  • automated
  • password and cipher entered as arguments
  • all decrypted files had to maintain its original file name
  • all JPG files decrypted individually
  • every decrypted file had to be saved into /dec/ folder with the original file name

Resources used:

https://www.linux.com/learn/tutorials/284789-writing-a-simple-bash-script-
http://www.linux-magazine.com/Online/Features/OpenSSL-with-Bash
http://www.openssl.org/docs/apps/ciphers.html
http://www.openssl.org/docs/apps/openssl.html
http://nixtricks.wordpress.com/tag/aes-256-cbc/
https://www.madboa.com/geek/openssl/
http://www.cyberciti.biz/faq/bash-loop-over-file/
http://tldp.org/LDP/abs/html/loops1.html

Unless otherwise mentioned in the post, those projects are side projects which I work on on weekends and evenings, and are not affiliated with my work or employer.

Tags: CentOS 7, openssl, guide   |   Report a bug via Twitter

Installing Mono on CentOS 7

Obtain necessary gpg keys

mkdir Mono
cd Mono
wget http://download.mono-project.com/repo/xamarin.gpg

Import gpg key

sudo rpm --import xamarin.gpg

Add Mono package repository

sudo yum-config-manager --add-repo http://download.mono-project.com/repo/centos/

Add EPEL

sudo rpm -Uvh http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm

Update everything

sudo yum update

Start installing Mono

sudo yum install mono-devel
sudo yum install mono-complete

Optional: Test your Mono installation

http://www.mono-project.com/docs/getting-started/mono-basics/

Running Mono

cd ~/foo/bar/
mono foo.exe

Reference

http://www.mono-project.com/docs/getting-started/install/linux/
http://www.mono-project.com/docs/getting-started/mono-basics/
https://fedoraproject.org/wiki/EPEL/FAQ

Unless otherwise mentioned in the post, those projects are side projects which I work on on weekends and evenings, and are not affiliated with my work or employer.

Tags: CentOS 7, beginner, guide, mono   |   Report a bug via Twitter