Category Archives: Linux

No-think link (redone)

When I first used ln, I expected the behavior of ln source link to work. But ln is slightly more complicated than that. While learning it from the beginning, I discovered it does not always resolve the path correctly; additionally, it doesn’t not error if the source is non-existence. I discovered that this was necessary because ln is designed to be versatile. So I understood that one would want links at times to be created that don’t exist yet, but it was unhelpful to me in the way that I felt ln should logically work, and the way that I wanted to use it.

Originally, I would do a link like this and it would be broken:

# ln -s ../dir/file dir/

I’ve attempted other links since then that too (of which I can’t remember now) would also be broken. So the way I discovered to do links correctly without doubt was to use whats called the fully-qualified or absolute path (i.e. a path defined from root [/]):

# ln -s /home/username/Document/file /home/username/Desktop/file

There’s a program called realpath that does this, so I wrote a wrapper script for it and it turned out to be pretty easy. The script resolves the absolute paths, verifies the existence of the source directory and link parent directory, and detects write permissions prompting sudo when needed. It works like this:

# lnk ~/Documents/Resumes/ ~/Desktop
‘/home/username/Documents/Resumes’ -> ‘/home/username/Desktop/Resumes’

By doing:

# lnk ~/Documents/Resumes/ ~/Desktop/Resumes-I-like
‘/home/username/Documents/Resumes’ -> ‘/home/username/Desktop/Resumes-I-like’

a specifically named link will be put on the Desktop.

# lnk /etc/fstab  ~  # or use ~/fstab-edit
‘/etc/fstab’ -> ‘/home/todd/fstab’

If trying to link to a write-protected directory:

# lnk /usr/share/vim/vim73/vimrc_example.vim /etc/vimrc
[sudo] password for $USER:
‘/usr/share/vim/vim73/vimrc_example.vim’ -> ‘/etc/vimrc’

An error message will appear if the source or link parent directory doesn’t exist:

Non-exist: .bashr

Limitations:

* The script will work for just about any instance with the exception of removable media where relative-paths would be better used.

Encode an Audio file to Video file

I wanted to convert an mp3 file to an mp4 or avi file because I wanted to be able to use it on my PS3 ( the PS3 has a basic audio player that doesn’t save position [ particularly troubling for large audiobooks ] ). This although is good for audio posting on youtube… I found a script by Jeremy Tharp that needed a bit of a tuneup (quoting parameters for file names with spaces, fixed exit status, better detection for the duration) and it works pretty good:

External monitor as Discrete

I use my laptop primarly at home with an external monitor as discrete, meaning that I have the laptop monitor turned off and I only use it. At times this is also called a dedicated monitor. GNOME can be set to disable the laptop monitor and enable the external but it wasn’t able to hotplug the monitor after I returned the laptop, and at times wouldn’t do so after resuming from sleep. Also in the proccess I discovered that the X.org server DPI setting wasn’t being done correctly and that GNOME’s text scaling needed to be adjusted. So I decided to do it in a script and it turned out to be pretty easy.

I wrote the basic script that toggles monitors depending if the external monitor is present, then it detects correct physical size dimension of the screen so the the correct DPI can be set. After this, I added a startup script (.desktop file), a pm-utils script to runafter resuming, and a udev script to detect andset the monitor when plugged in. The udev rule is generic but appears to be working for a lot of people, it relys on Kernel Mode setting (KMS) so doesn’t work for me wiht the catalyst driver, but every thing else works great. I put it on github for any who like to look at it.

The bash script cannot be used right away instead a couple bit will need to be directed:

 The package cannot be installed directly and be expected to work, some edits
 will need to be made.  First, in the resume script '80_discretemon' a username 
 will need to be defined; next, the monitor names will need to be defined as
 created by the driver in 'discretemon'.

Also, the monitors can be defined in xorg.conf but the fix for after resume from sleep, remains.

Section "Monitor"
  Identifier  "0-LVDS"
  Option      "VendorName" "ATI Proprietary Driver"
  Option      "ModelName"  "Acer Aspire Laptop Screen"
  Option      "DPMS" "true"
  Option      "TargetRefresh" "60"
  Option      "Position" "0 0"
  Option      "Rotate" "normal"
  Option      "Disable" "true"
  DisplaySize  344 194 # only works with xrandr disabled.

