Tuesday, February 5, 2013

Whitenoise to concentrate in the office


Sometimes you want silence as you want to concentrate,
but when you're in an office environment, it's not always possible.

SoX (link) can be used as a white-noise generator.

It's a command-line tool, so in a nutshell:


  • if somebody with high-pitch is speaking nearby and you're not interested
    $ play -n synth 60:00 whitenoise    # white-noise for 60 minutes!
  • if somebody with low-pitch is speaking nearby and you're not interested:
    $ play -n synth 60:00 brownnoise  # brown-noise for 60 minutes!
  • if somebody with middle-pitch is speaking nearby and you're not interested:
    play -n synth 60:00 pinknoise  # pink-noise for 60 minutes!



Saturday, February 5, 2011

Creative & Productive Computing Desk Setting

I always think about improving my productivity.
And I love being creative.

So I quite often think about and seeks to ways of improving my productivity & creativity,
and this time I'll write about setting the computing workplace.

I believe one great way of discovering something new is to be inspired by others.

First, about more on being productive:
I searched for some workplaces of some well-known "cool" "new" "geeky" software companies.
Here are some pictures of workplaces of those companies:

Twitter
















(image from here)




Facebook















(image from here)



Google















(image from here)



So, what did I learn & tried & learnt from those pics? What are the lessons?

1. big screens are good.
2. dual monitors can be quite helpful while in programming.Bold
(you're probably already aware of those things already)

3. it's really comfortable and helpful for programming when you put yourself to the corner of 'L' shaped desk.
(man, this really is!)


Now about being creative as well:
I searched for how Pixar's workplace look like:

Pixar


























(this is John Lasseter's office. Image from here.)














(this is Lee Unkrich's office. Image from here.)

Lessons?

4. put something which can inspire you.
5. make it comfortable and your style.
(boring?)


Then I read about Facebook's Mark Zuckerberg's day life (from here), that
"Zuck would come into the office and, seeing every chair full, just lie down on the thin carpet on his belly, sandals flapping, and start typing into his little white Mac iBook."
Yeah, how is it? I tried. And it's nice to make myself comfortable during computing.
But not always, you know.










(image from here.)


They say, to be creative and inspiring, you need to make yourself the most comfortable.
Some "top-thinkers" of some design companies etc., say they need absolute comfortable chairs to make themselves think properly.
And lying down with computer is one way of making yourself comfortable, change from the desk-sitting, refresh and be inspired --- may be.

Now I'm quite a believer in working on laptop, like the Zuck --- maybe.












(image from here)


oh, the lesson:

6. make yourself most comfortable - bring your laptop with you to the most comfortable place and position.


So, how do I combine all of those lessons learned to maximize the productivity & creativity?

I. set the computer to the corner of the 'L' shaped desk and sit there
II. set your big monitor on top position of your laptop (like in the pic of Facebook office above).

In doing so, you can bring your laptop with you to the whatever comfortable place & position and work with your laptop,
and when you'll need a desk and/or big monitor, you can very easily & quickly connect your laptop to the monitor & etc, not changing too much of your working environment.

And programming at the corner of the 'L' shape is very comfortable.


And a blog post about finding a perfect office chair: here.

Sunday, January 23, 2011

After PhD: Academia or Industry?

Being a PhD student, I quite often have thoughts about "what will I be doing after I finish my PhD?".
Well, the obvious answer for me is, I want work in California at a cool company like Google, and I'm doing my best to make that happen, but being that not so easy, I sometimes also think about other options (not meaning that the way to academia is easier).

I heard of this guy and read his article sometimes (even posted something about his post: Logging is your friend), but I noticed his blog kinda first time - seems like an amazing guy: Matt Welsh.
He's been a professor at Harvard, and he has decided to move to Google quitting his professor job.

And he has written some nice posts about how it's like being a kind-of one-of-the-highest-profile (man, professor at Harvard!) academia, and how it's like working as a software engineer at Google, and how he likes better at Google: (1)'Why I'm leaving Harvard' and (2)Day in a life of a Googler.
And one of his colleague professor has posted that how he likes his job as a professor: Why I'm staying at Harvard.

And just going through his blogposts, there are a lot more interesting stories about PhDs (1)Getting started as a PhD student (2)So, you want to go to grad school, and Facebook founder! (1)In defence of Mark Zuckerberg (2)How I almost killed Facebook.

...

Will the Brainy Smurf be happy
being an academic, or being in the industry
or will he be happy being an entrepreneur?

...

And also the already well-known PhD comics.
(image from here.)

Thursday, January 13, 2011

ssh: connect to host xxxx port 22: Connection refused

Sometimes, in this complex built world,

(TEDTalks: Thomas Thwaites: How I built a toaster -- from scratch)


you forget about something, you took it for granted for a long while and when something doesn't work for you, you try to find the cause of the error, but cannot find it,
you delve deeper into the problem, and then,










(image from here.)


realise, what an obvious cause it was and you just didn't even think of it...!

Like,

1) in one of my digital circuit experiments, we thought we did everything right, but our circuit board didn't just work. We tried to find the problem for a long while and, D'OH!!! the power supply was not connected!!!

2) you started to use or moved into a house with one of the modernised kitchen equipments, and you wonder why the water on your electric cooker doen't cook!









(Image from here.)



and you realise, you didn't notice there's an energy-saver power-timer you needed to rotate!






(Image from here.)



3) and here's another one.











