What...no blog?

This site was originally intended as a way for my friends and I to host our pictures without the restrictions imposed by the most popular photo sharing websites (i.e. Flickr, photobucket , etc.). It has since transcended into a place where I can share some of my personal projects, as well as play around with new (and old) web technologies (i.e. J2EE, ROR, etc.).

While the thought of starting a blog has reared it head a few times in the past, I keep falling back on the realization that I like to talk much more than I like to type (Why not start a podcast then? I suppose I have steered clear of that idea simply because my criteria for verbal enjoyment is that there must be someone on the receiving end... even only if they are pretending to listen). With that in mind, don't expect a blog anytime soon... its not as if there is any shortage of blogs out there; the internet is choke full of blogs, most of which bring little to the table... plus what would I write? Most of my friends are computer illiterate, which means I would just end up rambling...and theres enough of that in the world as well.

That being said, feel free to browse around.

Lamb and what...?

When I first planned on putting up this website, I wanted to stay away from the traditional generic first name / last name domains, and I figured I wasn't witty enough to come up with a short, yet funny name. So I turned to a source that always puts a smile on my face, one-liners from some of my favorite movies. But as luck would have it, every good one was either taken, or the domain name would have ended being up too long (could you imagine if I used DoctorSaidINeedABackiotomy.com), so I turned to my friends for some help, and thats where lambandtunafish came about. At first I didn't even remember what movie it was from, but once it came back to me, I figured it would be a good fit.

To save you the trouble, here is a short clip which inspired us:

Me...

I'm Arash Nikkar, born and raised in sunny southern California (La Crescenta to be more exact)...surprisingly after I still haven't left. The last thing I thought I would be is a software engineer (just the sound of it makes me cringe). I was aiming more towards professional athlete, but my dreams were dashed once I realized I wouldn't be anywhere near 6' 6". In all honesty I enjoy what I do, albeit I hate the bad wrap engineers have gotten over the years (you know, socially inept, wearing sandals with socks, spending every waking moment playing video games, etc.). I spend most of my time developing desktop application in Java, but I find myself fooling around with the likes of Ruby and such now and again.

When I'm not hidden behind a computer screen I either causing some sort of debauchery with my friends, or playing sports...and if I get really bored, I play tricks on my dog.

I try and travel as much as I can, but there are only so many places you can visit when you only get 2 weeks off a year (I suppose that is one of the downsides of working for the man).

Site design

The design for this website was originally a wordpress theme called unsleepable. Since I have no intention on writing a blog, and thus no need for wordpress, I yanked all of the php out and modified the theme quite a bit to get it to better suit my needs (i.e. no blog archives, single column, etc). None the less, I still feel it necessary to give credit to the original author.

This site was built through a combination of CSS, Javascript, Flash & AJAX...so it goes without saying that if you have javascript disabled, well, things are gonna look pretty weird. It has been validated as XHTML 1.0 Strict and tested on Firefox 2, Internet Explorer 7 & Safari (If you use Internet Explorer 6, the site might look a bit wierd, but things should still work).

Contact

If for whatever reason you feel the need to reach me, you can email me at anikkar@gmail.com.

Like most people, I have been bitten by the myspace bug (though I have been able to curb the habit a bit...fighting the urge to check my page every fifteen minutes)...so you can find me on there as well.

Projects

Here are some projects I have done over the years; anything prior to 2005 was a graduate course project.

Note: I would have a lot more interesting stuff from my time at school, but on the day I graduated (literally, the day I walked for my MS) my hard drive decided to take a crap on me and died. So I lost everything, including 5 years of coursework, pictures, contacts, etc.

Mr. ContactsSeptember 2007
After reading Filthy Rich Clients (Which is a very good book...much better than your traditional programming books), and reading up on some interesting work, I wanted to put all that I learned into action, so I made a little dummy Contacts manager. It is not a full fledged application (i.e. there isn't a back end, & you can't edit/delete contacts), as it is more focused on the UI and creating a more positive user experience through static (reflections, blur, validations, etc) and dynamic (mouse overs, animations, etc) effects.

