16 posts

[Part 1 of 4] Keeping Sanity: VIM environment

Author’s note: I promised myself I would get to around to finishing this post properly, but now I want to post another post which would refer to information in this post. In practice, all one needs to do to get things going is to have pathogen() set up, and to compile their vim with the python option. Most people will struggle with installation if they have conflicting versions of python set up, but if you already have this ready, then you don’t need to go through the rest here. Jump on over to this post if you’re interested in how to set up a LaTeX environment using vim!

One of the first pleasantries people have with vim is realizing they can’t copy/paste from within the terminal to external programs. The reason for this is that natively, vim uses an internal buffer to save memory from your yank/paste commands. Inconveniently, said buffer isn’t shared with your system’s clipboard. Okay, first let’s address this by adding some extra lines to our ~/.vimrc (henceforth referred simply as ‘your vimrc’ or ‘the vimrc’ or simply ‘.vimrc’ [pronounced “dot vim r-c”]). Find it by heading to ~/ and ls -la or just ls -a. Don’t know what these commands do? Try man ls.

Vim .vimrc (or vi .vimrc)

No need to use a leader key, nor install another program like xclip. What this does is that it basically copies what you’ve already selected in visual mode and saves it into a shared buffer that you can access from outside of vim. The “+y and “+p commands might require you to have compiled vim with the +clipboard configuration. More on this below. Within your .vimrc, however; you’re simply creating a macro with the “map <C-c> macro <CR> script. The <C-c>/<C-v> represent ctrl+c/ctrl+v respectively. :wq and restart any of your vim instances so that they pull the updated macros from you .vimrc. Congratulations, you’re now on your way to making vim great again!

Some uploaded dotfiles here (warning, not up to date and may change at random times)

Back up .vimrc before you swap it with what is on there. Warning, you’ll get warnings (but not errors; about 30 of ‘em). Pretend the files in the git repo are not up to date, but basically the idea is to have someplace where one can quickly reconfigure a foreign machine to their liking. This is especially true when you’re going through multiple virtual installations or if you happen to travel a lot. For me, I get to share my dotfiles with others. It opens up the possibility to getting feedback from peers if anyone cares enough to point something out. The remainder of this post will include some short summaries on adding in additional functionalities to vim – mostly via plug-ins.

[WARNING:] This is not a quick guide on how to install vim. If you’re having trouble installing a feature though, maybe this will help.

Keeping Sanity Part 1: Creation of a VIM environment

  • Install VIM from source
  • pathogen() et Cetera : vim-sensible, nerdCommenter, indentLine, NerdTree, NeoComplete

Install VIM from source

So there’s the thing.. a lot of vim installs you’ll see that come from a vanilla OS distro will be ‘light-weight’. It’ll have enough content (minimum/small/tiny) to let you look at a file, and was probably compiled under a minimum configuration. Not only do we want to unlock some of these (huge/large/full) features, but we might as well grab the latest version of the software while we’re at all. If you’re on Debian Jessie, then you’re on an older developer cycle compared to, let’s say Ubuntu 16.04 or w/e number they’re on now. Translation: your software can apply for medicare. We want a younger, newer, more fertile version of that. Yet, at the same time we want new, but not experimental-new. Therefore, we’ll compile the latest stable version from source. Warning: Wash your hands after you use the bathroom, and review the source before you git clone something. While you’re at it, make sure your /etc/apt/source.list doesn’t just go tunnel into some stranger’s server, and check the public keys you’re accepting. Honestly, the only real reason we’re git cloning in this post is because we’ve already accepted convenience for security. Didn’t your parents teach you to ….

Some background parameters:

should be about 25Mb

If it returns 0, then False.. You’ll want lua for neocomplete et al.

time to PURGE! (maybe save a backup. don’t be too brave)

virtual packages lik e’vgim’ can’t be removed, …okay
time to … from source



on my host machine it’s version 3.5.1
on my VM#001 it’s 3.4.2
on raspi#1 it’s 3.4.2
Simple steps to install + configure the vim

note that the python paths… /config paths will be machine specific
for  python2.7 I have “/usr/lib/python2.7/config-x8.6_64-linux-gnu”

python3.4 I have “/usr/lib/python3.4/config-3.5m-x86_64-linux-gnu

python3.4/config-3.4m-x86_64-linux-gnu/ is the path for VM I was running.
yours will be different.

For my Jessie-LTE dist on my RaspberryPi B+ (and here I am giving away my system specs again, please don’t hurt my robot) it’s going to be /usr/lib/python2.7/config-arm-linux-gnueabibf



So the idea is to find where your system keeps its shared libaries, and then link them by editing your ./configure command and/or file. In these examples, you’re hunting for whichever directory holds the .so extensions. To find out what you’re looking for in the pythohn2.7/”config” and python3.5/”config” paths, you’ll need to actually cd into them on a separate terminal and look around to find their address.
Try this:

for python3.5.. i don’t think i have this. It’s not part of any of the repositories I’m subscribed to at the moment, so I might have to manually install it. We’re not going to do that. I do however have 3.4 installed.

The idea right now is to go through the “Makefile” that comes with this vim repository and see what other ./configuration options I have available. then I can simply write down and plan my install here before I run it

if you compile vim w/o specifying anything, you will get the default behavior as is documented. You might as well have done sudo apt-get install vim and gotten your distro’s version of what is current. That’s not reason I’m writing this, and it’s not the reason you’re reading this. So what’s happening when you’re installing?

./configure “shell”
attempts to guess correct system values. Usually if you don’t have the correct libraries, or if chaos happens, this is where you will find out. The errors made are often enough fixed by manually going through and make changes at the lines the terminal spits out. If all goes well, the ./configure makes the makefile for your machine. The makefile installs the program. You can pass config values when you execute the ./configure file. If for some reason you can’t run it (especially if you’re SSH’d on a client Raspi) go back to ls -la and make sure you can access it from a client by using chmod on the file permissions.

make distclean
however if the make file is corrupted
rm auto/config.h works too

note: once you uncomment/comment the needed features, for python 3
for Python3s support make a symbolic link in /usr/local/bin:

try /usr/bin
ln -s python3 python3.5


ls -s python3 python3.X where is X ir Xm or 3.4m is the binary you’re looking for (against this is machine dependent)


make distclean
and use the uparrow to go back to that really long ./configure command you spent 5 minutes making sure you spelled right and run it again.