(Image from here.)



I wanted to SSH connect to my Linux virtual machine, but kept seeing the

ssh: connect to host xxxx port 22: Connection refused

message.
I checked everything else, like firewall settings and virtualisation software settings etc.
And realised, I didn't install SSH server on the virtual machine...

D'OH!!!

(p.s. does anyone have any other good examples of those common cases?)

Monday, December 13, 2010

Igudesman & Joo

Those things are one of the things I wanted to do when I was carrying out career in classical music performance...
Brilliant guys!



Sunday, December 12, 2010

Review of some cloud computing service providers

When considering about porting your app to the cloud for all those good reasons, the first thing you might encounter is: which platform you should go for?

After having tried some of the major ones here are some brief reviews:


1. Google App Engine

PaaS (Platform as a Service)

- Ease of use
yeah, it's for me by far the most easiest cloud computing platform with full functionalities provided right out of the box.
PaaS means, it's already thought that you'll develop something on the cloud to provide your application to the wide variety of users on the web.
User authentication, some nice Google APIs, easy to use database, and straight away ready to go IDE (Eclipse based for Java) and App Engine Launcher (for Python).
Nothing to really configure, build, learn, etc... Can't really complain.

- Easy to use, an excellent non-relational database
one of the plus in this might be, that we can just use the Google's excellent non-relational database. It's straight away to go, so easy to use.
Though this might be a minus, when people want to stick with traditional relational database with SQL. Though with paid-option, with the App Engine for Business, you can use the traditional SQL database.

- Pricing
pricing is very reasonable. Even excellent should I say? It's free up to some stage of usage, and we use it free until we have enabled the "paid usage" option.
Still with free-option we get the full functionality.

- Programming language limitations
programming language of choice is limited to Python and Java.

- Any external libraries?
well, it's one of the main issues for me and probably for most of the scientists and engineers who'd like to port their scientific and engineering applications to the cloud in choosing the Google App Engine.
Usage of external libraries is limited to pure Java or pure Python package. In this sense, Java seems to be a better choice for development with some external libraries (see my previous post "Java or Python"). Yeah, that means no Numpy or Scipy for Python... You might consider using Java with Apache Commons Math library instead when you're looking for an option to use any mathematic library with Google App Engine.
And further, the number of files you can upload to your cloud computing instance is limited to 3000 files (for both Python and Java). That means, you can't just dump any arbitrary files of libraries on the cloud.

- Summary
I think it's definitely the first thing to try out when you want to try out cloud computing development. Though when thinking your application might become complicated, consider about using something else.


2. Microsoft Windows Azure Platform

PaaS (Platform as a Service)

