Fixed: gResistor not launching on Ubuntu

As many people have stated on the application’s store page, gResistor doesn’t seem to start on Ubuntu.

The Problem

If you run the program from the command line, you’ll notice that there is a missing library.

$ gresistor
<Error output here . . .>

ImportError: No module named glade

The Solution

Install the missing Python 2 library

sudo apt-get install python-gtk2 python-glade2

After installing it, you should be able to launch via the GUI or command line.

Using jQuery’s jscroll Plugin

Recently I was looking around for a quick way to implement infinite scrolling and found the jscroll plugin for jquery.

The problem was that all the examples online were broken and they all seemed to copy and paste from each other which made it difficult to figure out what worked. Finally I got something working and just wanted to post the options that I was using for anyone else that needs help with it.

The HTML


<h1>Welcome To the Site</h1>
<div class="infinite-scroll">
This is a sentence
<a class="next-link" href="/path/to/next/page">Link to next page response</a>
</div>

The JavaScript


console.log('Starting the scrolling script');
$('.infinite-scroll').jscroll({
debug: false, // Show debugging info in console
autoTrigger: true, // Start fetching without clicking a "next" link
autoTriggerUntil: false, // How many pages to auto trigger until requiring "next" click
loadingHtml: '<img src="/images/loading.gif" alt="Loading" />', // What to show when loading responses
padding: 20,
nextSelector: 'a.next-link:last', // The link with an href to the next response to load
callback: function () {
// Function called when the response is loaded
console.log('callback was called');
}
});

Backend API

Depending on your framework, create an endpoint that returns a response containing your content and a link to the next item to load (a link element) at the end. It is important that this response contains the HTML necessary for the item you are rendering and is not just a JSON response.

Overlay an Image on Top of Another with GraphicsMagick

Command

gm composite -resize 1920x1080 -dissolve 40 overlay_image.jpg base_image.jpg result_image.jpg

Break Down

The resize option resizes the overlay to the specified dimensions. You can specify just the height with x1080 or just the width with 1920. Typically you would want this to be the same width as the base image.

Continue reading

Create thumbnails of PDF’s with Node JS and GraphicsMagick

1. Install GraphicsMagick

On Ubuntu (14.04):

sudo apt-get install graphicsmagick

 

2. Install the Node library in your project

npm install gm

 

3. Write  a script

Below I show two ways of creating a thumbnail. The first way creates a JPG using various GraphicsMagick functions, I prefer this way because it gives me fine grained control over the thumbnail. The second uses a built in function for thumbnails, which is easy to use but isn’t as flexible.
Continue reading

How to Add a library file to EESchema

Recently I wanted to add an Arduino library to EESchema to make a schematic. Here’s how to do it.

Download the Library Files

First download the library from somewhere. I found the library I wanted on GitHub, but there are other places you can look, too.

Add the Library Files

Whether you downloaded a singled zip or multiple files, make sure you’ve located the .lib file. That’s what you’ll be adding. Open EESchema and open the Preferences > Library Menu. It should look like the window below.

from -home-jamil-Documents-KiCad-Arduino Schematics-RGB-RGB.pro_006

To the right of the Component library files pane, click Add. Locate your library file and add it. Click OK.

Now when you go to place a component, List All to see all your libraries and you should see your new library in the listing. Click on the library to choose your component and put it on your sheet.

Permission Denied when uploading a program to my Arduino

If you just started playing with Arduino on Linux, you may have run into an error uploading your very first program, similar to the following:


avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied
ioctl("TIOCMGET"): Inappropriate ioctl for device
Problem uploading to board. See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.

Your Arduino is mapped to a character device file called /dev/ttyACM0 and it looks like the IDE does not have permission to write to it. That’s essentially the problem and the fix is simple enough.

Open up a terminal and follow these commands. First let’s figure out what the current permissions are on this file.


ls -lah /dev/ttyACM0

You should get output similar to the following:


crw-rw---- 1 root dialout 166, 0 Feb 28 10:47 /dev/ttyACM0

What this shows us is that the owner (root) has read and write permissions, the group (dialout) has read and write permissions and others have no permissions at all. The fix is to let others have read and write permission so that your IDE can upload the program.


sudo chmod 666 /dev/ttyACM0

As demonic as that permission code looks like, it is actually just giving everyone read and write permission for this file.

If you run the ls command again, you should see that the permissions have changed:


crw-rw-rw- 1 root dialout 166, 0 Feb 28 10:56 /dev/ttyACM0

I don’t know what the user is when the IDE tries to upload, but if you do, please leave a comment!

You should now be good to upload your sketch to your Arduino.

How to install Swift on Ubuntu and add syntax highlighting for Sublime Text

I recently started teaching myself Swift, the new Open Source Language from Apple that powers their latest iOS and MacOS apps. In this article, I’ll go over how I installed it on Ubuntu 14.04 and how I got Sublime Text 2 to recognize it’s syntax. Note that there may be better and more comprehensive ways of doing this, I’m just posting what worked for me. If you have any suggestions to improve this, please be sure leave a comment.

Directions adapted from this post.

Start by clicking here and downloading the latest snapshot for Linux. For me it was called Ubuntu 14.04 Swift Development Snapshot, posted on Feb 3, 2016.

Continue reading

How to Use Intel’s PIN program: A super simple tutorial

If you’re reading this, you probably already know what pin is for, but basically it is used to profile programs. You can use it to answer things like how many instructions does this executable have or how many branches occur, etc. It does this in most cases by inserting counters and other code while your executable is running. So let’s get to a quick demo.

I will be demonstrating with Linux, specifically with Ubuntu, because this was a headache on Windows. Note that you might need root permission to execute some of these commands, so if they don’t work, try re-running with sudo.

(1) Download the pin program tarball
Download the tool from here, making sure that you have a compatible version of gcc. Continue reading

Freelance Photographer

This was from a conversation between two classmates years ago when I was in high school. Thinking about it today still makes me laugh and I wonder if either of them might one day stumble upon this and remember, too. (Names changed for privacy.)


 

Alan: What does you mom do?

Judy: My mom is a freelance photographer.

Alan: What does that mean? Free of job?

Judy: No! It means she works whenever she wants to.

Alan: . . . Yeah. Free of job.

Things I Wish I Knew for Hajj

Before Hajj, I would have been glad to know a few things about the way it works over there. The following is a list of stuff that I wish I new before I started Hajj and that would’ve help me prepare better, or at least brace myself.

Free Food as You Arrive

Between Jeddah’s Airport and our arrival at the hotel, we received free food and/or beverages several times on the bus. Don’t store too much food from home in your bag if you want to keep what you don’t eat. Wasting good food is sinful, but it’s also hard to find someone willing to take it. The beggars on the street only want your money, not your food. In fact, I’ve seen what appeared to be perfectly fine food rotting in the streets of Mecca plenty of times. It’s really sad, but part of a larger global food waste problem.

Continue reading