EndSection

Section "Monitor"
  Identifier  "0-DFP1"
  Option      "VendorName" "ATI Proprietary Driver"
  Option      "ModelName"  "Samsung SyncMaster SA350"
  Option      "DPMS" "true"
  Option      "PreferredMode" "1920x1080"
  Option      "TargetRefresh" "60"
  Option      "Position" "0 0"
  Option      "Rotate" "normal"
  Option      "Disable" "false"
  DisplaySize  476 268 # only works with xrandr disabled.
  Option      "DPI" "102 x 102"
EndSection

Markdown to WordPress Format

When I discovered MarkDown I was in love, it was very nice to discover an easy, clean, well-thought-out markup language. I wanted a way to be able take my detailed notes, have them easy to read, and then to be able post them here on the blog that would be in a nice WordPress format. Yesterday, I wrote about discovering pandoc which enables a person to write in markdown and have it converted to HTML. To be able to use the HTML code created by pandoc in WordPress it needed to be slightly edited and cleaned up. Therefore,… I created a bash script for it.

Example conversion from MarkDown format to WordPress format

It works pretty good. Basically it removes tags for paragraphs (<p>), cleans up code blocks, improves formating, as well as doing a few other things. I haven’t gone through all permutations that pandoc conversion can do so a few thing swill be left out, but otherwise it should work for most things. If anything needs to be added please let me know.

Pandoc-flavored markdown: Perfect!

I’d been looking for a way to convert my notes to webpages. Typically I wrote my notes in .txt form and then went through them and added links, formatting… when I was ready to blog them. Recently, I had asked StackOverflow if I could convert MediaWiki format to HTML. I’m an Administrator for the Arch Wiki so I’m very familiar writing this format. This is when I learned about pandoc. Pandoc’s author describes pandoc as, “If you need to convert files from one markup format into another, pandoc is your swiss-army knife…“.

Plain Text Example

I planned to write my notes in mediawiki format and then convert to HTML, however I’d been using StackOverflow lately and started to learn Markdown Prose and really like it. Markdown’s is designed to be easy to write and read: “Markdown is a text-to-HTML conversion tool for web writers. Markdown allows you to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML)“. Markdown is so easy to write that it makes sense that sites like StackOverflow and GitHub are using it.

Markdown, Markup Languange