but what if you don’t have python 3.5 installed? Instead of going through the process of installing yet something else just settle with 3.1 or 3.2 if that’s what you have. They’ll be backward compatible; however, do not expect python 3.X to be backwards compatible with python 2.7.

ln -s python3 python3.1

make reconfig or make ./configure (all of that)
sudo make install

Congratulations. You can now check your vim install by typing

vim –version

Cross your fingers.

them GUIs with that F5 button refer to it as a \! “bam” It’s like when one makes a statement that their code will compile.. An audible wager to what usually becomes sudden disappointment, but worry not. It’s not really your code, so don’t be too disappointed.


So, what if none of that worked? Let’s Take a step back.. How “fresh” are your libraries? I should’ve mentioned you’ll probably want the -dev libs as well.

sudo apt-get install python2.7-dev python3.5-dev

Do you need python3.5-dev? Maybe you want *3.4-dev??? (hint*, hint*)
//this will put in a number of necessary libraries into your /usr/include/python2.7 and will save you sanity when bug hunting trying to figure out why you didn’t need to do anything on your own machine versus a new VM. As a rule of a thumb, if you’re going to be enabling any –language-interp make sure you also have the languageX.Y-dev installed by it’s side as well. You can keep calling “make” and so long as the errors keep failing on different lines, congrats. you’re making progress. Depending on your repo (e.g. if you’re using something more exotic than something debian base) packages (if that’s even you call them) just know that those repos could use completely different naming standard.

Aside from this, another major problem people will face is that their source list wasn’t configured. Anyways, once your terminal finally gets to that last make[1] : leaving dir… line you’re legally allowed to jump from your chair and yell woot.

Now you can sudo make installation
don’t forget the ‘sudo’ part :0

now do vim –version

and on the “feature list” note the apperance of +lua and +python*
These are the ones I need in order for the vim plugins that we’re going to install to work.

Congratulations! \o/ Okay, if you got vim to install with no issues, you can skip this next sub-section and go on to section 2. The items below are not necessary to install the plugins covered in section 2.

Only For the Mad

If for some reason you still can’t get things working or if you need to manually modify your make file (you shouldn’t) then you’re insane. But perhaps the following will aid some yet to be madman (or woman) in their quest to “complete installation-hood.” There are more features in vim btw. Go back to that vim –version thing. Plus.. with the below stuff, you can put your name on that vim –version list. Read on mad person.

There’s a -hangul_input listed. As a fun exercise I decided to recompile and include that feature into my vim install. As a ‘fun’ exercise. Turns out, writing and rewriting that ./configure command is cancer, so I wrote a *quick* shell script that’s (I think) quick to read, and easy to modify. The entire purpose is simply to modify the ./configure by just adding a new line and using the exec command the script runs through each lines. The way it’s written, the only thing I need to do is place it in the top /vim directory where the same “configure”. So step 1. add a new line with the feature you need. If you require specific function names, you’ll have to dive into that make file in /src go find it.

Steps on how to enable Hangul on vim

Hangul Test Text

[[ㅓㅏㅣㅑㅣ마ㅓㄴ이ㅑ덕] ]
it seems like I can insert the characters under insert mode but i need to manually switch between my key mappings externally before I can use this keyboard to exit insert mode. e.g. ctrl+c or will attempt to type ctrl+

Sill lost?

Okay, if you’re not using the configuration script, or if you’re not copy/pasting from the code window below note that all these “configuration” processes do is configure the make file that you actually then compile. Vim as a straight forward make process (yeah! Thank you developers!) so this config process doesn’t make an entire makefile from scratch. It just edits what the that’s already there. You can manually go to the makefile located in /src/MAKE to find the needed variables and comment/uncomment them to turn on/off the features you need when your compile your vim environment. If you do go into the makefile though here’s what you’ll need to switch on that hangul_input feature. Note there running the configer process in the top folder creates a makefile in the top folder. You can edit this one if you’ve already ran config. If not you can go attack the one in the src folder, but you’ll be have to hunt down the variables on your own (e.g. use my bash script! Branch it! And heart it on the github!! :D )

humm.. maybe I should go through all features and write comments on what your paths should be, and then note down the necessary libraries you should have installed… wow. I don’t want to do all that. Yeah, I’m not going to do all that. If for some stranger reason you need to have that +xfontset feature, vim /\vxfontset <enter> <n> <n> <n> <uncomment> <:wq>. By enabling –huge you’ll activate a number of the features. The trade off is that your install will be heavier.

error: not an editor command
in order to track down your variables…

grep -nr ‘hangul*’

there’s a Makefile (one out of 14 files that start with make*) inside the src folder around line 403 and 1578 that look suspicious/promising

without even viming in, we can see that src/Makefile:503:#CONF_OPT_INPUT = –enable-hangulinput

Between lines 496 through 503 there’s a block of code covering xim and enable-hangulinput. Odd that -xim has both an enable and disable function for it as opposed to just one –enable that acts as both depending on if it’s commented or not. So from here you can either uncomment line 503 in the vim/src/Makefile then make inside of the src file –> sudo make install, or you can add a line to the bash shell file with



sudo apt-get install gpm

gpm – a cut and past utility and mouse server for virtual consoles

let’s do that as well. Is it running?
ps -IC gpm (maybe wait for a reboot)

if you’re too cool for mouse support you can –disable-gpm (or –disable-sysmouse on FREEBSD/DragonFly) otherwise it should be on by default assuming you have sysmouse or gpm already working (e.g. wait for a reboot) Also, if you’re going to be adding additional lines to the bash script to automate your configuration command, make sure you leave a “\” at the end of each line in that block of code if it’s not the last line. On the terminal, using \ basically tells BASH to hold and continue the command onto the next line. It’s easy for organization really (e.g. makes it easier to read for your human eyes) Oh. One more thing. Since you’ve taken the time to compile vim from source and read this blog, there’s one last thing you can do for fuconfig-arm-linux-gnueabihfn to and be proud of yourself for having gone this far. In the bash script add in this line.

make sure the items on the RHS are in “ “ because this will simply get read as a string that’s outputted when you vim –version or :version inside of vim.

^_ ^b

When you’re reading. Kill vim. Remove compiled versions from the vim folder. And start again. Cross your fingers*

on it.
/hanguel somewhere to line 500 something

make clean
make reconfig
sudo make install

multi byte languages

let’ see


hum…probably should have noted the differences better. i think ctrl+c got me out, but still acting odd.