I used the Animated Transitions library to fade and move between the four main screens. The first screen includes some custom made buttons, and well as a mouse over animation (using the Timing Framework). The second screen (Add Contact) utilizes the Layered Pane to incorporate user input validations on the fly (rather than waiting for the user to hit a Submit button). The last two screens screens (Browse & Search Contacts) animate sorting with a JTable.



You can give is a run for yourself (requires Java 1.6+) Launch or just check out the screencast.


Wizard FrameworkJune 2006
I was in need of a Wizard for a short process oriented task, and I wasn't too thrilled with what was openly available. Despite the many wizard related projects on java.net, I couldn't find one that was lightweight and easy to use, so I decided to develop my own. The Wizard Framework primarily handles flow control by relying heavily on Generics & Enums, however, it is still rather lightweight (its only 2 abstract classes). A wizard is simply a collection of panels which are organized through assigned enums. This is maintained by a hashmap which holds a list of panels for easy reference, using an enum as the key.

Since most wizards are process oriented, and processes can encounter errors, each panel can flow in several different directions, thus abstract methods are used to determine which panel should be displayed next and whether the user can cancel the current process. Other abstract methods are implemented to streamline field validations, panel cleanup and panel initialization.

To spiffy things up a bit, I used SwingX's painter classes (as well as some others), and utilized a side panel which informs the user of the current step in the process.



You can give is a run for yourself (requires Java 1.5+) or just check out the screencast.


PanamaOctober 2005
I've never been much of a fan of Microsoft (although they are known to do some amazing work now and then), some things just never seem to work the way they are supposed to. A primary example is setting up a home network; no matter how many times you try, you just cant seem to find the other computers on the network. After reaching a boiling point of frustration, I decided to create an application which would allow me to transfer files over a network (or a crossover cable) without the overhead of Windows.

I used this as an opportunity to play around with a few Java technologies:
  • NIO (new I/O)
  • Drag n' Drop
  • Zip/Compression
  • And some graphics (i.e. Reflections, GradientPaints, GlassPanes, etc) & animations inspired by some blogs I read.



I signed the jar since this application requires full system permissions, but if you don't trust me for any reason, I made this nifty little screen cast just for you:


You can give it a try yourself (requires Java 1.5+) Launch or you can download the jar for your own personal use.

Note: you'll need to run two instances on the same machine just to see how it works, but the transfers fly by, so beware.

Update: I later found out that much of what I did by hand can be automated using SwingX, Timing Framework, & Animated Transitions. Oh well, you live & you learn I suppose.
Wind SimulatorMarch 2004
As a final project for an Advanced Graphics graduate course I paired up with a partner and we created a Wind Simulator which would simulate the effects of wind on blades of grass. The focus of this project was to use Non-Euler Dynamic Simulation to simulate the movement of the grass, and Level of Detail (LoD) representations to decrease computation time. This project used C++ and OpenGL (which is quite powerful once you learn how to use it).

To get wind effect we incorporated several springs within each grass blade and applied an appropriate force in order to simulate the motion caused by blowing wind. You can also zoom in/out of the scene, during which two different Level of Detail (LoD) filters are applied to the grass field depending on the depth value of each individual grass blade. One LoD filter applied utilizes the concept of face merging on each individual grass blade, while the other involves texture maps to give the look and feel of a more realistic grass blade, without having to render them individually.

 

You can interact with the grass field, by rotating the field, zooming in/out, and use a navigation tool which allows you to specify the direction and speed of the wind.




