Friday, May 3, 2013

Running MatLab on command-line mode. What goods does it have?

For those who are wondering about how to run MatLab on command-line mode, here it is:
./matlab -nojvm -nodisplay -nosplash -r "command"

I am new user to MatLab. Basically I was following some instruction for running MatLab code. I ran into a situation where I had to run a compile.m script that invokes gcc, mex, or any other MatLab's C compiler. When I ran the script through GUI version of MatLab, I kept getting errors that wasn't very helpful. Turned out that the same script ran without any problem on the MatLab ran on command-line mode. So yeah, give it a shot!

Oh yeah,
To ease thing out I also created alias on my .bash_rc as follow:
alias matlab_cmd="matlab -nojvm -nodisplay -nosplash -r "

I then can run the script as follow:
matlab_cmd "command"

Thursday, May 2, 2013

Using windows-shared printers on Linux

With Ubuntu 13.04 (possibly also with any of the lower versions I guess), having Linux to use printers shared for Windows is never easier. Just go to your Printers preferences, add a new printer with SMB sharing protocol. Finally type in your printer's IP address there. (eg. for my school's one it's like smb://crux.cs.washington.edu/ps022) and Voila! It lists you all the printer drivers available. Pick one (or pick Generic, if it is not listed) and things should work right away.

One caveat is that if you're printer is of a specified DOMAIN, put it as part of the user name. For example, my school's undergraduate Windows domain (or I guess it's called Workgroup?) is CSEPCLAB, so I'd put CSEPCLAB\username as my username when connecting to the printer through SMB protocol. It's a bit hacky to do the same thing with Mac. But I believe I have a post for it somewhere in this blog.

OSX, Windows, Ubuntu?

I had been a long-time user of OSX for quite sometimes. (+- 4 years) I found its UNIX environment and super-friendly user interfaces to be very useful for especially programming. Macbook's trackpad and keyboard shortcuts have always been my personal favorite as well.
I've always thought that MacBook's so called over-price is actually worth every penny. It has SMS, light sensor, very decent LCD, etc etc.
I still have lots and lots of positive things I'd want to write about MacBook. Software like SizeUp, TextMate, SMC Fan Control, iTerm 2, etc have been easing my life as a programmer so much. Maybe I'll write some articles about how much I loved OSX sometimes.

However, as I am becoming more more into UNIX environment, I've found OSX to not be able to catch up with my needs. First and foremost is because many software applications simply aren't written to work well with OSX! It's inevitable that the main market consumer is still Windows and so many software industry simply writes crappy port of their software for OSX. What I mean by crappy here is lots of memory leaks, not optimized to work efficiently and so on. Sad to say this, but I have to admit that I found my MacBook 5,1 with 8GB of RAM and 2.1 core-2-duo processor to be considerably sluggish compared to a laptop with a similar spec with Windows on it. A very obvious example would be Flash player. Try running a Youtube video on a 5,1 MacBook. Notice how hot your MacBook is? I can't help but to also notice how sluggish it becomes. It's just very annoying sometimes..

On the other hand, since some Linux are open source, the software support is so amazing. For almost every single application that you're searching for, you'd almost always able to find a decent open-source version that substitutes it. It's just amazing to see how much Linux have been growing. Also the driver supports that let things work out-of-the-box is just so sweet... I guess I'll have to write another post dedicated for Linux at some point.

:D
Feel free to start a discussion within this thread. I'm no big fan of one single OS or biased towards any. I have so much positive things to say about Linux, Windows, or OSX. They're just great and bad in their own ways.

Conveniences from cloud-based services

It's 2013 and I just realized how much conveniences I've been taking for granted from cloud-based services. With ever growing power of Internet, we no longer need to worry about forgetting to bring a USB stick drive or an external hard-drive anymore!

Long story short here are the list of apps that has been very useful to ease my life:
1. Google Chrome: Allows bookmarks, passwords, extensions, and tab synchronizations among different devices (PC, Mac, Linux, or even Android!)
2. Gmail: As an Android user, I found it to be very useful that the phone application is very well synced with the web-based interface. All the emails you send, starred, or labeled can be accessed easily from either web or phone interface.
3. Evernote: Note-taking application that works across platforms.
4. Dropbox: Share folders among computers, tablets, etc. It also creates snapshots for updates that are done to the files. One time Dropbox's backup saved me from losing my school programming work.
Dropbox for Android is also very as it allows automatic synchronization of the pictures you take from your phones. Never again scare to lose your pictures.
5. Google Calendar: Peeking at other's schedule, finding free timeslots for meeting among different people, inviting people to a meeting, or simply a reminder that has a pop-up/email notifications through web or Android device. What else can we ask? It's just getting better and better!
6. Google Drive/Microsoft Skydrive: Microsoft Word as a must for each of your computers? Nah! Why bother with hassles of having to carry USB stick around. Just edit, real-time collaborate, and backup your word docs and spreadsheet online! I recently starting to use Microsoft Skydrive because it mimics Microsoft Word even closer than Google Drive.
7. Google Voice: Ever needing to text someone/group of people, looking/adding/editing your phone contacts through computer, do an international calling for a cheap price, or even a local calling/texting for free? Better try voice.google.com

Life is just so much easier with all these services.