Pandoc has extended markdown to use code blocks ```, tables, and a few other things and converting is very basic:

pandoc file.md -o file.htm

I’m in love, I’m in love, I’m in love :), as it will save me a good bit of time in editing/creating Documentation. Tomorrow, I’ll post a bash script to clean up the HTML to be able to put it in a WordPress Blog.

Embedded Scripts in WordPress with GitHub Gist and Update Script

I asked at Stack Overflow recently if I could embed a text file into a webpage. My reason was basic: I wanted to be able to use my newly created GitHub script repository to be my source for scripts I posted on this blog. If I was able to do this, I reasoned, than my script on the blog will be up-to-date when I updated my GitHub repository. Unfortunately, there appears to be no direct way to do this that I could find so I look for an alternative and found GitHub Gist. GitHub Gist’s description:

Gist is a simple way to share snippets and pastes with others. All gists are git repositories, so they are automatically versioned, forkable and usable as a git repository.

I was hoping that there would be a way to link a script but there isn’t. Basically the standard process it to visit the GitHub Gist WebUI paste the script, config, … and then post the link on its own line into WordPress.

Because this creates git repository it means it can be updated. So I wrote a script does two functions: 1) Creates a repository for a file; 2) updates all files listed in the script with a Gist repository.

Works pretty good, there are a couple caveats though. First, Gist does not recognize the interpreter on the first line of a script and instead uses the extension. I tend not to use the .sh extension but I wanted syntax highlighting so the script on the blog now are labeled as name.sh which I guess isn’t a huge deal. Second, each script must have it’s own repository or all the scripts, configs… would be placed when put into a post. Not sure if this a breach of etiquette but I think I’m ok.

The script requires defunkts excellent gist command line upload tool.

The syntax is such:

 ghsync-gist   - Add or update gist repo(s)
  a - Add gist repo for file(s)
  u - Update all gist repos for all files

crontab

Acer Aspire 5560G-7809 Laptop: A Gamble Worth Taking

Typically it hasn’t been recommended to buy an Acer, at least in my circles. From the surveys I’ve seen generally Acer rankings are last of the major computer manufacturers. Astonishingly they rank close to the top of units sold. When I saw this, I deduced that Acer likely made possibly shabby computers sold at basement-prices to a portion of the population that was virgin. So I’m not sure what I was thinking when I bought my Aspire laptop except, “If that’s true, thats a really good price; I have to have it.” I had been using a ten-year-old laptop up to now so this was by best shot to the moon orbit.

I heard about laptops that were “Desktop Replacements”. I was hoping to find something in that area: a powerful-ish core in a mobile unit (with a decent gaming card). I’m not sure the Aspire 5560G-7809 [1][2] would qualify as one officially but performance in Windows and Linux is good (at least as best as I can qualify from a 10-year-old laptop perspective). The basic specs:

Specifications
Processor AMD A6-3420M Quad-core 1.50 GHz
Memory 4GB DDR3-1066/PC3-8500
Hard Drive 320 GB SATA 5400rpm
Optical Disk DVD-RAM/±R/±RW-Writer
Screen 15.6″ 1366 x 768 Glossy LED
Graphic Card Dual-Graphic -/AMD Radeon HD 7670M

All this for $550 dollars from TigerDirect. The closest comparable model was from HP for $750. I was really recommended to change the RAM speed so this was the first thing I did. Along with the laptop I bought a two stick pack of PC106-1333 8GB memory from PNY for $41 dollars only to have it be non-compatible (or I guess it could have been busted [but passed memory test]). After that I got it from crucial because of their Guaranteed-compatible promise and the speedup is noticeable.

I admit that I got the 5560G because of the graphic card to be able to play games, it was extremely appealing to me. The Notebookcheck tests on it seemed to me to be real good for a mobile graphic card. I was able to get into Dungeon and Dragons Online and the playability was good with the auto-detected medium-high graphic settings. Been thinking about SWTOR, hmm.

I’ll probably one day get a Solid state Drive down the road for it, the 5400 hard drive speed is definitely hard to miss at times. The one from crucial sounds pretty appealing, at $170 dollars though ughh, and I’m not sure I can live with 125GB.

The screen is nice and bright and seems to have good color replication though it does have a limited-gamut and viewing angle (a typical 1366 x 768 these days I’m told). It uses an LED which is nice; glossy, not so. Having it be so reflective worried me at first I was real surprised though when I turned it on how it made that shiny virtually indistinguishable.

Keyboard and touchpad feel good. The keyboard is full-size and key pushes offer an easy, uniform resistance. I really like the touchpad. The surface provides a nice bit of friction for feedback and the size fits really well. Wish manufacturers would get away from touchpad tapping on as default however (be nice if even there was a hardware way to turn it off).

The look and balance is nice as well (if you can’t tell the look from the photos). Doesn’t weigh too much and doesn’t feel off-kilter like other laptops I’ve experienced. The hinge is sturdy and pivots nicely.

Pluses and Minuses

  • + Price
  • + Graphic Card
  • - 5400rpm Hard Drive
  • - RAM Speed
  • - USB 2.0
  • ? USB port in front of DVD-writer

Linux

Site note first: I can’t believe I am saying it but I like Windows7. It’s well put together and has good help. Out of the box everything worked pretty well. What can I say though, I like hacking; plus I love open-source.

I’m not sure how I got so lucky buying this but after installing Ubuntu everything just worked. The reason I haven’t been using Arch exclusively anymore was because no matter what I tried I could not get suspend to work. Because I came to have limited time and needed my laptop to be able to suspend, I had to give up Arch. After I install Ubuntu 12.04 I hope to be a able to install Arch again and put Ubuntu’s Unity on top of it.

Final Thoughts

Gnome 3 and hence Ubuntu’s Unity are new and have problems with the Radeon drivers (both the proprietary catalyst driver and the open-source version) and desktop effects are laggy. I had thought to buy a laptop with an Nvidia graphic card because I had good experience with it before but after reading this post Linux users should probably think twice about buying laptops with optimus technology. So the only question I have left is how will this laptop do over time? For now at least, I’m very very happy.

Sudoers Permissions as a File

I learned that for granting root permissions to certain programs that it is easer and more constructive to use a separate file. sudo must be told to look in a separate directory in its configuration to be able to do so.

sudo visudo

Likely all distributions have this available and it will be listed at the end:

#includedir /etc/sudoers.d/  

The # is necessary. Also the trailing forward slash is likely necessary (I had to add it); when it wasn’t added, files in /etc/sudoers.d/ would not always get recognized.

Here’s my configuration built from an excellent tutorial in the Ubuntu forums. I usually build these per user naming them user_<USER>.

# Allowed root permissions of programs for user USER

# Aliases
Host_Alias HOST    = aspire
Cmnd_Alias G9LED   = /usr/bin/g9led
Cmnd_Alias IOTOP   = /usr/bin/iotop
Cmnd_Alias PACKER  = /usr/bin/packer
Cmnd_Alias PACMAN  = /usr/bin/pacman
Cmnd_Alias SANDFOX = /usr/bin/sandfox
Cmnd_Alias MYPROGS = G9LED, IOTOP, PACKER, PACMAN, SANDFOX

# Programs allowed for user or computer
todd HOST=(root) NOPASSWD:MYPROGS

The configuration will need to proper-permissions:

sudo chown root:root /etc/sudoers.d/user_<USER>
sudo chmod 0440      /etc/sudoers.d/user_<USER>

Toggle Unity Desktop Effects

Not using desktop effects in Linux helps gaming a good deal, improving frames-per-second and smooth ability. Using Ubuntu’s Unity I’ve noticed gaming gets effected quite a bit. Here’s a script that can toggle them on and off (note that you have to login with desktop effects enabled for this to work). Thanks go to Mossroy and Scott Severance.

Samsung Syncmaster SA350 Monitor: Thoughts and Settings

The Samsung Syncmaster SA350 monitor is a 21.5″ LED monitor with 1920×1080 resolution. I had always wanted an external monitor for my laptop and it has turned out to be really useful. This isn’t a review because I haven’t owned many monitors but I have seen enough monitors to say that this seems to be a pretty good one. I got this three months ago and I can honestly say that I keep appreciating it more over time: good color reproduction, nice brightness, good contrast. The movie high-definition resolution (1920×1080) I was hoping was enough to put applications down side by side and be able to view them and for my needs (basic text editing and internet-browsing) it works:

From my research Samsung is a real good brand to look into when looking at getting monitors. While I am not experienced in using a good different number of monitors, I can say that this monitor I’ve felt comfortable with. From previous experience of using other peoples monitors (schools, friends, and libraries) this by far has been the easiest on the eyes, very little eye-strain even when used for long times. One may comment that with a resolution of 1920×1080 on a 21.5″ monitor that it may not be the best dots-per-inch and they’d be right. It calculates as 102 DPI just above 96 DPI which is still oddly sort of a standard. That said fonts still read easy (take a look a above pic to see what I mean). For some unknown reason though, the Xorg server forced a 96 DPI on it when booting (haven’t been able to figure out why) that required me to find a rather lengthy work-around for.

Settings

As shipped the SamsungSyncmaster SA350’s LED monitor is very bright (almost stinging eyes bright) but isn’t calibrated at all. The settings need a massive adjusted as everything will appear washed out. Having been through photography classes and such I’ve developed a good sense in color balance. Once the settings are done right this LED feels really good (though I still have to get used to the the grey-bare tint LEDs give off). These are the settings:

Picture
Brightness 100
Contrast 24
Sharpness 60
Magic Bright Custom
Magic Angle Off
Coarse (set by auto-discover) 2200
Fine 35
Response Time Normal
HDMI Black Level Normal
Color
Magic Color Off
Red 0
Green 19
Blue 55
Color Tone Custom
Gamma Mode2
Size and Position (necessary to set when using VGA)
H-Position 54
V-Position 40
Image Size Wide

Follow

Get every new post delivered to your Inbox.

Join 53 other followers