For more information, check out a more detailed report.
Utah TeapotFebruary 2004
During my graduate winter quarter at UCSB I took an Advanced Graphics graduate course and one of our first assignments was the classic Utah Teapot. It uses Bezier Patches to smooth out the surface of an otherwise rough object, and Control Points to modify the shape of the object. It is a Java Applet with controls to change the number of patches applied to each section, switch between a teapot or an airplane, and even open/save different objects (only if you have the correct security permissions set).

In hindsight, the UI for these controls is of terrible design; I suppose that when your in school time is truly of the essence, and using a dialog was much quicker (and dirtier) than creating custom buttons and controls, which would have looked much better embedded into the applet.



You can give it a try yourself, or just check out the screencast.


Note: If you feel like going through the hassle of changing your security permissions for applets, you can load different objects and give them a try (Or you can email me for the class files and use appletviewer).

Arash Nikkar

Objective


Self motivated software engineer with strong education and practical experience in desktop application development looking for a challenging position where my productivity, drive for knowledge, and hard work can be put to the test.

Education

  • M.S. Computer Science, University of California, Santa Barbara (June 2004)
  • B.S. Computer Engineering, University of California, Santa Barbara (June 2003)
  • Graduated with Honors − GPA 3.78
  • Enrolled in 5-year B.S./M.S. program at UCSB
  • Participated in Education Abroad Program (EAP) at Lund University, Sweden during Fall term of 2002

Programming Experience

  • Extensive Java programming knowledge
  • C, C++, Ruby & Perl experience
  • OODBMS & RDBMS knowledge − db4o & MySQL
  • XML, HTML & CSS experience
  • Ruby on Rails
  • Java: Swing, Graphics2D & 3D, Custom GUI Components, JNI, Applets, Sockets, RMI, Reflection, JDBC, Threading

Programming Environments & Tools

  • PCs & Macs
  • Windows XX, Dos, Unix & OS X
  • Apache Ant
  • CVS / WinCVS
  • IntelliJ IDEA & Netbeans
  • Rational Rose
  • JProbe

Graduate Lab Work

  • Designed and implemented an Ad Hoc Peer To Peer Wireless Instant Messenger & ported it to a Handheld PC (Compaq iPAQ)
  • Implemented T-AOMDV: Transport Aware Ad hoc On-Demand Multi-path Distance vector routing in ns-2.
  • Implemented a Distributed Warehouse Inventory application with a Client Query Interface involving GUI programming, Applets, Sockets, Remote Method Invocation (RMI), Java Web Services Development Pack (JWSDP), Servlets, & Java Database Connectivity (JDBC w/ MySQL)

Work Experience

Software EngineerHulu, Los Angeles, CA
February 2008 to Present


Senior Software EngineerAlfred Mann Foundation, Valencia, CA
June 2004 to January 2008

  • Team & Project Lead: Lead up to six people during entire software cycle for 2 separate large scale projects (Requirements, Design, UML, Implementation, SQA, Validation, Delivery, & Support)
  • Developed & maintained several large sophisticated Biomedical Applications (Core Java, Swing, OODBMS, XML, Threading)
  • Designed & developed a powerful custom user tool for drawing stimulation patterns for implantable devices (Java Swing, Graphics2D, SwingX)
  • Implemented a Stimulation Analysis Tool to verify stimulation output of implantable devices (Java, JNI, C, USBScope)

Lead Engineer & ArchitectT9Space.com, San Diego, CA
August 2006 to August 2007

  • Built web application incorporating user accounts & customizations, web scraping & SMS tools. (Ruby on Rails, Perl & HTML)
  • Implemented custom html scraping tool & web proxy which removed unnecessary HTML and reduced web pages for viewing in mobile environments
  • Setup and maintained server using Apache, Mod_Perl, MySQL, PHP, Ruby, Mongrel, etc.

Computer Science Teaching Assistant (TA)University of California, Santa Barbara, CA
March 2004 to June 2004

  • Lead lectures and discussions for Programming Methods course (Data Structures & Abstractions within Java)
  • Adapted teaching skills to varying students' learning abilities.