Monday, June 8, 2009

Good advice...

The Blog of Maxim Porges - maximporges.com

Feedback (1)

Here is a post I could actually recommend to someone thinking about becoming a software engineer. His points are all valid and generally ranked in the proper order (especially the top 4)

1. Know that you love writing software. There are a great number of unhappy programmers in the world b/c they got into programming to the money. Problem is, if you don't have the love for it, you'll end up not studying it the way you need to, which leads to doing the least glamorous (although still decent paying) jobs.

2. Point on, but this can be hard b/c the last thing you generally want to do is continue programming after work and few employers offer the opportunity to learn new languages/technologies.

3. True, although it kind of goes along with number 1. If you're the type of student who only programs to do homework, you probably don't love programming.

4. True... I started programming in high school, but there were so many things about CS I didn't encounter until college. Not that college will teach you everything, but it definately gets you started on the right track.

5. Don't agree with this 100%, atleast in my case, I've found myself don't both application development and software engineering. Again, if you have a true interest in programming and do it long enough, you'll generally find yourself doing a wide variety of tasks.

6. Agreed.

7. This can also apply to working in a tech company for a manager who doesn't really understand technology (i.e. never programmed), and therefore under values the talent of the engineers under them.

8. An understated point here, it should be emphasized that pressure and stress are, in my mind, the number one job hazard in computer programming. Have you ever asked yourself why programming make a lot of money. Many people tend to overlook the fact that engineering is a highly stressful job, and for many it's hard to leave that stress or a particular problem you're working on at your desk when you go home at night.

9. Agreed, 100%. If you plan to do this job for any amount of time, you will probably witness the birth of a new major language in that time, not to mention so many custom languages that individual companies use that understanding how a parser/compiler works and the basic language paradigms is far more useful in the long run than understanding any particular language entirely.

Monday, May 25, 2009

Permanently Rating Your Music With Songbird

One really cool feature of Songbird, my music player of choice, is the ability to save song rating directly to the MP3, i.e. the ID3 tag.  Rating isn't an ID3 field that gets saved to the .mp3 file itself, like artist, album, etc, so every MP3 generally has it's own proprietary system that saves these ratings to an external database.  This causes two problems...


1.  MP3 ratings aren't interchangable.

2.  Moving your MP3's on your hard drive or to a different computer without using the program or backing up this database loses as the ratings.

While the Songbird solution doesn't solve the first issue, i.e. your Songbird ratings aren't immediately imported into, say iTunes, there is a way to save the rating directly to the file, allowing you to move them around at will, etc.  I'm manicuring my library so I can say "create me a playlist with these genres and songs I've rated at 4 and above", so I want to make sure that if I go to the trouble of rating songs, that they don't get lost in the future.

Anyway, to enable this functionality, open a new tab in Songbird, and type

about:config

in the address bar.  Then in the filter box, type

songbird.metadata.ratings

which should filter out all options except

songbird.metadata.ratings.enableWriting

Click on the value of this setting from 'false' to 'true'.  Now, every time you rate a song, it will write you rating to the track itself.  To test this, you can rate a song, then delete it from you library and reimport it, and notice your rating is still there.

b.

Sunday, November 2, 2008

Entering the world of t-shirt design

Among the many thousands of cool things you can do on the Internet these days is design custom t-shirts (not to mention mugs, hats,etc), have them printed and sent to you, even resell your designs online for free!

I've been toying around with the idea a while, and finally finished my first design, shown below.


You can find it (and buy it) at

http://www.zazzle.com/abstract_syntax_mas_tree_shirt-235439264930650299

It's quite geeky, I'll admit and probably doesn't make sense to 99% of people out there, only that strange breed whom call themselves computer programmers.  It stems from a concept in computer science called an abstract syntax tree, which is a graphical representation of the syntax of some source code.  An example of the statement x = 3 * (y - z) can be found here.

Anyway, to share the knowledge for anyone interested in making their own shirts, here's are some basic steps...

1.  Get an idea.  This is, of course, the hardest part, but for your first design, try something simple.  Looking at the links below, a t-shirt can be as simple as photo , some text or a simple geometric design.  I am, by no means, an expert t-shirt designer, but a couple of basic principles I use

  • Keep the design simple.  I, like everyone, suffer from the issue of over-complicating things, and I've found that what actually takes time in designing a shirt are the decisions to remove stuff and simplify.  For instance, in the Abstract SyntaX-mas Tree design, my first draft included Christmas lights and colored balls. After taking a step back a week later, I realized this stuff just tends to clutter the design and doesn't help to get the message across any better.
  • Keep the colors to a minimum. Typically, the best shirts are screen printed, where each color has be a separate screen, and are generally limited to 3 or 4 colors to reduce the complexity of making them. Shirts from sites like Zazzle and CafePress I believe are some type of iron-on design (I haven't seen my shirt yet) and allow for as many colors as you want (like a photo), but there is something to be said for the cartoony simplicity of a 3-5 color design.

2.  Learn to use some design tools. Another great fact of the modern Internet is the amount of free, high-quality software there is out there. Two programs I've come to love are GIMP and Inkscape . GIMP is a Photoshop clone, that aside from some small usability issues, is a great free alternative to Photoshop. Inkscape is an Illustrator-like tool for producing scalable vector graphics (SVGs). The different between working with these two programs is GIMP is designed for working with photos and images, while Inkscape uses more of a mathematical representation of the design, which can then easily be scaled up or down to any size without losing resolution. While I don't have time to get in a lengthy discussion about the difference between the two approaches, I think most designs would agree you should generally try to create your design using Inkscape, otherwise you make sure that you make you design really large using GIMP so that you can shrink it without losing clarity.


3.  Execute your design and upload.  After creating your final design, create an account on a site like CafePress or Zazzle to upload and sell your design.  This seems to be a pretty competitive market (custom product manufacturing/marketing) at the moment, so I can't say which is better, they both seems to have certain advantages.  I choose Zazzle for my first design, but might try CafePress with some others.  Here are a few things I like about Zazzle...


  • Slightly cheaper, atleast in the T-Shirts department, but only by a $1 or so and this is probably not true for every product each site offers.
  • Integration with Google Analytics.  Zazzle offers integration with Google Analytics, and although I haven't gotten it work yet, it sounds like a great way to see how many people have viewed your shirt.
  • One type of store front.  It seems that CafePress has two different store types, a free one and a premium one, whereas Zazzle on has one, which puts everyone on the same playing field.
  • Zazzle recently began offering custom embroidery, which is a cool option I would like to explore in the future.

This should be taken with a grain of salt as I have yet to explore CafePress and I'll let you know more once I do.

b.