when a config file is 10s of thousands of lines long, blah. Kudos to the fine folks who took part of their lives to comment that documentation – hats off. To recap. You can ./configure with the –options to make the configure file automatically detect your configurations. If you’re having problems with this, then you’ll need to vim right into the configure file itself and uncomment (delete the #) the lines you want your makefile to phrase. Yes, this will require reading more instructions. Yes, this will require you to know which options you’re looking for and where they’re actually (hint: use the /search string feature) located in the file. No, I can’t just give you mine because an exact makefile will include paths that are system dependent.

Make distclean
./ (because you should have copies of your copies backed up)

Now when you vim –version

you should see the features you wanted included on that list and your name is on it! That way, if anyone uses this newly compiled software, and it breaks, they’ll know who’s office to go to and complain about it. “Oh, bob shipped us a broken vim environment again, damn it bob”

oddly enough, I can’t seem to get -hangul and -xim to show up on my VM environment


when you do “make” it goes ahead and runs ./configure with the options in the Makefile
so you either run the ./ file or the ./configure but not both.

Still nothing.. at this point, I’m not sure why it isn’t working on my VM environment. Apparently, I managed to do this on my work machine, but there’s something missing.. at this point the only real thing I can do is try to properly define my problem definition and then research the hell out of it.

Problem Definition: WhyTF isn’t this feature working on a my virtual machine image?

sudo apt-get purge vim

this language support is for folkls with no XIM support so –disable-xim

Error: can only handle multi-byte feature with 32 bit int or larger
maybe it has something to do that I’m running a virtual 64bit machine, but i’m compiling inside a real 32bit machine?
In my shell script, it seems that any new line enabling a feature that’s listed on the feature list works iffi =yes is applied . Not every configuration option requires this, but for xim and hangul this will be required.

What if I wrote a bash script that stream edits the makefile in src and use that to compile?

So, my VM machine did not have the libx1-dev and a few other libraries in it since it’s a baby brand new system I’m using for testing purposes.

From here you can select the default vim you’re on (give it the highest priority)

time to play with a new copy of my install script
I’m going to change –enable-gui=auto as opposed to –enable-gui=gtk2 since a generic machine might have a different flavor of linux on it. I’m assuming that the long make file goes through a list of popular options it phrases through, but gtk2 was what the host machine had on it.

going back to *003
+xim and +x11 are included this time, but not hangual_input

starting to suspect that xim and hangul_input are exclusive (e.g. install won’t support Chinese and Korean concurrently via option) but it does? There are 2 Xim options in the makefile (to enable and disable) and one in line 510 for hangul_input

If all else fails, you probably already succeeded installing vim. Go to ~/Programs/vim/src and what you’re looking for should open with ./vim within that folder. To verify it’s the baby you created ./vim –version and it should show you the features you included along with “compiled by <your string>” and the time recorded when it compiled. Woot. You may already have a previously compiled version of vim which you also compiled in your mad attempt to get the program working. You’ll probably find that in /usr/local/share/vim” Chances are that it may not be the program you’re looking for. In that case, you’ll either want to replace it with the one in your home folder or if you want to keep it for some reason maybe add the home folder one to your .bash_alias? It’s not recommended to randomly be installing programs outside of a package program (such as aptitude) without someway to record and track it. If for some reason you’ve read this far, we both know this rule doesn’t apply to you. Those management programs don’t keep up with the bleeding edge development cycles that define your exploited world. For everything else there’s git, but for now just keep a notepad with comments on where you’re keeping your stuff. e.g. in a directory called “/Programs.” Anyways, there’s a hierarchy of paths your %PATH will look into. Placing it in your local .vimrc will make bash/fish/or w/e call in your locally compiled ./vim before grabbing it from elsewhere. If you’re ever unsure which environment you’re in, ./vim –version

Okay, I realize this post might be long. Half of you will simply skim through it, the other half will actually read it – I don’t know why you’re doing that. So, it’s common knowledge that a person’s attention span is, what maybe 15, 20 minutes? Thus the purpose of different study strategies, which would also include reading. You might’ve noted some of your better professors or slide-show presentors, who will crack a joke or do some sort of attention grabber to get a student’s focus back on the subject. if it takes ~7 minutes to read roughly 1,600 words as stated by this article, and since we’ve established that the ~15 minute reading thing is real, I reckon that by now I should do something to grab your attention. Here’s a smaller sub-sub-section of extra things to do with your computer.

Extra! 15-minute-mark-not-so-subtle-reading-fatigue-attention-generator

So yeah, about the vim thing, typing “20b” to go back 20 words when at the end of a very long paragraph written on one line in vim is very annoying. therefore… ctrl+c

to turn on mouse support on your terminal. I prefer limiting it to just insert mode. Compile with +mouse support if it doesn’t work. Not sure? :version will tell you. Other available arguments to mouse include.

a = all
n = normal mode
v = visual mode
i = insert mode

You can combine these too to create compound rules. e.g. mouse=vi for visual and insert, but not normal. Having it on normal just gets in the way. The above can also be placed in your .vimrc.

.bashrc –> turn on .bash_alias (uncomment, usually)

(to edit or create, start putting it your aliases, check maybe the dotfile directory previously mentioned for ideas or just make your own)

and remember to source your .bashrc. Of course, none of that was necessary, you could just manually pipe them, but you will need to source that .basrc.

cowsay what now?

Pathogen() et Cetera

Now with vim compiled avec lua, python, hangul, et cetera +features we can move forward. I learned that et alii translates to “and all,” people, whereas; et cetera translates to, “and others,” things. In order to install other packages within your vim installation, we’re going to install a package to install packages so that everything becomes neat and packaged. Not even joking, Pathogen() is literally a package to install packages. Well, not literally, but essentially. It’ll add the path of vim add ons onto your vim run path. If you’re fortunate, you might even be able to install pathogen from your apt-get package. But here, we’ll just git clone it. Other popular vim packages for installing packages exist, but the author likes Pathogen(), and thus here we continue.

Install Pathogen()

To tell your vim instance what to execute, go inside of your ~.vimrc, then drop

at the top. If you want to see an example, you can grab a copy of my .vimrc from the aforementioned dotfile folder. Form now on, you just need to git clone inside of your bundle directory and modify your .vimrc in include lines needed to modify a package’s behavior. Some packages won’t run unless your vim environment has been installed with specific features running, and some if not most packages will require modifying your .vimrc in some way. Consult the proper /install.txt/documentation for specifics.

Why use the Sensible plugin? It’s somewhat of a non-defacto standard. Face it, you’re vim environment will differ form your neighbor’s vim environment which will differ form your co-worker’s vim environment, which will differ from your mother’s vim nonviolent.. etc. etc. Of course if your mom raised you well, you would’ve grown up with a well organized .vimrc format and there’d be little need to continue reading. Sensible isn’t an official standard. It won’t be something found in a ISO library. It is, however; a sensible place to begin a .vimrc file. This is especially true if you’re setting up a vim environment on a remote host that multiple people will be accessing.

And that’s it. Note that the repo in mention, like all the other repos here, are subject to change whenever the repos’ admins feel like it. You should actually spend some time looking through the source to check if there’s anything sketchy before you run it, and try not to test new stuff on a live system. Again, this goes back to the things mother should have thought you. Tidy up your .vimrc file, don’t test on live systems, and verify the binary, nay, the source code’s PGP keys. Find the canary, or lack thereof, and assume your adversaries like to make lists of any software mentioned in your blogs. Don’t mention mission critical programs in your blogs. Misinformation in your blogs. Google is not your friend in your blogs. What else? there’s not really much to write about with these plugs in. You’ll just drop the .vim files in your bundle directory and pathogen will find them. I guess, we could talke about the process of contributing to a git repo, or how to push/pull changes?

For the quick install first make sure your installation was compiled with lua and is running under one of several graphical environments. If you followed the instructions line by line in the previous section then that’s probably a bad thing, and I apologize if your system broke because of it. Assuming you did,  you’re probably using gtk (gnome took kit). This isn’t the only option available though and others exist. This plugin, however; will be one that will not work if you did not compile from source, or if your original distro has it. Must don’t from what I’ve experienced. Again, drop this into your aforementioned /bundle directory:

Now from inside a running vim thread, execute the :NeoCompleteEnable command to enable it or in your .vimrc

Note: If you search for neoComplete through the github search bar, you’ll find numerous other repos with similar or even better, more reliable code. Many of these are reputable repos, while some will always be questionable. In this blog post I’ll try to only link to places I think are reputable, but please don’t consider my recommendations solid. You should check your downloaded source and keep your own local copies if you see yourself putting these on multiple machines. You don’t want to be git cloning a script that was removed or edited while you were not paying attention.


Toogle it with

To change the symbols used in the split panel, and to map the toggle command to your leader, add these to your .vimrc. Any ascii table symbol is valid, but you might want to restrict it to something that makes sense. Furthermore, you can specify how much space the split panel takes up as shown below.

The icon above is due to wordpress’s automatic parsing thingy – interesting. I think I’ll leave it on there. Here’s a case study on NerdTree useage. Bellow and to the left, you’ll see that I have a run time error occurring due to my apparent misuse of a header file from a JSON parser library I’m testing out. So let’s go investigate. Save the current .cpp you’re working on and then just hit <leader>+n [or h/e your .vimrc has it set up]. A split screen will occur and you can go digging through the library header files and click on the file your error code on the right terminal screen spits out.

Above and to the right, you can hit “gg476” to jump to the line the run-time error gave out. As you can see, you’re inside a large header file with hundreds of lines of code, and you didn’t write any of it. Furthermore, the documentation on the library stinks. Yes, the comment does read, “Should only has one and only one root.”  It is not your job to decode all of this. Before you start going, “Wtf does any of this mean? Why isn’t anything working,” be glad the library authors decided to open source it, and be glad you even have something that hints at what you should do. However, with all this decoding mess I find myself in, I can say that nerdTree helps ease the investigation process a bit. I could probably save a lot of time by choosing a more mainstream JSON parser with better documentation, but that’s another blog post entirely.

note: in visual mode type cc to comment out selected
type <leader> cc
for me it’s “,cc” vim will wait X milliseconds. Don’t have a leader? GO back to your .vimrc and make one. How? Look up on that example .vimrc linked above.

again: go to visual mode, select the lines you want to hit, type ,cc and behold.v
What’s amazing about this plug in is that it detects which language you’re writing in and puts in the corresponding comment sign on your file for it what’s even more amazing, this being vim, is that you can simply ~./vim/bundle/nerdcommenter/pluginNERD_commenter.vom and add your custom inputs for any arbitrary language that is yet to be designed. included by default are everything from ada, django, from aap to  z8a. Furthermore, the beauty of these 3043 lines of code is that it’s all under a “WTFPL” license all this to happenb

set timeoutlen


This plugin gives you tab power! And more importantly, you’ll see some vertical dashed lines connected your tabbed and out-of-phased horizontal lines. This helps when you’re writing code and things get messy. It’s a nice visual aid to have.

(Extra!) how to github?

// side note, fish versus bash? really liking fish right now.
though, after making a change to bash_alias

// random stuff

alias notes=’vim ~/vim/bundle/vimwiki/’
and then sourcing the file

// don’t even know why this is here

on one of my split terminal screens the alias doesn’t work whereas on the other it does. odd. odd odd odd.
cowsay that is odd!

// this is a really weird blog post

that W…

so, how to github?

how to set the remote?

* adding a remote // don’t actually do this

== simpler steps ==
make repo and get a URL by using the browser gui. might be a way to do it by command line actually.

after that, hop back on terminal. Basically, I don’t know how to start a repo client side without first initiating the repo creation through the website server. Furthermore, there’s a social aspect to github, and I’ll acknowledge that I don’t have much of that social experience on it. It’s not too surprising though. Maybe I should contribute to a few projects and make some internet friends.

(Extra!, Extra!! – not vim related) Markdown – Typora

As stated on their website, markdown can be two things: a markup syntax (HTML is not a programming language), and a software suit. I was looking into vim options to terminal type and update a preview on the fly, but it got complicated. For anyone more daring than ..
okay, i want to live preview my markdown text.. i shouldn’t spend too much time on this considering the only thing in my project that uses markdown is the github readme file. but somehow it got complicated. so, here i am, going to spend more time trying to get this thing started than i might actually spend writing  it. also, it isn’t critical to creating a but it’s happening anyways
latest version of perl is 5.22.3 22 this is an even number, therefore this is stable release
released on the 14th of jan. it’s now the 20th. (at time of writing, yes this has been in draft form for a while now..)

my current version installed on my local machine is perl 5.20.2

markdown is actually 2 things. the syntax, and a software. the vim plugin i plan to use needs the working markdown software running.
requires perl 5.6.0 woot. i have it. just a little mental math.. 2.3 is not 2.30 and therefore 2.20 is greater than 2.3… because any other comparison python or matlab will tel lyou that 2.3 > 2.20 but w/e. Maybe the original authors didn’t expect it to ever go beyond version 2.9?

optional, but encouraged (note* be careful when you’re adding repos)

# add Typora’s repository
# sudo add-apt-repository ‘deb ./linux/’
# sudo apt-get update
# install typora
# sudo apt-get install typora

sudo add-apt-repository ‘deb htwtps:// ./linux/’

joule@sid:~/Programs/xdotool$ sudo apt-get update
E: The method driver /usr/lib/apt/methods/https could not be found.
N: Is the package apt-transport-https installed?

so i installed that, didn’t need to before. should verify what changed to my erc/source lists

it works. fish doesn’t resource aliases quickly, but fish isn’t my default shell environment either.

(extra! extra!! extra!!) a bash-script for install vim (from source)
Okay, this should work. I tested it on 2 different machines, but ran into problems when i tried it on the Pi. Might’ve been because it was executed via ssh so you’ll need to chmod it with a different code, didn’t check. Successfully installed vim on the pi (with the correct python dirs) when I did it manually. This script just helps automate the process so you don’t have to write all the enables by hand. When you use it, you will need to change the config-dir paths (as mentioned in the first section). Finally, you’re welcome. I hope this helps at least one person. Remember to double check your paths. We’re not on the same machine, so thread lightly.

So, I’m thinking that this will not be a children friendly blog. Lots of [NSFW] content ahead – career ending type stuff. Some of it won’t be legal in Germany, some won’t be legal in Texas, must won’t be legal North Korea. I’m looking forward to the Texas stuff. Here’s a list of topics I want to touch on.

Keeping Sanity Part 2:

  • ROS+Gazebo and YOU! (a mini tutorial on communication between two worlds)
  • How to not burn up your laptop
  • server+client hierarchy

Keeping Sanity Part 3:

  • armadillo (a matrix library)
  • how to .json without actually .json-ing
  • modeling dynamics (with .json :X)

Keeping Sanity Part 4:

  • Training your Classifier [alternate title: “How to train your Classifier”, “Classifiers and YOU!”, “5 things you need to teach your Classifier right now”, “Classifiers and Race”, “A multi-cross-sectional analysis on classifier anatomy”, “A post modern-modern analogy to classifying classifiers”].” {srly note: So, I had a professor who bragged about being able to name drop submarine captains and what s/he was having for lunch based on the acoustics received from the sub’s engine. #RedOctober #crazyIvan}
  • FreeCAD versus SlaveWorkerCAD

Some other topics that might or might not already be in draft form

  • How to B-corp?
  • Saving bandwidth – An Introduction
  • A Gentleman’s Guide to Supporting your Local Anarchists [alternate title: “Capitalism and YOU!”][]
  • Reasons Why I Don’t Write Long Posts Anymore – Vol. I of XIIV
  • Keeping Sanity Part 1b – An much shorter LaTeX Tutorial That Gets Straight to the Point, But Keeps a Long Title



Terms & Conditions

These Terms and Conditions act as a contractual agreement (“Agreement”) between you and Julio B. Figueroa, aoreugif the longest journey – a story about a guy (“I”, “me”, “aoreugif”, “us”, “we”, “our”), and applies to your use of (“Site”). If you do not agree to be bound by the terms of this Agreement as detailed herein, please do not use or access the website. YOU REPRESENT THAT YOU ARE AT LEAST 18 YEARS OLD AND LEGALLY COMPETENT TO ENTER INTO THIS AGREEMENT.

1. PRIVACY POLICY. We respect your privacy. A complete statement of our current privacy policy can be found by clicking here. The privacy policy is expressly incorporated into this Agreement by reference.

2. LICENSE. We grant you a non-exclusive, non-sublicensable, non-transferable license and right to use and access the Site. You understand and agree you have no right to modify, edit, create derivative works from, distribute, sell, rent, share, or republish any information provided on the Site or publications provided through the Site without our express consent. You further understand no ownership right in the content on this Site or publications being provided through it is being granted to you.

3. ORIGINAL PRODUCTS. We offer original products we’ve created through the Site. You hereby authorize us and our payment processor to charge your payment source in advance of the delivery of an original product of your choice for all applicable fees incurred by you or on your behalf in connection with that product. If payment cannot be obtained from the payment resource you provide or the charge is returned for any reason, your rights to access the product in question shall be void.

4. REFUNDS. aoreugif offers a 90-day refund period on any original products you purchase through the Site. Contact us to request a refund.

5. VIOLATIONS. If you materially breach any term of this Agreement, we may, in our sole discretion, terminate your access to the Site. We reserve the right to seek all remedies available by law and in equity for such breaches.

6. GOVERNING LAW AND VENUE. This Agreement shall be construed in accordance with and governed by the laws of Nevada and the United States without reference to their rules regarding conflicts of law. However, you hereby irrevocably consent to the exclusive jurisdiction and venue of the courts in Las Vegas, Nevada in all disputes arising out of or related to the use of the Site.

7. COMMUNICATION. When you contact us or sign up to receive our newsletter, you consent to receive communications from us electronically. You agree that any such communication via email shall constitute proper written communication in compliance with any and all legal notice requirements.

8. USER CONTENT. By posting, uploading, displaying, performing, transmitting, or otherwise distributing information or other content (“User Content”) to the Site, you grant aoreugif, its affiliates, officers, directors, employees, consultants, agents, and representatives a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to use the User Content in connection with the Internet business of aoreugif, its affiliates, officers, directors, employees, consultants, agents, and representatives, including without limitation, a right to copy, distribute, transmit, publicly display, publicly perform, reproduce, edit, translate, and reformat User Content. You will not be compensated for any User Content. By posting User Content on the Site, you warrant and represent that you own the rights to the User Content or are otherwise authorized to post, distribute, display, perform, transmit, or otherwise distribute User Content.




12. SITE TERMINATION. We reserve the right to no longer make available all or part of the Site at any time in our sole discretion.

13. COMPLIANCE WITH INTELLECTUAL PROPERTY LAWS. When accessing the Site, you agree to obey the law and to respect the intellectual property rights of others. Your use of the Site is at all times governed by and subject to laws regarding copyright ownership and use of intellectual property. You agree not to upload, download, display, perform, transmit, or otherwise distribute any information or content (collectively, “Content”) in violation of any third party’s copyrights, trademarks, or other intellectual property or proprietary rights. You agree to abide by laws regarding copyright ownership and use of intellectual property, and you shall be solely responsible for any violations of any relevant laws and for any infringements of third party rights caused by any Content you provide or transmit. The burden of proving that any Content does not violate any laws or third party rights rests solely with you.

14. AFFILIATED SITES. Aoreugif has no control over and assumes no liability for any third party websites or materials. Aoreugif works with a number of partners and affiliates whose Internet sites may be linked within the Site. Because aoreugif has no control over the content and performance of these partner and affiliate sites, aoreugif makes no guarantees about the accuracy, currency, content, or quality of the information provided by such sites, and aoreugif assumes no responsibility for unintended, objectionable, inaccurate, misleading, or unlawful content that may reside on those sites. Similarly, from time to time in connection with your use of the Site, you may have access to content items (including, but not limited to, websites) owned by third parties. You acknowledge and agree that aoreugif makes no guarantees about, and assumes no responsibility for, the accuracy, currency, content, or quality of this third party content, and, unless expressly provided otherwise, these Terms and Conditions shall govern your use of any and all third party content.

15. PROHIBITED USES. Aoreugif imposes certain restrictions on your permissible use of the Site. You are prohibited from violating or attempting to violate any security features of the Site, including, without limitation, (a) accessing content or data not intended for you, or logging onto a server or account that you are not authorized to access; (b) attempting to probe, scan, or test the vulnerability of the Site, or any associated system or network, or to breach security or authentication measures without proper authorization; (c) interfering or attempting to interfere with service to any user, host, or network, including, without limitation, by means of submitting a virus to the Site , overloading, “flooding,” “spamming,” “mail bombing,” or “crashing;” (d) forging any TCP/IP packet header or any part of the header information in any e-mail or in any posting using the Service; (e) attempting to modify, reverse-engineer, decompile, disassemble, or otherwise reduce or attempt to reduce to a human-perceivable form any of the source code used by aoreugif; or (f) automatically or manually scraping or copying the content from the Site without our consent. Any violation may subject you to civil and/or criminal liability.

16. INDEMNITY. You agree to indemnify, defend, and hold harmless aoreugif, its affiliates, officers, directors, employees, consultants, agents, and representatives from any and all third party claims, losses, liability, damages, and/or costs (including reasonable attorney fees and costs) arising from your access to or use of the Site, your violation of these Terms and Conditions, or your infringement, of any intellectual property or other right of any person or entity. Aoreugif will notify you promptly of any such claim, loss, liability, or demand, and will provide you with reasonable assistance, at your expense, in defending any such claim, loss, liability, damage, or cost.

17. COPYRIGHT. All contents, excluding user generated content, Copyright 2018 Julio B. Figueroa. All rights reserved.

18. SEVERABILITY; WAIVER. If a court of competent jurisdiction finds any term or condition in this Agreement to be unenforceable or null, all other terms will remain unaffected and in full force and effect. No waiver of any breach of any provision of this Agreement shall constitute a waiver of any prior, concurrent, or subsequent breach of the same or any other provisions hereof, and no waiver shall be effective unless made in writing and signed by an authorized representative of the waiving party.

19. NO LICENSE. Nothing contained on the Site should be understood as granting you a license to use any of the trademarks, service marks, or logos of aoreugif or any third party.

20. MODIFICATIONS. Aoreugif may, in its sole discretion, modify or amend this Agreement at any time. Aoreugif shall post notice of any such changes on the Site and shall email you notice of such changes if we have an email address for you. Your decision to continue to use the Site upon such notice shall constitute your acceptance of any amendments to this document. You may choose to reject the amendments by terminating your use of the Site.

Please contact us if you have any questions regarding these Terms and Conditions.

Live Updates: Post Numbered as #2 4/12/17

Okay so,

I don’t remember falling asleep. I just did. I fumbled around with my set up on one of the test scripts and had 3 ideas I was going to try. First, I copied it wrong, and I was going to read the comments to check for anything I might’ve missed. 2nd, the make check command on the top level directory went through all the demos and got a passing score. So, have a look at the make check portion of that Makefile to see how the developers are doing it (but that’s for the shell script and not the magick++ portion?). Finally 3rd, I already forgot what the 3rd route was in my head. I played around with the first one a bit and after 10minutes it worked. I don’t like it though. I’m using that “helpful” Magick++-config shell script the developers included with the backquotes in my command line. I’m not used to doing this. Anyways, the test code makes a c++ program that if you run it creates a logo.png file. Now, I’m working on a make file that incorporates the Magick++-config shell script. This means that the shell script needs to be in the directory I’m working on or linked to in the PATH. Again, this feels like an extra step. Traditionally I would have a list of all the flags my program needs and then just hardwire those into my Makefile. The script seems to work for now though. Below is the raw test code that I’m running. Shamelessly copy and pasted.

To get it to run, you need this in its own directory, alongside with the executable shell script Magick++-config. If it’s not executable use that chmod magic. Then just vim Makefile what I wrote below

my cpp compile is g++, change it to your own. To run this bad boy simply invoke make. then run ./resoScript.exe to run the newly created executable and it will create the logo.png file. To restart everything, just invoke make clean and the rm commands you see above will delete the 2 files all in one go. Generically speaking, any filename that ends in .png or .exe inside the directory will be targeted. With this, you can make changes to resoScript.cpp and destroy what you make quickly and go back and forth without having to do a lot of typing. If you keep a separate window opened to the directory on your multi-screen terminal, just press the up arrow to go back to the previous command. This make files assume that your renamed the provided test code as resoScript.cpp. This is the template, I’ll be using for this little project. Again, as mentioned in last night’s post, having those back quotes expresses the command that’s in between them. If you use forward quotes, the computer is going to wonder why you’re putting down a string. There should be a way to remove the Magick++-config shell script all together, but I wonder if the developers of that script thought it would make the wrapper library more machine agnostic? Anyways, it works. Time to expand on this little program. I should stress this, at this point, my only contribution to this is the makefile. Hopefully someone out there finds it useful. You could just type it all out by hand (every single time), but this way it’s just 2 buttons, the up-arrow then enter.


update. I went to check on my nursery, and 3 of my seeds just germinated! OMG!!! ^_^ taking photos. Will update in a future blog post

Live Updates: Post Numbered as #1 3/12/17

Hello world

Having a post ready by Sunday evenings is something I want to make a habit of. Habits are made by routinely doing something, so I should begin routinely doing it to get started. Nothing that I write is ever publication ready, but when does that ever really matter? It’s like training for a marathon. If you don’t even start training, how can someone even finish? The hardest part is sometimes just putting on your shoes in the early dawn of morning. The analogy here is, putting pen to paper, or finger to keyboard. It’s Sunday night. I just drank a cup of coffee, and I have nothing planned for tomorrow. Here are somethings I want to get done, and I guess I can try “live blogging”  while doing it. A quick internet search reveals web pages comparing this to live television.Wikipedia reads:

A live blog is a single post which is continuously updated with timestamped micro-updates which are placed above previous micro-updates.”

So, it’s “timestamped micro-update and tonight, I’m going to water my plants. Just kidding, but tomorrow I have to make a judgment call on the stuff germinating. I don’t know what unmoist soil looks like exactly, but that’s a topic for another day. Tonight, my to do list.

1: I have 1, 2 drafted  blog posts I want to actually properly post. One’s the previous one before this on worms and vermicomposting which is still titled with “Draft” in its name.The other is a somewhat-long post on the vim editor that’s been sitting in my draft folder for.. over 12 months. If there’s a 3rd it would be the one on trajectory path planning, but for now, let’s just edit and make the worm blog post reader ready. I have a couple of videos posted on my vimeo account, but the free version limits me to 500 MB uploads per week. Enough for a 4 minute video. There are some bandwidth related adjustments I need to do. If you’re reading this, understand that bandwidth is money. These textual words, and pixels that make up images all cost bandwidth; and yes, bandwidth is money. So, I’m using a 3rd party service to host videos, and I’ve been deciding on how I should do images. The current hosting provider changes the tier pricing for this website sometime around mid-November, or early-November. At my pricing plan, I’m paying for about 10 Gbs upload/download regardless if I use it or not. Storage itself is a variable cost, so I want smaller files if I plan to host them on here. CPU/RAM costs associated with the back end stuff is free now. Woot? I should double verify that.

Through out the last month or so, I took some videos, and photos. I need to reduce the file size on the photos, and I need to figure out how to use a video editor in order to upload stuff on Vimeo. I could use YouTube and not worry the limits on Vimeo, but I’m going through this “Anti-Google” stage right now. Notice how above it reads, “…quick internet search reveals web pages comparing…” and not, “I googled for XYZ?” I’m trying to get rid of it form my vocabulary. It’s a freedom and privacy thing, but freedom isn’t free and neither is bandwidth. So, how to upload? What to upload?

2. I want to make ISK. What is ISK? It’s “Intersteller Credits” for an on-line game provided by CCP. It’s also the abbreviation for the currency for Iceland, which is where CCP’s  HQ is located in. I make the majority of my ISK through market and trading. This means, a lot of spreadsheets, and more importantly, programming. The more independent you are on information, the more money you make, but it requries some time invested on some platform that you create. In tonight’s scenario, I want to automate my API calls from eveMarketer’s API. They use “swagger.” The new* “ESI”, (is it called ESI?) also uses swagger. What is swagger? It’s this: At some point, I’d like to tab into the actual CCP’s ESI and get a permission token to grab data without being dependent on EVEmarketer. I learned my lesson with eve-central. They’re gone, and partially it’s because CPP started using swagger. Other websites quickly took over their market share. Right now though, I want to use something I’m familiar with, and eveMarketer’s API is almost identical to eve-central’s API.Here are their URLS

And yes, I could just use Google Doc’s “IMPORTxml” function, but everyone and their mom does that. I’ve been using it for the past couple of years. Everyone’s spreadsheet has a backend that looks the same. I want something different. Also, I’m rebelling against Google right? And also-also, online spreadsheets is fun and all, but those function calls won’t work if you’re offline. I want a way to save API data locally, and automatically so I can start building some historical data to compare against.


Alright, so on topic 1. Last night, I installed a program for video editing. Humm, before I start posting screen shots I should probably go through the part on uploading images. There’s a program I had in mind for that, one that you can apparently control via command line. Let me find it..


Before I even start that I need to do a quick wordpres update. WP-CLI to the rescue! Good to know crayon-te-content is still working.

With that, we should have a nice a healthy wordpress.
I think that program was called image magick:

It advertised itself as something you can control via scripts, and the reason why I’m leaning towards it is two-fold. Another blogger (am i one?) recommended it, and it is apparently already installed on debian. Simple type, “display” In a long ago conversation with @georgiecel

[…] Sure the images are high resolution. But when it comes to my blog, I resize to a maximum of 1600 pixels on the long edge, but serve slightly smaller versions depending on display resolution. After I resize them (using Photoshop – though there are some tools out there that use the command line and do it as an automatic process, I think one was called imagemagick?) I save them at 60% quality JPEG. You’ll be surprised how invisible the loss in quality is. 60% cuts filesize down a lot without sacrificing too much quality. Then I run the images through the app ImageOptim just to cut them down about 1% more. If you go to my much older posts (like 2013 or something?) you will notice that the images are not as optimised and take up so many megabytes! [….] But yeah, no need to serve images much bigger than 1000-2000 pixels in width unless you really want to care about 4K monitors. The images on Stocksnap are given as a more raw 100% quality large size image, so that you have flexibility to play around with the image as much as you need.”

So ImageOptim is apparently some Map app and it’s offered on the web as a service. It’s promotional material advertises itself as, “.. saving on bandwidth.” They’re talking my language now. I mean, I would save on bandwidth by not posting up photos, but then this website wouldn’t be as pretty would it? There’s also a github repository: /ImageOptim Humm.. for a Mac. I don’t use a Mac. I’ll spend some time reading through this and Imagemagick’s documentation and then decide on a strategy for script making. That, or I’ll just look up some tutorial somewhere. The goal is simple: reduce file size, keep faithful to original image.


What did they call it, loss-less compression? The “El Dorada” of all JPEG algorithms? Nay, jpeg uses lossy compression which is different than lossless compression. Lossy differs from lossless.


And now I’m looking at” by ImageOptim. Wootness to lossless compression!

easy AF

If I were to make a real-time vision application, I wouldn’t care abouts cost. I’d care about speed. Humm.. trade-offs..


Cycling through the images I’m looking to upload, I realize that I don’t need to worry about blurry pixelated photos. My lame photography skills already takes care of that. It’s hard to pick out one that isn’t blurry. Capturing photos is an ability I need to put more skillpoints in.

Another way to save on bandwidth, is by not creating so many revisions that your website has to keep in storage @_@

Some picture fun. Here’s a slightly compressed image of a no-chill label.

It’s a large photo actually. The HTML to this text is actually resizing it with width=”300″ height=”169″. You, the reader are downloading the full image, but your browser reads those parameter and adjusts it locally on your screen. This probably doens’t have to happen. In fact, it doesn’t. This proves my point. Your browser is adjusting it to a lower resolution anyways, it’s a large photo to fit on screen (let alone to embed with text), and it takes up 2.5Mb even while it’s compressed. The original photo was a1 = 2,574,171 bytes and it was compressed down to b1 = 2,530,408, so 1 – c1 = 0.017 or 1.7%. Here’s a screen shot of that, a compressed screen shot.

So, the program isn’t lying to you when it gives your the compression ratio. It just reads the file size before and after. I also compressed this uploaded screen shot.With a2 = 128.6 kb, and b2 = 95.4 kb, 1 – c2 = 0.25816 –> 25.8%. That’s twenty-five percent decrease. If someone offers you 25%, you say,”Yes please”. Now, the issue with the no-chill label photo is the resolution. This step is just supposed to be a final “trim” before actually uploading. I haven’t really developed a ‘style’ for how embedded images should go on this site, but seeing as the default resolution values here are width=”300″ height=”169″ that seems like a good enough start for now.


There are a nummer of paths I could take right now but… Scaling, rotate images, Bezier curves.. the wrapper library is strong with this one.Although, they flat out tell you (page 3) that some of the library functions don’t work.The better side of me tells me to avoid this library, but I already started reading.

The word ‘daunting’ was used. CML processing is simple though

That should be enough, and maybe

is enough to nuke an entire directory of photos. With the Magick++ library the function call would be

If the zoom_factor value is < 0 it zooms in, and zoom_factor is > 1 it zooms out, the image changes in resolution, but the aspect ratio pixelX:pixelY remains the same. Humm.. just for fun, let’s just go with the .cpp. Okay, here’s the plan. Install the library, and then make a makefile to.. Or, just add the library to the path, and then I don’t need to link it, er… Installing is technically the same as adding to the PATH. The MakeFile will do the same job as linking it. er…

So, yes, imagemagick is stilled on this OS, but the debian FTP version isn’t even upto date yet.
via CVS

but is it really fixed? Until 8: gets updated, no it’s not. They just disabled webp on that version and moved on. I admit, I’m not even using this feature, but if I take anything from this it’s that Debian won’t have upstream versions of most programs, and even now they have plenty of security issues to be concerned about. I guess I should glad they still have people looking after it, at the same time, “free software is worth every penny you pay for it.” For now, debian has version 6 offered, the makers of imagemagick are on version 7.

Apparently now everything is ‘channel aware’. With version 7, commands like “convert” were replaced with simply “magick.” See above. A quick manual resizing trial quickly reduces that 2.6Mb photo down to under 25 kb. That’s significant. Now to automate it.

I want to create a c++ script that will take every *.jpg in a directory and create new resized versions of it in to x and y pixels. The program will ask for a lengthX in pixels, and an aspectRatio. The lengthY will be assumed.

Translation: old…

So… the authoritarian repo is on github. If i recall correctly,

but, remember to cd in the directory you want to copy this in. And that takes a minute or two to finish. I’m in my programs folder, and I noticed I have Krita installed on there. I’ve been “meaning” to use it at some point. That was about, 6 months ago? Here’s the URL if anyone’s interested in that. It’s actually pretty advanced.

ImageMagick might take more than just a minute actually. 97.57 MiB, most be a slow connection.

ImageMagick/Install-unix.txt should have everything you need to install

We can skip the “tar xvfz ImageMagick.tar.gz” step since we basically just git cloned it.

vim configure then GG tells us it has a little over 41 thousand lines of code, meh. just pretend there’s no virus in there or w/e.

Back to the install.txt, oh god. this isn’t full automated. I actually have to read through this.
Okay, so inside the repo

then skip to line 497 and that should be the rest. Maybe that was just a scare. If there’s anything to check for it’s the line

It should be on the output table by default. This is the feature we want to use for the c++ class wrappers. The installation seems typical now. Next is just

As I microwave my dinner I verify the integrity of this install. At this point the old identify -version command above spits out a cannot access error.
make check
tells me ImageMagick 7.0.7 is installed and nothing fails. 86/86 passed demos.

display  failsi
identify -list configure
fails also

the system isn’t able to reach shared library. the exact output is

some help:
also, the install.txt reads

Again, i’m installing an a debian system, and it seems to be that the imagemagick folk have things ready for solaris/unix machines. So yeah, let’s just do that.

and wow, it works. I don’t know why it works, but it works. <— most said line ever.
What is ldconfig? Well.. man ldconfig reads,
ldconfig – configure dynamic linker run-time bindings
Alright, I’m going to eat dinner, and then I’ll do a test run on the c++ wrappers.

oh, and btw.

spits out

so, woot woot!

With it now being tomorrow, I’ll call this an end to this “live” blog.

If I read the word, “automagically” one more time I’m going to puke.
So, I’m going to have to make a makeFile for this.

Inside /Magick++/bin there’s a “Magick++-config” script. I’m a little confused as to what it does exactly. Is the useage output suppose to change based on the machine you’re using? Is it just a little reminder script made to bring out system variables to tell you how you should link the headerfiles? Humm.. why are the flags in backwards quotes? Backward quotes inside “double quotations” are evaluated and expressed. Ahh..

so ./Magick++-config is a shell script. The variable usage is a string variable. The batch script goes through an if, fi test. If the previous command is 0 (implying a clean exit) then it echos the string variable “usage” and it exits. The $# variable is peculiar though. The first few lines of the script are below.

Okay so, this would’ve been obvious to someone more familiar with shell scripts. Above, in “if test $# =eg 0; then” the test, is actually a program called test.

Today my complier of choice is g++. By putting in the backquoted string portions into a command terminal, we get something that’s expected, path variables. Referring back to the Magic++_tutorial.pdf linked above, in page 3, under the subtitle “Using the Magick++ library in an application” The purpose of this script file is to help you get the LDFLAGS for your system.