October 18, 2011

Collaborate better with Latex

I have found the \input command in LaTeX to be quite useful. I started using this while writing my Masters' thesis. It proved to be a great tool in organizing and managing text that spanned over 70 pages. Instead of having all the text go into one large TeX file, this command helped break down the different sections of my thesis and allocate a file for the text in each section. This made organizing and managing the text easier and efficient.

Over time, I also found this command useful in collaborations with multiple authors since it provides an isolated environment for each section and reduces conflicts.

Here is a sample template:

\begin{document}

 \input{section1.tex}
 \input{section2}
 \input{/home/article/section3.tex}
 \input{../article/section3.tex}

\end{document}

The \input command takes an argument that specifies the TeX file name (which can be given without its .tex extension as shown in the second \input invocation) containing the text to that section. The argument here can also specify the absolute/relative path of the TeX file. 

September 26, 2011

The Joys of Iterative Design

How do you make being a perfectionist work to your advantage? I recently found the answer while working through a course project. I have long realized that perfectionism isn't necessarily good, and from experience found it to be detrimental when it dictates every decision and action. In my case, striving for perfectionism too early and too often led to apathy, inaction, and ideas getting dumped for fear of not being able to bring them to be a perfect creation. 

I had long known that the only way to avoid falling prey to perfectionism was to turn it to an advantage rather than fighting it. I had looked for ways to make perfectionism work, but it continued to be a difficult problem to overcome.

It was while working on a course project did it finally dawn on me. I had split the project, that on paper looked challenging, into five smaller assignments. Each assignment was a programming task building on the previous assignment. I noticed that at the completion of each of these assignments, they were gradually building into a functional database system, the goal of the course project.

I had found what is well known as iterative design and agile development in corporate design and development circles. You take an idea or design, build a piece of it or a basic working prototype, test it, get feedback, and build the remaining pieces or refine the prototype. With each iteration, it gets closer to bringing the idea or design to fruition. It puts perfectionism to use by isolating it within iterations and preventing it from stalling the creative process. Besides, I have found iterative design to carry the benefits of breaking down the design and development process into smaller, manageable tasks, and allowing room for early and detailed testing and feedback.

After embracing iterative design, I became productive, implementations became robust, and ideas generated more ideas, and the process of bringing ideas to life became fun. Why, even writing this blog was a fun exercise in iterative design!