- Ease of use
not quite much so. It's also a PaaS service, designed with the thought that you'll service your app on the cloud, but, the approach is quite transitional or even traditional.
The web service approach is very much taken as the ASP.NET framework, and you need to have all those things to develop something like ASP.NET, MS application things on Windows (Windows Vista or higher, MS Visual Studio 2010, Windows Azure SDK, etc...).
Not so easy thing like the Google App Engine, where all those things for webapp development is provided straight away, you need to implement by yourself. Oh, yeah... Not so much recommended for the beginners...

- MS SQL Server database
MS SQL Server is the default database system provided.

- Pricing
Similar to the Google App Engine. Though you need to provide all your credit card information and so on when you register. Scary? Well, I registered, tried a simple development, haven't done anything on Azure since then, and I've not been charged since.

- Programming language limitations
they say almost any language can be use to develop your Azure application (this is a big plus!). Though some tweaks would be needed. The default programming language of choice, with nice samples and examples provided, is C#.

- Any external libraries?
again, they say you can install and use almost any external libraries for your Azure application (again, this is a big plus!), as long as it doesn't conflict the Web Role and various other Roles... (somewhat complicated here with those various roles...) And some tweaks would be needed.
But unlike Google App Engine, it seems like MS Azure team is quite interested in attracting scientists and engineers to their cloud computing platform, and quite a few cool things are provided or planed to be provided (Web N-gram Services, Matlab support, etc... look here).

- Summary
it would be a good choice when you're already very serious about porting your application to the cloud and have already some working set, with some library dependencies. Limited to MS Windows platform, but good support for scientific & engineering application development is expected. Not quite suitable for beginners or someone who just want to try out cloud computing PaaS.


3. Amazon EC2

IaaS (Infrastructure as a Service)

- Ease of use
it's easy to use in the sense that you get the familiar computing instance (on the cloud, of course) as you're used to using your own personal computer.
It's not easy to use in the sense that you need to develop all the applications and services to serve your application on the cloud (no straight to go user authentication and database connection as in the Google App Engine).
Yes, it's a IaaS, unlike those Google App Engine and Windows Azure. You kind of get a machine... on the cloud. Then you remote connect to it, and you develop your application... remotely. As a machine you can choose Linux or Windows. And they take all the goodies of the cloud computing (scalability etc...)
And you can copy your virtual machine instance to give it to anyone, or make a branch.

- Database
as you get a machine instance, you can install what ever database you want. Though you need to build the platform by yourself, like connecting the database to the webserver and application.
And Amazon provide all those "database for the cloud" services (Amazon SimpleDB, Amazon RDS, Amazon S3, Amazon EBS, Amazon Elastic MapReduce ...), which I haven't looked quite much in detail. Though it seems like they are not limited to be used only with Amazon EC2.

- Pricing
you pay by the usage hours of your machine instance. And pay extra when you use more then those are covered by the default allowance (see here).
Though you can turn your machine instance "off" when you're not using it, to prevent being charged for nothing.

- Programming language limitations
no limitations, of course. You use whatever you want... almost.

- Any external libraries
no limitations, of course. You use whatever you want... almost.

- Summary
it's good when you already have a working web application, which you want to deploy on the cloud computing infrastructure. You get a machine on the cloud!
Not quite much for beginners, or who want to try out cloud computing.
The pricing can become expensive, when you want to keep your web service always on. Unlike the Google App Engine, which is turned on by request, the machine is either always turned on or off by you. And when it's turned on, you pay for it.

Friday, October 22, 2010

t(good_idea) = bad_idea?

Sometimes you think something is such a good idea, and think, when you make a product out of this idea, it will be a big hit. (You don't? Well, I do...)

One of them was something like the 3D Timeline, a product of BEEDOCS.



I was thinking "managing my timeline in nice representable 3D form will be great!"
Then I noticed that there is a commercial product out there already, and I tried it.
Well, it was less then what I expected.
Or probably, there needs to be a lot of work, to make it really easy and intuitive to use.

Then I happened to use the MS Project.













Man, it's so much easier and intuitiver to use, and is so much more helpful and useful to me!
Don't really care about 3D representation of my timeline, when it's nice, easy and intuitive to use like this!

So now, after a while of time (with the function of time t(x)), my idea about 3D representation of timeline found out to be, it was not so much a good idea after all, I think.