var pages = [
  
  // -----------------------------------------------------------------------------------------------
  // WELCOME
  // -----------------------------------------------------------------------------------------------
  
  {
    name: "home",
    title: "Welcome",
    content: [
      { type: "p", content: "Welcome and enjoy the site." },
      {
        type: "link-list",
        content: [
          {
            type: "link-list-item",
            image: "gfx/mini/home/portfolios",
            title: "Portfolios",
            subtitle: "A decent amount of samples of my work",
            page: 1
          },
          {
            type: "link-list-item",
            image: "gfx/mini/home/stuff",
            title: "Resources",
            subtitle: "Research, productivity, enternainment, and other",
            page: 2
          },
          {
            type: "link-list-item",
            image: "gfx/mini/home/resume",
            title: "Resume",
            subtitle: "",
            page: 3
          },
          {
            type: "link-list-item",
            image: "gfx/link-list-item.jpg",
            image: "gfx/mini/home/stuff",
            title: "Stuff",
            subtitle: "Links, quotes, research-related things, games; generally: random stuff",
            page: 4
          },
          {
            type: "link-list-item",
            image: "gfx/mini/home/about-me",
            title: "About me",
            subtitle: "A few words about myself",
            page: 5
          },
          {
            type: "link-list-item",
            image: "gfx/mini/home/contact",
            title: "Contact",
            subtitle: "How to get in touch with me",
            page: 6
          }
        ]
      },
      {
        type: "div",
        cssClass: "footer-img",
        content: [
          { 
            type: "link",
            action: "http://the-brights.net",
            target: "new",
            cssClass: "img",
            content: { type: "img", src: "gfx/the-brights.gif", name: "The Brights", cssClass: "footer" }
          }
        ]
      }
    ]
  },
  
  
  
  
  // -----------------------------------------------------------------------------------------------
  // PORTFOLIOS
  // -----------------------------------------------------------------------------------------------
  
  {
    name: "portfolios",
    title: "Portfolios",
    content: [
      { type: "p", content: "Samples of my work." },
      {
        type: "link-list",
        content: [
          {
            type: "link-list-item",
            image: "gfx/mini/portfolios/web-design",
            title: "Web Design",
            subtitle: "Both Web sites and applications I have developed (or am developing)",
            page: 1,
            subpage: 0
          },
          {
            type: "link-list-item",
            image: "gfx/mini/portfolios/photography",
            title: "Photography",
            subtitle: "Some of my pictures",
            page: 1,
            subpage: 1
          },
          {
            type: "link-list-item",
            image: "gfx/mini/portfolios/computer-graphics",
            title: "Computer Graphics",
            subtitle: "Very old computer graphics",
            page: 1,
            subpage: 2
          }
        ]
      }
    ],
    pages: [
    
      // -----------------------------------------------------------------------------------------------
      // PORTFOLIOS: Web Design 
      // -----------------------------------------------------------------------------------------------
      
      {
        name: "web-design",
        title: "Web Design",
        content: [
          { type: "p", content: "A more appropriate term for the things I chose to publish here would be [b]front-end development[/b]. The reason is that apart from pure design I talk about implementation. Moreover it's design and implementation for the Web with many components of the final product hidden on the server. The only reason I called this section Web Design is that it's short and more widely known." },
          {
            type: "p", 
            content: [
              "I will add this part soon. For the time being, check my ",
              { type: "link", target: "new", action: "old/portfolios/web_design_01.html", content: "Old Web site", log: "Old web design portfolio" },
              "."
            ]
          }
        ]
      },
      
      // -----------------------------------------------------------------------------------------------
      // PORTFOLIOS: Photography
      // -----------------------------------------------------------------------------------------------
      
      {
        name: "photography",
        title: "Photography",
        content: [
          {
            type: "p",
            content: [
              "Some of my photographs can be found on ",
              { type: "link", target: "new", action: "photo/", content: "this site", log: "Photography site" },
              "."
            ]
          }
        ]
      },
      
      // -----------------------------------------------------------------------------------------------
      // PORTFOLIOS: Computer Graphics
      // -----------------------------------------------------------------------------------------------
      
      {
        name: "computer-graphics",
        title: "Computer Graphics",
        content: [
          {
            type: "p",
            content: [
              "I will add this part soon. For the time being, check my ",
              { type: "link", target: "new", action: "old/portfolios/3d_graphics.html", content: "Old Web site", log: "Old computer gfx portfolio" },
              "."
            ]
          }
        ]
      }
    ]
  },
  
  
  
  
  // -----------------------------------------------------------------------------------------------
  // RESOURCES
  // -----------------------------------------------------------------------------------------------
  
  {
    name: "resources",
    title: "Resources",
    content: [
      {
        type: "section",
        title: "Research",
        content: [
          {
            type: "ul",
            items: [
              [
                { type: "link", action: "res/research/psych-tests/", target: "new", content: "Psychological tests", endLineCnt: 1 },
                "Currently, I only have reading span task.[nl][nl]"
              ],
              [
                { type: "link", action: "res/research/deg-to-pix/", target: "new", content: "Degree-to-Pixel", endLineCnt: 1 },
                "Converts degrees to pixels. I wrote it since Tobii's ClearView 2.6.3 wouldn't accept degrees, only pixels."
              ]
            ]
          }
        ]
      },
      {
        type: "section",
        title: "Productivity",
        content: [
          {
            type: "ul",
            items: [
              [
                { type: "link", action: "res/prod/web-portal/index.html", target: "new", content: "Mr Snake's Web Portal", endLineCnt: 1 },
                "Something I made to boost my productivity (Firefox and Opera only)[nl][nl]"
              ],
              [
                { type: "link", action: "res/prod/vpn.html", target: "new", content: "VPN Session Refresher", endLineCnt: 1 },
                "Use it if you are tired of VPN session expiring every 5 minutes"
              ]
            ]
          }
        ]
      },
      {
        type: "section",
        title: "Entertainment",
        content: [
          {
            type: "ul",
            items: [
              [
                { type: "link", action: "res/games/websnaken/index.html", target: "new", content: "Websnaken", endLineCnt: 1 },
                "A game I hacked (Firefox and Opera only).[nl]Mobile device versions: ",
                { type: "link", action: "res/games/websnaken/nokia.html", target: "new", content: "Nokia N810" },
                " (use 80% zoom), ",
                { type: "link", action: "res/games/websnaken/ipod.html", target: "new", content: "iPod Touch" },
                " (still a bit shaky) [nl][nl]"
              ],
              [
                { type: "link", action: "http://www.random-good-stuff.com/game/game/99-bricks/", target: "new", content: "99 Bricks", endLineCnt: 1 },
                "A very good game[nl][nl]"
              ],
              [
                { type: "link", action: "http://www.random-good-stuff.com/game/game/qink/", target: "new", content: "Qink", endLineCnt: 1 },
                "Another very good game[nl][nl]"
              ],
              [
                { type: "link", action: "http://www.lemonamiga.com/", target: "new", content: "Lemon Amiga", endLineCnt: 1 },
                "A good site for real Amiga fans[nl][nl]"
              ],
              [
                { type: "link", action: "http://www.xgaming.com/", target: "new", content: "Xgaming", endLineCnt: 1 },
                "An excellent adrcade-style controller[nl][nl]"
              ]
            ]
          }
        ]
      },
      {
        type: "section",
        title: "Links",
        content: [
          {
            type: "ul",
            items: [
              [
                { type: "link", action: "http://genie.sis.pitt.edu", target: "new", content: "GeNIe & SMILE", endLineCnt: 1 },
                "Good software for Bayesien nets[nl][nl]"
              ],
              [
                { type: "link", action: "http://di.fm/chillout", target: "new", content: "DI: Chillout", endLineCnt: 1 },
                "The best music ever...[nl][nl]"
              ],
              [
                { type: "link", action: "http://notepad-plus.sourceforge.net", target: "new", content: "Notepad++", endLineCnt: 1 },
                "An excellent editor[nl][nl]"
              ],
              [
                { type: "link", action: "http://iplocationtools.com", target: "new", content: "IP Location Tools", endLineCnt: 1 },
                "Excellent geolocation IP-based APIs[nl][nl]"
              ],
              [
                { type: "link", action: "http://www.netrunneronline.com", target: "new", content: "NetRunner Online", endLineCnt: 1 },
                "A site devoted to one of the greatest CCGs ever[nl][nl]"
              ],
              [
                { type: "link", action: "http://the-brights.org", target: "new", content: "The Brights", endLineCnt: 1 },
                "Is your worldview naturalistic?[nl][nl]"
              ],
              [
                { type: "link", action: "http://dsl.sis.pitt.edu", target: "new", content: "Decision Systems Laboratory", endLineCnt: 1 },
                "A research lab I am a member of[nl][nl]"
              ]
            ]
          }
        ]
      }
    ]
  },
  
  
  
  
  // -----------------------------------------------------------------------------------------------
  // RESUME
  // -----------------------------------------------------------------------------------------------
  
  {
    name: "resume",
    title: "Resume",
    content: [
      {
        type: "section",
        title: "Personal Data",
        content: [
          { type: "p", content: { type: "link", action: "javascript:site.setPage(6)", content: "see 'Contact' page" } }
        ]
      },
      
      {
        type: "section",
        title: "Education",
        content: [
          {
            type: "table",
            colCssClasses: ["resume-left","resume-right"],
            content: [
              [
                "August 2003 - present",
                [
                  "[b]University of Pittsburgh[/b][nl][nl]",
                  "PhD student[nl]",
                  "School of Information Sciences ",
                  { type: "link", action: "http://www.ischool.pitt.edu", target: "new", cssClass: "resume-url", content: "url", endLineCnt: 2 },
                  "Advisor: ",
                  { type: "link", action: "http://www.pitt.edu/~druzdzel/", content: "Marek J. Druzdzel", endLineCnt: 1 },
                  "Mentor: ",
                  { type: "link", action: "http://www.pitt.edu/~reichle/", content: "Erik D. Reichle" }
                ]
              ],
              [
                "October 1998 - July 2003",
                [
                  "[b]Wroclaw University of Technology[/b][nl][nl]",
                  "MSc[nl]",
                  "Computer Science[nl]",
                  "Department of Information Systems ",
                  { type: "link", action: "http://www.zsi.pwr.wroc.pl/zsi/eng/index.html", target: "new", cssClass: "resume-url", content: "url", endLineCnt: 2 },
                  "Thesis topic: [i]Implementation of an Adaptive Interface for an Internet Information System[/i][nl]"
                ]
              ]
            ]
          }
        ]
      },
      
      {
        type: "section",
        title: "Research Interest",
        content: [
          {
            type: "ul",
            items: [
              "Eye movements during reading",
              "Bayesian networks",
              "Decision making under uncertainty",
              "User modeling"
            ]
          }
        ]
      },
      
      {
        type: "section",
        title: "Research Experience",
        content: [
          {
            type: "table",
            colCssClasses: ["resume-left","resume-right"],
            content: [
              [
                "August 2003 - present",
                [
                  "[b]University of Pittsburgh[/b][nl][nl]",
                  "Decision Systems Lab (DSL) ",
                  { type: "link", action: "http://dsl.sis.pitt.edu", target: "new", cssClass: "resume-url", content: "url", endLineCnt: 1 },
                  "Personalized Adaptive Web Systems (PAWS) ",
                  { type: "link", action: "http://www.sis.pitt.edu/~paws/", target: "new", cssClass: "resume-url", content: "url" }
                ]
              ],
              [
                "October 1998 - July 2003",
                [
                  "[b]Wroclaw University of Technology[/b][nl][nl]",
                  "Master's Thesis focused on implementation of an adaptive user interface as an investigation of an adaptation algorithm based on automatic user clustering"
                ]
              ]
            ]
          }
        ]
      },
      
      {
        type: "section",
        title: "Teaching Experience",
        content: [
          {
            type: "table",
            colCssClasses: ["resume-left","resume-right"],
            content: [
              [
                "Fall 2008",
                "[b]Web 2.0[/b] course (teaching and designing - textbook not available)"
              ],
              [
                "February 2008",
                "[b]Social Web[/b] course, a guest lectures titled [i]Interactive Web[/i]"
              ],
              [
                "October 2003 - present",
                [
                  "[b]Teaching Assistantship[/b][nl][nl]",
                  "Courses: Decision Support & Decision Support Systems, Data Structures and Programming Techniques, Human Factors, Human-Computer Interaction[nl][nl]",
                  "Responsibilities: holding office hours, grading homework assignments and exams, lecturing"
                ]
              ]
            ]
          }
        ]
      },
      
      {
        type: "section",
        title: "Publications",
        content: [
          {
            type: "table",
            colCssClasses: ["resume-left","resume-right"],
            content: [
              [
                "2009",
                [
                  "Tomasz D. Loboda and Peter Brusilovsky (2009) User-adaptive explanatory program visualization: Evaluation and insights from eye movements. [i]User Modeling and User Adapted Interaction[/i]. Submitted.[nl][nl]",
                  "Tomasz D. Loboda and Peter Brusilovsky (2009) An agent for versatile intelligence analysis system. [i]Intelligent Decision Technologies[/i]. Submitted.[nl][nl]"
                ]
              ],
              [
                "2008",
                [
                  //"Tomasz D. Loboda, Peter Brusilovsky, Daqing He, Rosta Farzan, and Jonathan Grady (2008) Query log based user performance metrics. [i]ACM Transactions on the Web[/i]. Submitted.[nl][nl]",
                  "Tomasz D. Loboda and Peter Brusilovsky (2008) Adaptation in the context of explanatory visualization, In [i]Proceedings of the Third European Conference on Technology Enhanced Education (ECTEL)[/i], <nobr>250-261</nobr>. Maastricht, The Netherlands, September <nobr>17-19</nobr>. Springer-Verlag.[nl]",
                  { type: "file", path: "res/pub/2008-ectel.pdf", cssClass: "pdf", content: "pdf", endLineCnt: 2 }
                ]
              ],
              [
                "2006",
                [
                  "Tomasz D. Loboda and Peter Brusilovsky {2006) WADEIn II: Adaptive explanatory visualization for expressions evaluation. In [i]Proceedings of the ACM symposium on Software visualization (SOFTVIS)[/i], <nobr>197-198</nobr>. Brighton, UK, September <nobr>4-5</nobr>. ACM Press.[nl]",
                  { type: "file", path: "res/pub/2006-softvis.pdf", cssClass: "pdf", content: "pdf", endLineCnt: 2 },
                  
                  "Tomasz D. Loboda, Atanas Frengov, Amruth N. Kumar, Peter Brusilovsky (2006) Distributed framework for adaptive explanatory. In [i]Proceedings of the Fourth Program Visualization Workshop (PVW)[/i], <nobr>11-16</nobr>. Florence, Italy, June <nobr>29-30</nobr>.[nl]",
                  { type: "file", path: "res/pub/2006-pvw.pdf", cssClass: "pdf", content: "pdf", endLineCnt: 2 },
                  
                  "Peter Brusilovsky and Tomasz D. Loboda (2006) WADEIn II: A case for adaptive explanatory visualization. In [i]Proceedings of the Eleventh Annual Conference on Innovation Technology in Computer Science Education (ITiCSE)[/i], <nobr>48-52</nobr>. Bologna, Italy, June <nobr>26-28</nobr>. ACM Press.[nl]",
                  { type: "file", path: "res/pub/2006-iticse.pdf", cssClass: "pdf", content: "pdf", endLineCnt: 2 }
                ]
              ],
              [
                "2005",
                [
                  "Tomasz D. Loboda (2005) Probability distributions over joint probability distributions: Prediction and empirical validation. [i]Unpublished preliminary examination paper (distinction).[/i][nl]",
                  { type: "file", path: "res/pub/2005-prelim.pdf", cssClass: "pdf", content: "pdf", endLineCnt: 2 }
                ]
              ],
              [
                "2004",
                [
                  "Steve Burion, Michael Coblenz, Jeffrey Gennari, Mary Koes, Michael Lewis, Tomasz Loboda, Michael Manjlovich, Illah Nour-bakhsh, Kevin Oishi, Jumpol Polvichai, Katia Sycara, Jijun Wang, Mark Yong (2004) [i]RoboCupRescue - Robot League Team, RoboCup2004 - US Open, Rescue Robot League Competition[/i]. New Orleans, LA, USA.[nl]",
                  { type: "file", path: "res/pub/2004-robocup.pdf", cssClass: "pdf", content: "pdf", endLineCnt: 2 }
                ]
              ]
            ]
          }
        ]
      },
      
      {
        type: "section",
        title: "Academic Honors",
        content: [
          {
            type: "table",
            colCssClasses: ["resume-left","resume-right"],
            content: [
              [
                "November 2007",
                "[b]University of Pittsburgh, School of Information Sciences[/b][nl]1st place in a school wide poster competition [i]iFest'07: Proactive Real-time Assistance to Increase Analysts Performance[/i]"
              ],
              [
                "January 2005",
                "[b]University of Pittsburgh, School of Information Sciences[/b][nl]Preliminary examination paper awarded with a distinction"
              ]
            ]
          }
        ]
      },
      
      {
        type: "section",
        title: "Professional Community Work",
        content: [
          {
            type: "ul",
            items: [
              "Reviewing for: AVI'08, AIED'07",
              [
                "Maintaining the Proceedings of the Uncertainty in Artificial Intelligence (UAI) conference Website ",
                { type: "link", action: "http://uai.sis.pitt.edu", target: "new", cssClass: "resume-url", content: "url" }
              ]
            ]
          }
        ]
      },
      
      {
        type: "section",
        title: "IT Work Experience",
        content: [
          {
            type: "table",
            colCssClasses: ["resume-left","resume-right"],
            content: [
              [
                "long ago - present",
                [
                  "[b]Front-End Development[/b][nl]",
                  { type: "link", action: "javascript:site.setPage(1,0)", content: "see 'Web Design' page" }
                ],
                "[nl][nl][nl]"
              ],
              [
                "October 2001 - July 2003",
                [
                  "[b]Web Server Administration[/b][nl]Wroclaw University of Technology",
                  {
                    type: "ul",
                    items: [
                      "Maintaining departmental Web site",
                      "Managing the Web server"
                    ]
                  }
                ]
              ],
              [
                "Summer 2002",
                [
                  "[b]Leonardo da Vinci Program Internship[/b][nl]CIT Engineering",
                  {
                    type: "ul",
                    items: [
                      "Investigating of the LabVIEW programming language in the context of acquisition problems",
                      "Implementing of serial communication with the AIMR device using the in-between VISA platform",
                      "Designing data structure and user interface for the QAB Pocket PC data acquisition application"
                    ]
                  }
                ]
              ],
              [
                "Summer 2001",
                [
                  "[b]Press Article Collection System[/b][nl]Intesk S.C.",
                  {
                    type: "ul",
                    items: [
                      "Designing and implementing a commercial intranet Web-based press articles database system for one of the biggest Polish telecommunication companies"
                    ]
                  }
                ]
              ]
            ]
          }
        ]
      },
      
      {
        type: "section",
        title: "Research Related Skills",
        content: [
          {
            type: "table",
            colCssClasses: ["resume-left","resume-right"],
            content: [
              [
                "Communication",
                "Very good spoken/written language abilities[dot]Very good presentation skills"
              ],
              [
                "Data analysis",
                "Very good understanding of statistical methods and tools"
              ],
              [
                "Prototyping",
                "Very good development skills (especially Web applications)"
              ]
            ]
          }
        ]
      },
      
      {
        type: "section",
        title: "Computer Skills",
        content: [
          {
            type: "table",
            colCssClasses: ["resume-left","resume-right"],
            content: [
              [
                "Programming languages",
                "JavaScript[dot](X)HTML[dot]CSS[dot]Java[dot]C++[dot]C[dot]Perl[dot]SQL[dot]Visual Basic"
              ],
              [
                "Statistical analysis",
                "SAS (primary tool) [dot]SPSS[dot]MS Excel"
              ],
              [
                "DB servers",
                "MySQL[dot]MS SQL Server[dot]MS Access"
              ],
              [
                "Web servers",
                "Apache[dot]Tomcat"
              ],
              [
                "Operating systems",
                "MS Windows (vast)[dot]UNIX/Linux (moderate)"
              ],
              [
                "Misc.",
                [
                  [
                    { type: "link", action: "http://genie.sis.pitt.edu", target: "new", content: "GeNIe & SMILE" },
                    " (Bayesian nets)[dot]"
                  ],
                  "Adobe Photoshop[dot]Adobe Flash"
                ]
              ]
            ]
          }
        ]
      },
      
      {
        type: "section",
        title: "Other",
        content: [
          {
            type: "table",
            colCssClasses: ["resume-left","resume-right"],
            content: [
              [
                "Spare time activities",
                "MAME[dot]Net Runner[dot]Photography[dot]Piano[dot]Psychology[dot]Science[dot]Sci-Fi[dot]Skiing[dot]Tennis[dot]Visual design"
              ]
            ]
          }
        ]
      }
    
    ]
  },
  
  
  
  
  // -----------------------------------------------------------------------------------------------
  // STUFF
  // -----------------------------------------------------------------------------------------------
  
  {
    name: "stuff",
    title: "Stuff",
    content: [
      { type: "p", content: "Here you will find everything that I want to publish, but that does not deserve a dedicated category." },
      {
        type: "link-list",
        content: [
          {
            type: "link-list-item",
            image: "gfx/mini/home/stuff",
            title: "Quotes",
            subtitle: "Some of my favorite quotes",
            page: 4,
            subpage: 0
          },
          {
            type: "link-list-item",
            image: "gfx/mini/home/stuff",
            title: "Front-End Development",
            subtitle: "Solutions to some of the problems I run into (and was not too lazy to write about)",
            page: 4,
            subpage: 1
          },
          {
            type: "link-list-item",
            image: "gfx/mini/home/stuff",
            title: "LaTeX",
            subtitle: "Some LaTeX related stuff that took me a while to figure out and hopefully will save someone some time",
            page: 4,
            subpage: 2
          },
          {
            type: "link-list-item",
            image: "gfx/mini/home/stuff",
            title: "FreeBSD",
            subtitle: "The unknown giant whose power is to serve.",
            page: 4,
            subpage: 3
          },
          {
            type: "link-list-item",
            image: "gfx/mini/home/stuff",
            title: "Cool Stuff",
            subtitle: "Links to funny and/or interesting pictures, videos, etc.",
            page: 4,
            subpage: 4
          },
          {
            type: "link-list-item",
            image: "gfx/mini/home/stuff",
            title: "Funny Pix",
            subtitle: "Some of my favorite funny pictures",
            page: 4,
            subpage: 5
          }
        ]
      }
    ],
    pages: [
      
      // -----------------------------------------------------------------------------------------------
      // STUFF: Quotes
      // -----------------------------------------------------------------------------------------------
      
      {
        name: "stuff",
        title: "Quotes",
        content: [
          {
            type: "ul",
            items: [
              "Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.[nl][Antoine de Saint-Exupery][nl][nl]",
              "There is time enough for everything in the course of the day, if you do but one thing at once, but there is not time enough in the year, if you will do two things at a time.[nl][Lord Chesterfield][nl][nl]",
              "I have never been hurt by what I have not said.[nl][Calvin Coolidge][nl][nl]",
              "You are remembered for the rules you break.[nl][Douglas MacArthur][nl][nl]",
              "Most researchers use statistics the way a drunkard uses a lamp-post -- more for support than illumination.[nl][Winfred Castle][nl][nl]",
              "Even a clock that does not work is right twice a day.[nl][Polish proverb][nl][nl]",
              "Losing an illusion makes you wiser than finding a truth.[nl][Ludwig Borne][nl][nl]",
              "You can't wake a person who is pretending to be asleep.[nl][Navajo Proverb][nl][nl]",
              "One day, someone showed me a glass of water that was half full. And he said, \"Is it half full or half empty?\" So I drank the water. No more problem.[nl][Alexander Jodorowsky][nl][nl]",
              "If a man will begin with certainties, he shall end in doubts, but if he will content to begin with doubts, he shall end in certainties.[nl][Francis Bacon][nl][nl]",
              "I do not suffer from insanity, I enjoy every minute of it.[nl][Edgar Allan Poe][nl][nl]",
              "It is better, of course, to know useless things than to know nothing.[nl][Lucius Annaeus Seneca][nl][nl]",
              "Not everything that can be counted counts, and not everything that counts can be counted.[nl][Albert Einstein][nl][nl]",
              "Fishing for hypotheses is like throwing a dart at a wall and then drawing a target around it.[nl][Andree Monette][nl][nl]",
              "All models are wrong but some are useful.[nl][George E.P. Box][nl][nl]",
              "There are no routine statistical question; only questionable statistical routines.[nl][D.R. Cox][nl][nl]",
              "It is much more important to be clear than to be correct.[nl][Blair Wheaton][nl][nl]",
              "Believe those who are seeking the truth. Doubt those who find it.[nl][Andre Gide][nl][nl]",
              "Is it more serious to convict an innocent man or to acquit a guilty? That will depend on the consequences of the error; is the punishment death or fine; what is the danger to the community of released criminals; what are the current ethical views on punishment? From the point of view of mathematical theory all that we can do is to show how the risk of errors can be controlled and minimized. The use of these statistical tools in any given case, in determining just how the balance should be struck, must be left to the investigator.[nl][Neyman and Pearson][nl][nl]",
              "Never mistake motion for action.[nl][Ernest Hemingway][nl][nl]",
              "Excellence is an art won by training and habituation. We do not act rightly because we have virtue or excellence, but we rather have those because we have acted rightly. We are what we repeatedly do. Excellence, then, is not an act but a habit.[nl][Aristotle][nl][nl]",
              "Imagination was given to man to compensate him for what he is not; a sense of humor to console him for what he is.[nl][Francis Bacon][nl][nl]",
              "I contend we are both atheists, I just believe in one fewer god than you do. When you understand why you dismiss all the other possible gods, you will understand why I dismiss yours.[nl][Stephen F. Roberts][nl][nl]",
              "The ancestor of every action is a thought.[nl][Ralph Waldo Emerson]"
            ]
          }
        ]
      },
       
      // -----------------------------------------------------------------------------------------------
      // STUFF: Front-End Development
      // -----------------------------------------------------------------------------------------------
      
      {
        name: "stuff",
        title: "Front-End Development",
        nav: true,
        content: [
          {
            type: "section", title: "Loops benchmarks", date: { y:2009, m:4, d:12 },
            content: [
              { type: "p", content: "Some time ago I read an article on differences between various loops with respect to the speed of iteration. I don't remember where I found it, but it made me wonder. I did some excavation on my hard drive to locate the original results. Back then I compared the loops in FF 2.0.0.6 and IE 6.0. For the purpose of this post I included more browsers." },
              { type: "p", content: "Below are the loops I compared." },
              {
                type: "table",
                caption: "JavaScript and C",
                headColCnt: 1,
                markEven: true,
                cssClass: "pro-full",
                colCssClasses: ["","","","","","","",""],
                content: [
                  [ "for",      "[code]for (var i=0; i < imax; i++) {}[/code]" ],
                  [ "dw",       "[code]var i=0; do { i++; } while (i < imax);[/code]" ],
                  [ "for rev",  "[code]for (var i=imax; i > 0; i--) {}[/code]" ],
                  [ "dw rev A", "[code]var i=imax; do { i--; } while (i > 0);[/code]" ],
                  [ "dw rev B", "[code]var i=imax; do {} while (i--);[/code]" ],
                  [ "dw rev C", "[code]var i=imax; do {} while (--i);[/code]" ],
                  [ "dw rev D", "[code]var i=-imax; do {} while (++i);[/code]" ]
                ],
                endLineCnt: 1
              },
              {
                type: "table",
                caption: "Java",
                headColCnt: 1,
                markEven: true,
                cssClass: "pro-full",
                colCssClasses: ["","","","","","","",""],
                content: [
                  [ "for",      "[code]for (int i=0; i < imax; i++) {};[/code]" ],
                  [ "dw",       "[code]int i=0; do { i++; } while (i < imax);[/code]" ],
                  [ "for rev",  "[code]for (int i=imax; i > 0; i--) {};[/code]" ],
                  [ "dw rev A", "[code]int i=imax; do { i--; } while (i != 0);[/code]" ],
                  [ "dw rev B", "[code]int i=imax; do {} while (i-- != 0);[/code]" ]
                ]
              },
              { type: "p", content: "I didn't feel like installing all versions of the browser on my laptop so the comparison involves the following three different machines:" },
              {
                type: "ul",
                items: [
                  "[b]Machine 1[/b]: Intel Pentium M 1.86 GHz, 2GB RAM, Windows XP",
                  "[b]Machine 2[/b]: 1GB RAM, Ubuntu",
                  "[b]Machine 3[/b]: Solaris"
                ]
              },
              { type: "p", content: "An important implication is that the results are not comparable across machines. In fact, I would be even careful with comparing results cross-browser. Cross-loop is fine. Nevertheless, to make cross-browser within-machine comparisons a bit easier I sorted the result tables by machine. Clearly, this is not an attempt to provide reliable benchmarks; rather some informal insights. Still interesting, I think." },
              { type: "p", content: "Statistics I'm reporting are based on 100 runs of each loop. A single run consisted of 10,000,000 (ten million) empty iterations ([code]imax[/code] in the code above). The [i]ratio[/i] is the factor by which a given loop is slower than the fastest one (within-browser, within-machine). The fastest loops are highlighted in green." },
              {
                type: "table",
                caption: "Opera 9.62, Machine 1",
                headRowCnt: 1,
                headColCnt: 1,
                cssClass: "pro-full",
                colCssClasses: ["","","","","","","","loop-fastest"],
                content: [
                  [ "&nbsp;", "for",     "dw",      "for rev", "dw rev A", "dw rev B", "dw rev C", "dw rev D" ],
                  [ "mean",   "1155.33", "1114.86", "619.51",  "581.52",   "473.13",   "466.29",   "464.97"   ],
                  [ "median", "1141.00", "1110.00", "625.00",  "578.00",   "469.00",   "469.00",   "469.00"   ],
                  [ "stdev",  "55.94",   "8.96",    "7.52",    "6.93",     "88.15",    "6.60",     "7.06"     ],
                  [ "ratio",  "2.48",    "2.40",    "1.33",    "1.25",     "1.02",     "1.00",     "1.00"     ]
                ],
                endLineCnt: 1
              },
              {
                type: "table",
                caption: "Safari 3.1.2, Machine 1",
                headRowCnt: 1,
                headColCnt: 1,
                cssClass: "pro-full",
                colCssClasses: ["","","","","","loop-fastest","",""],
                content: [
                  [ "&nbsp;", "for",     "dw",      "for rev", "dw rev A", "dw rev B", "dw rev C", "dw rev D" ],
                  [ "mean",   "1837.81", "1964.84", "868.88",  "949.88",   "530.80",   "568.57",   "572.18"   ],
                  [ "median", "1828.00", "1953.50", "875.00",  "953.00",   "531.00",   "563.00",   "578.00"   ],
                  [ "stdev",  "41.52",   "19.02",   "19.17",   "9.59",     "12.56",    "11.93",    "12.47"    ],
                  [ "ratio",  "3.46",    "3.70",    "1.64",    "1.79",     "1.00",     "1.07",     "1.08"     ]
                ],
                endLineCnt: 1
              },
              {
                type: "table",
                caption: "FF 2.0.0.6, Machine 1",
                headRowCnt: 1,
                headColCnt: 1,
                cssClass: "pro-full",
                colCssClasses: ["","","","","","loop-fastest","",""],
                content: [
                  [ "&nbsp;", "for",     "dw",      "for rev", "dw rev A", "dw rev B", "dw rev C", "dw rev D" ],
                  [ "mean",   "2473.02", "2487.99", "914.66",  "898.89",   "526.22",   "560.32",   "528.03"   ],
                  [ "median", "2469.00", "2485.00", "907.00",  "875.00",   "531.00",   "578.00",   "531.00"   ],
                  [ "stdev",  "22.64",   "25.27",   "11.23",   "38.74",    "11.90",    "30.94",    "13.55"    ],
                  [ "ratio",  "4.70",    "4.73",    "1.74",    "1.71",     "1.00",     "1.06",     "1.00"     ]
                ],
                endLineCnt: 1
              },
              {
                type: "table",
                caption: "FF 3.06, Machine 1",
                headRowCnt: 1,
                headColCnt: 1,
                cssClass: "pro-full",
                colCssClasses: ["","","","","","loop-fastest","",""],
                content: [
                  [ "&nbsp;", "for",    "dw",     "for rev", "dw rev A", "dw rev B", "dw rev C", "dw rev D" ],
                  [ "mean",   "846.98", "800.31", "638.32",  "613.11",   "341.59",   "352.55",   "350.68"   ],
                  [ "median", "843.00", "798.50", "636.00",  "611.00",   "338.00",   "351.00",   "349.00"   ],
                  [ "stdev",  "21.47",  "13.33",  "15.05",   "13.45",    "9.21",     "11.67",    "14.80"    ],
                  [ "ratio",  "2.48",   "2.34",   "1.87",    "1.79",     "1.00",     "1.03",     "1.03"     ]
                ],
                endLineCnt: 1
              },
              {
                type: "table",
                caption: "IE 6, Machine 1",
                headRowCnt: 1,
                headColCnt: 1,
                cssClass: "pro-full",
                colCssClasses: ["","","","","","","","loop-fastest"],
                content: [
                  [ "&nbsp;", "for",     "dw",      "for rev", "dw rev A", "dw rev B", "dw rev C", "dw rev D" ],
                  [ "mean",   "1959.85", "2784.37", "1777.75", "1566.81",  "1363.93",  "1446.65",  "177.76"   ],
                  [ "median", "1961.00", "2789.00", "1777.00", "1569.50",  "1366.50",  "1441.00",  "173.00"   ],
                  [ "stdev",  "68.29",   "71.70",   "56.51",   "35.41",    "58.83",    "43.88",    "46.21"    ],
                  [ "ratio",  "11.03",   "15.66",   "10.00",   "8.81",     "7.67",     "8.14",     "1.00"     ]
                ],
                endLineCnt: 1
              },
              {
                type: "table",
                caption: "Opera 9.52, Machine 2",
                headRowCnt: 1,
                headColCnt: 1,
                cssClass: "pro-full",
                colCssClasses: ["","","","","","","","loop-fastest"],
                content: [
                  [ "&nbsp;", "for",     "dw",      "for rev", "dw rev A", "dw rev B", "dw rev C", "dw rev D" ],
                  [ "mean",   "5868.26", "5291.32", "2480.26", "2182.77",  "2042.57",  "2043.79",  "2039.97"  ],
                  [ "median", "5852.50", "5270.00", "2455.50", "2158.00",  "2024.00",  "2024.00",  "2019.00"  ],
                  [ "stdev",  "114.57",  "140.87",  "62.20",   "82.05",    "50.08",    "50.85",    "44.06"    ],
                  [ "ratio",  "2.88",    "2.59",    "1.22",    "1.07",     "1.00",     "1.00",     "1.00"     ]
                ],
                endLineCnt: 1
              },
              {
                type: "table",
                caption: "FF 3.0.4, Machine 2",
                headRowCnt: 1,
                headColCnt: 1,
                cssClass: "pro-full",
                colCssClasses: ["","","","","","loop-fastest","",""],
                content: [
                  [ "&nbsp;", "for",     "dw",      "for rev", "dw rev A", "dw rev B", "dw rev C", "dw rev D" ],
                  [ "mean",   "1721.16", "1602.92", "1018.38", "1035.39",  "813.65",   "861.22",   "820.44"   ],
                  [ "median", "1697.00", "1568.00", "1003.50", "1031.50",  "813.00",   "820.00",   "818.00"   ],
                  [ "stdev",  "103.58",  "104.64",  "98.87",   "96.62",    "104.15",   "165.81",   "103.26"   ],
                  [ "ratio",  "2.12",    "1.97",    "1.25",    "1.27",     "1.00",     "1.06",     "1.01"     ]
                ],
                endLineCnt: 1
              },
              { type: "p", content: "Just for fun I also compared loops in C and Java. Results are below. Note, that [i]dw rev C[/i] and [i]dw rev D[/i] are not valid Java statements." },
              {
                type: "table",
                caption: "C, Machine 3",
                headRowCnt: 1,
                headColCnt: 1,
                cssClass: "pro-full",
                colCssClasses: ["","","","","","loop-fastest","",""],
                content: [
                  [ "&nbsp;", "for",     "dw",      "for rev", "dw rev A", "dw rev B", "dw rev C", "dw rev D" ],
                  [ "mean",   "1692.60", "1541.30", "1464.90", "1405.80",  "702.60",   "1171.40",  "1171.10"  ],
                  [ "median", "1690.00", "1540.00", "1460.00", "1410.00",  "700.00",   "1170.00",  "1170.00"  ],
                  [ "stdev",  "4.63",    "4.85",    "5.02",    "5.35",     "4.41",     "4.03",     "3.45"     ],
                  [ "ratio",  "2.41",    "2.19",    "2.08",    "2.00",     "1.00",     "1.67",     "1.67"     ]
                ],
                endLineCnt: 1
              },
              {
                type: "table",
                caption: "Java, Machine 1",
                headRowCnt: 1,
                headColCnt: 1,
                cssClass: "pro-full",
                colCssClasses: ["","","","","loop-fastest",""],
                content: [
                  [ "&nbsp;", "for",     "dw",      "for rev", "dw rev A", "dw rev B" ],
                  [ "mean",   "1501.12", "1199.06", "1082.18", "871.56",   "1106.00"  ],
                  [ "median", "1500.00", "1203.00", "1078.00", "875.00",   "1109.00"  ],
                  [ "stdev",  "17.60",   "30.40",   "7.54",    "34.63",    "10.97"    ],
                  [ "ratio",  "1.72",    "1.38",    "1.24",    "1.00",     "1.27"     ]
                ]
              },
              { type: "p", content: "As you can see, there are some dramatic (some clearly statistically significant) differences between the times it took to run the loops. Given the data above, no loop is uniformly best across browsers. However, it seems the reversed [code]do-while[/code] (most notably, [i]dw rev B[/i]) outperforms the [code]for[/code] loop, even in compiled languages." },
              { type: "p", content: "The practical significance of the above is somewhat marginal, I'm afraid. I did it mostly for fun. You rarely deal with the number of iterations where this sort of micro-optimization makes a difference. But I'm sure there are cases where you may want to squeeze every nanosecond from that nasty loop you've been working on." },
              { type: "p", content: "No, I didn't include Duff's device in the comparison (yet?)." },
              { type: "p", content: "If you find it interesting you may want to check the following links out (for example). Following either of them will start the tests immediately so make sure that's what you want." },
              {
                type: "ul",
                items: [
                  { type: "link", action: "http://www.devpro.it/examples/loopsbench/", target: "new", content: "Andrea Giammarch's loop benchmarks" },
                  { type: "link", action: "http://benchmarker.flesler.com/loops/run/", target: "new", content: "Ariel Flesler's jsBenchmarker" }
                ]
              }
            ]
          },
          
          {
            type: "section", title: "Handling server's JSON response", date: { y:2009, m:01, d:09 },
            content: [
              { type: "p", content: "If you are thinking of having your server respond to a request with a JavaScript object literal and are wondering what to do with that on the client side, below's what I do ([code]req[/code] is an instance of the XMLHttpRequest object)." },
              {
                type: "code", lang: "javascript",
                lines: [
                  "var res = null;",
                  "eval(\"res = \" + req.responseText);"
                ]
              },
              { type: "p", content: "At this point [code]res[/code] stores the reference to the object retrieved from the server." }
            ]
          },
          
          {
            type: "section", title: "Dynamically generating a PRE", date: { y:2008, m:11, d:12 },
            content: [
              { type: "p", content: "[b]Tested on[/b]: FF2 (Win), Opera 9 (Win), IE7 (Win), Safari 3 (Win)" },
              { type: "p", content: "I've encountered some problems while attempting to generate the PRE element. As is usually the case, it worked fine in all browsers but IE. The code below did the trick for me." },
              {
                type: "code", lang: "javascript",
                lines: [
                  "var parent = document.getElementById(\"...\");  // reference to the parent element",
                  "var txt = \"...\";  // the content of the PRE element",
                  "",
                  "...",
                  "",
                  "var pre = document.createElement(\"pre\");",
                  "if (pre.innerText !== undefined) {  // IE",
                  "  pre.innerText = txt;",
                  "}",
                  "else {",
                  "  pre.appendChild(document.createTextNode(txt));",
                  "}",
                  "parent.appendChild(pre);"
                ]
              }
            ]
          },
          
          {
            type: "section", title: "Dynamically generating a TABLE", date: { y:2008, m:11, d:12 },
            content: [
              { type: "p", content: "When generating a table in HTML using JavaScript, you need to make the [code]tbody[/code] element a child of the [code]table[/code] element. All rows would then be children of the [code]tbody[/code]. If you skip [code]tbody[/code] the table won't be rendered in IE." }
            ]
          }
          
          /*
          {
            type: "section", title: "Speed of logical comparisons", date: { y:2008, m:11, d:17 },
            content: [
              {
                type: "p",
                content: [
                ]
              }
            ]
          }
          */
        ]
      },
      
      // -----------------------------------------------------------------------------------------------
      // STUFF: LaTeX
      // -----------------------------------------------------------------------------------------------
      
      {
        name: "stuff",
        title: "LaTeX",
        content: [
          {
            type: "section", title: "Table spanning two columns", date: { y:2008, m:11, d:11 },
            content: [
              { type: "p", content: "Here's the situation. You have a two-column layout and want to make a table span those two columns thus taking the entire page width. Most Web pages I checked in search for the solution mentioned appending an asterix to the [code]tabular[/code] environment and providing the new width." },
              {
                type: "code", lang: "tex",
                lines: [
                  "\\begin{tabular*}{1.00\\textwidth}{@{\\extracolsep{\\fill}} cc}",
                  "  Col 1 & Col 2 \\\\",
                  "  1     & 2     \\\\",
                  "  2     & 2     \\\\",
                  "  ...   & ...   \\\\",
                  "  N     & N     \\\\",
                  "\\end{tabular*}"
                ]
              },
              { type: "p", content: "The example assumes the table has 2 centered columns. The additional [code]@{\\extracolsep{\\fill}}[/code] parameter makes sure the columns get stretched to fill the entire width specified." },
              { type: "p", content: "That is a piece of good of advice, but provides only a partial solution to the problem. At this point the table will indeed have the anticipated width, but the text from the second column will be rendered underneath it, as if the table was layed over it. To solve this an additional asterix is needed after the [code]table[/code] environment." },
              {
                type: "code", lang: "tex",
                lines: [
                  "\\begin{table*}[t]",
                  "...",
                  "\\end{table*}"
                ]
              },
              { type: "p", content: "The location argument [code][t][/code] requests the table to be positioned at the top of a page." },
              { type: "p", content: "The entire thing looks as follows:" },
              {
                type: "code", lang: "tex",
                lines: [
                  "\\begin{table*}[t]",
                  "  \\begin{tabular*}{1.00\\textwidth}{@{\\extracolsep{\\fill}} cc}",
                  "    Col 1 & Col 2 \\\\",
                  "    1     & 2     \\\\",
                  "    2     & 2     \\\\",
                  "    ...   & ...   \\\\",
                  "    N     & N     \\\\",
                  "  \\end{tabular*}",
                  "\\end{table*}"
                ]
              }
            ]
          }
        ]
      },
      
      // -----------------------------------------------------------------------------------------------
      // STUFF: FreeBSD
      // -----------------------------------------------------------------------------------------------
      
      {
        name: "stuff",
        title: "freebsd",
        nav: true,
        content: [
          {
            type: "section", title: "System: Init", //date: { y:2009, m:11, d:16 },
            content: [
              {
                type: "code", lang: "sh",
                lines: [
                  "mount_msdosfs /dev/ad0s5 /mnt/D/",
                  "",
                  "echo '0\\t3\\t*\\t*\\t*\\troot\\t/usr/sbin/freebsd-update cron' >> /etc/crontab",
                  "",
                  "portsnap fetch",
                  "portsnap extract",
                  "",
                  "vi /etc/mail/aliases  # change email address",
                  "newaliases",
                  "",
                  "make BATCH=yes install clean",
                  "",
                  "chsh -s /usr/local/bin/bash  # bash needs to be installed"
                ]
              }
            ]
          },
          
          {
            type: "section", title: "System: Update", //date: { y:2009, m:11, d:16 },
            content: [
              {
                type: "code", lang: "sh",
                lines: [
                  "freebsd-update fetch",
                  "freebsd-update install",
                  "portsnap fetch",
                  "portsnap update"
                ]
              }
            ]
          },
          
          {
            type: "section", title: "System: Misc", //date: { y:2009, m:11, d:16 },
            content: [
              "Service scripts are located in: [code]/usr/local/etc/rc.d/[/code]"
            ]
          },
          
          {
            type: "section", title: "Package: Install", //date: { y:2009, m:11, d:16 },
            content: [
              {
                type: "code", lang: "sh",
                lines: [
                  "portmaster -d /usr/ports/...",
                  "",
                  "/usr/ports/ports-mgmt/portaudit",
                  "vi /etc/mail/aliases",
                  "newaliases",
                  "",
                  "make search key=<keyword>  # search by keyword in title and decription",
                  "",
                  "make BATCH=yes install clean"
                ]
              }
            ]
          },
          
          {
            type: "section", title: "Package: Update", //date: { y:2009, m:11, d:16 },
            content: [
              {
                type: "code", lang: "sh",
                lines: [
                  "cd /usr/ports/...",
                  "",
                  "make BATCH=yes",
                  "make deinstall",
                  "make BATCH=yes reinstall clean",
                  "",
                  "make clean  # cleans the build; no harm is done",
                  "",
                  "portmaster -ad  # updates all ports to the latest version"
                ]
              }
            ]
          },
          
          {
            type: "section", title: "App: Screen", //date: { y:2009, m:11, d:16 },
            content: [
              {
                type: "code", lang: "sh",
                lines: [
                  "screen              # start",
                  "screen -r           # reattach",
                  "",
                  "screen -list",
                  "screen -wipe        # remove a dead sessions",
                  "screen -D <name>    # detach (perform before attaching after \"dirty\" disconnect)",
                  "",
                  "ctrl-a w            # list all windows (the current window is marked with \"*\")",
                  "ctrl-a 0..9         # go to window 0..9",
                  "ctrl-a n            # go to next window",
                  "ctrl-a ctrl-a       # toggle between the current and previous window",
                  "ctrl-a d            # detach but keep shell window open",
                  "ctrl-a D (shift-d)  # power detach and logout"
                ]
              }
            ]
          },
          
          {
            type: "section", title: "App: Tomcat 6.0", //date: { y:2009, m:11, d:16 },
            content: [
              "Line to add to [code]/etc/rc.conf[/code]:",
              {
                type: "code", lang: "sh",
                lines: [
                  "tomcat60_enable=\"YES\""
                ]
              }
            ]
          },
          
          {
            type: "section", title: "App: MySQL", //date: { y:2009, m:11, d:16 },
            content: [
              "Lines to add to [code]/etc/rc.conf[/code]:",
              {
                type: "code", lang: "sh",
                lines: [
                  "mysql_enable=\"YES\"",
                  "mysql_dbdir=\"/home/mysql\"  # changes the data directory"
                ]
              },
              "The default data directory is: [code]/var/db/mysql/[/code]"
            ]
          },
          
          {
            type: "section", title: "App: rTorrent", //date: { y:2009, m:11, d:16 },
            content: [
              {
                type: "code", lang: "sh",
                lines: [
                  "backspace  # add torrent and start downloading",
                  "enter      # same thing, but torrent will not be activated",
                  "ctrl+o     # set new dir for selected torrent (only when torrent hasn't been activated yet)",
                  "ctrl+s     # start download",
                  "ctrl+d     # stop an active download",
                  "",
                  "a/s/d      # increase the upload throttle by 1/5/50 KB",
                  "z/x/c      # decrease the upload throttle by 1/5/50 KB",
                  "A/S/D      # increase the download throttle by 1/5/50 KB",
                  "Z/X/C      # decrease the download throttle by 1/5/50 KB",
                  "",
                  "ctrl+q     # initiate shutdown, press again to force the shutdown and skip sending the stop signal to trackers",
                  "up/down    # select item",
                  "left       # go back to the previous screen",
                  "+/-        # change priority of torrent",
                  "1..9       # switch view",
                  "",
                ]
              },
              { type: "link", action: "http://libtorrent.rakshasa.no/wiki/RTorrentUserGuide", target: "new", content: "rTorrent user guide" }
            ]
          },
          
          {
            type: "section", title: "App: XFCE", 
            content: [
              "Lines to be added to [code]/etc/rc.conf[/code]:",
              {
                type: "code", lang: "sh",
                lines: [
                  "hald_enable=\"YES\"",
                  "dbus_enable=\"YES\"",
                  "polkitd_enable=\"YES\""
                ]
              }
            ]
          },
          
          {
            type: "section", title: "App: VNC Server", //date: { y:2009, m:11, d:16 },
            content: [
              "Lines to be added to [code]~/.vnc/xstartup[/code]:",
              {
                type: "code", lang: "sh",
                lines: [
                  "#!/bin/sh",
                  "xrdb $HOME/.Xresourcesxsetroot -solid greyxterm -geometry 80x24+10+10 -ls -title \"$VNCDESKTOP Desktop\" &",
                  "startxfce4 &"
                ]
              }
            ]
          },
          
          {
            type: "section", title: "App: putty", //date: { y:2009, m:11, d:16 },
            content: [
              "Make the file [code]/etc/ssh/sshd_config[/code] reflect the following:",
              {
                type: "code", lang: "sh",
                lines: [
                  "TCPKeepAlive yes",
                  "ClientAliveInterval 300",
                  "/etc/rc.d/sshd restart"
                ]
              },
              "Then execute:",
              {
                type: "code", lang: "sh",
                lines: [
                  "/etc/rc.d/sshd restart"
                ]
              }
            ]
          },
          
          {
            type: "section", title: "Misc", //date: { y:2009, m:11, d:16 },
            content: [
              {
                type: "code", lang: "sh",
                lines: [
                  "tar cfz dst.tar.gz *",
                  "tar xfz something.tar.gz",
                  "",
                  "find <dir-01> <dir-02> ... <dir-n> -name <name> -print",
                  "",
                  "rsync -az --partial --progress server:dir local_dir"
                ]
              }
            ]
          },
          
          /*
          {
            type: "section", title: "", //date: { y:2009, m:11, d:16 },
            content: [
              {
                type: "code", lang: "sh",
                lines: [
                ]
              }
            ]
          },
          */
          
          {
            type: "section",  title: "References", //date: { y:2009, m:11, d:16 },
            content: [
              {
                type: "ul",
                items: [
                  { type: "link", action: "http://www.freebsd.org", target: "new", content: "FreeBSD Home" },
                  { type: "link", action: "http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook", target: "new", content: "FreeBSD Handbook" },
                  { type: "link", action: "http://forums.freebsd.org", target: "new", content: "FreeBSD Forums" }
                ]
              }
            ]
          }
        ]
      },
      
      // -----------------------------------------------------------------------------------------------
      // STUFF: Cool Stuff
      // -----------------------------------------------------------------------------------------------
      
      {
        name: "stuff",
        title: "Cool Stuff",
        content: [
          {
            type: "ul",
            items: [
              { type: "link", action: "http://www.michaelbach.de/ot", target: "new", content: "82 Optical Illusions & Visual Phenomena" }
            ]
          },
          {
            type: "ul",
            items: [
              { type: "link", action: "http://www.youtube.com/watch?v=uSgst7Pq7w4", target: "new", content: "Music video: Chrono Trigger - Corridors of Time"},
              { type: "link", action: "http://www.youtube.com/watch?v=HllRJW6_R-o", target: "new", content: "Music video: Chrono Trigger - Secret of the Forest"},
              { type: "link", action: "http://www.youtube.com/watch?v=i25QnaxZSIo", target: "new", content: "Music video: Chrono Trigger - World Revolution"}
            ]
          },
          {
            type: "ul",
            items: [
              { type: "link", action: "http://www.youtube.com/watch?v=pkj0avoVUUU", target: "new", content: "Video: Unbelivable Football"},
              { type: "link", action: "http://www.youtube.com/watch?v=nHYC4ekzg60", target: "new", content: "Video: Village sniper" },
              { type: "link", action: "http://www.youtube.com/watch?v=G0LtUX_6IXY", target: "new", content: "Video: The Original Human TETRIS Performance" },
              { type: "link", action: "http://www.youtube.com/watch?v=kDKiQfBs9lo", target: "new", content: "Video: Snatch Wars" },
              { type: "link", action: "http://www.youtube.com/watch?v=Ht96HJ01SE4", target: "new", content: "Video: Queen Bohemian Rhapsody Old School Computer Remix" }
            ]
          }
        ]
      },
      
      // -----------------------------------------------------------------------------------------------
      // STUFF: Funny Pix
      // -----------------------------------------------------------------------------------------------
      
      {
        name: "stuff",
        title: "Funny Pix",
        content: [
          { type: "p", content: "I would like to state it clearly. I am not the author of any of the pictures/drawings you will find below. All credit for the fun you may have by checking them out should go to their authors. I apologize some of the authors for not providing their names, but I am just publishing stuff off my hard drive. Please let me know if you are an author and would like me to take an item off this page." },
          {
            type: "container",
            align: "center",
            content: [
              { type: "img", src: "res/funny/ape-to-man.jpg", name: "Ape to man", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/beer-store.jpg", name: "The beer store", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/bike.jpg", name: "Good for winter rides", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/captcha-01.gif", name: "Captcha", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/captcha-02.jpg", name: "Captcha", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/cc.jpg", name: "Credit card stolen?", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/evolution.jpg", name: "Evolution", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/giraffe.jpg", name: "Giraffe", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/hmm.jpg", name: "Hmm", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/man-woman.jpg", name: "Man, woman", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/modern-web-design.gif", name: "Modern Web Design", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/morning.jpg", name: "Morning", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/numbers.gif", name: "Numbers", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/project.jpg", name: "Project", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/rock-rule.gif", name: "Rock rule", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/soccer.jpg", name: "Soccer", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/science-religion.jpg", name: "Science vs religion", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/strong-dude.jpg", name: "String dude", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/whaaa.jpg", name: "Whaaa?", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/socialism-capitalism.jpg", name: "Socialism vs capitalism", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/windows-firewall.jpg", name: "Windows firewall", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/windows-home.jpg", name: "Windows home", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/gas-01.jpg", name: "Gas 01", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/gas-02.jpg", name: "Gas 02", cssClass: "funny", endLineCnt: 4 },
              { type: "img", src: "res/funny/gas-03.jpg", name: "Gas 03", cssClass: "funny", endLineCnt: 4 }
            ]
          }
        ]
      }
      
    ]
  },
  
  
  
  
  // -----------------------------------------------------------------------------------------------
  // ABOUT ME
  // -----------------------------------------------------------------------------------------------
  
  {
    name: "about-me",
    title: "About me",
    content: [
      { type: "img", src: "gfx/tomek-loboda-beach.jpg", name: "At the beach", cssClass: "me-02" },
      { type: "img", src: "gfx/tomek-loboda-camera.jpg", name: "At my place", cssClass: "me-01" },
      { type: "p", content: "My name is Tomek Loboda and I am " + ((new Date()).getFullYear() - 1978 - ((new Date()).getMonth() <= 6 ? 1 : 0)) + " years old. I am originally from Poland. I was born in the city of Legnica. I am currently studying for my doctoral degree at the School of Information Sciences at the University of Pittsburgh." },
      { type: "p", content: "Below are some things I like:" },
      {
        type: "ul",
        items: [
          "Arts",
          "Beer",
          [
            "CCGs (most notably ",
            { type: "link", target: "new", action: "http://www.netrunneronline.com/home/", target: "new", content: "Net Runner" },
            ")"
          ],
          "Computer games",
          "Darts",
          "Discovery Channel",
          "Nature",
          { type: "link", target: "new", action: "photo/", content: "Photography", log: "Photography site" },
          "Piano",
          "Sci-fi",
          "Science",
          "Skiing",
          "Smart people",
          "Tennis",
          "Visiting cool places"
        ]
      },
      { type: "p", content: "Below are some of my all time favorite games:" },
      {
        type: "ul",
        items: [
          "[b]Arcades (MAME)[/b]: Contra, Elevator Action, Galaga, Hammerin Harry, Mikie, Rygar, Snow Bros, Time Scanner",
          "[b]Super Nintendo (ZNES)[/b]: Chrono Trigger",
          "[b]Amiga[/b]: Archon, Benefactor, Cannon Fodder, Gods, Lemmings, Lotus, Lupo Alberto, Pinball Dreams, Pinball Illusions, Pinball Fantasies, Rick Dangerous, Shadow of the Beast, Swiv, The First Samurai, Twintris, Turrican",
          "[b]Atari[/b]: Bruce Lee, Boulder Dash, Moon Patrol, Montezuma's Revenge, River Raid"
        ]
      },
      { type: "p", content: "I think the phrase [i]multum, non multa[/i] best describes my mindset. Enjoy the site and have a good day." },
      { type: "p", content: "All best," },
      { type: "img", src: "gfx/tomek.png", name: "Tomek", cssClass: "signature" }
    ]
  },
  
  
  
  
  // -----------------------------------------------------------------------------------------------
  // CONTACT
  // -----------------------------------------------------------------------------------------------
  
  {
    name: "contact",
    title: "Contact",
    content: [
      {
        type: "table",
        colCssClasses: ["contact-left","contact-right"],
        content: [
          [
            "Mailing address:",
            [
              "Tomek D. Loboda[nl][nl]",
              "School of Information Sciences[nl]",
              "University of Pittsburgh[nl][nl]",
              "135 North Bellefield Avenue #2B10[nl]",
              "Pittsburgh PA, 15260[nl]",
              "USA[nl]"
            ]
          ],
          [ "Voice:",    "+1 (412) 624-7378" ],
          [ "Fax:",      "+1 (412) 624-2788" ],
          [ "E-mail:",   "tol7@pitt.edu" ],
          [ "Web site:", { type: "link", action: "http://www.sis.pitt.edu/~tloboda" } ]
        ]
      },
      {
        type: "p",
        content: [
          "You can send me a message by ",
          { type: "link", action: "javascript:site.showMsg()", content: "clicking here" },
          "."
        ]
      }
    ]
  }

];
