• ISO Country Codes in Java

    Today I needed a simple way to store current ISO 3166 country codes (to be specific, this would actually be ISO 3166-2) in a Java class so I threw this together quickly.  I hope it saves someone some typing! Note that there are special characters included.

    /** Copyright (c) 2008-2011, Brooklyn eXperimental Media Center
     * All rights reserved.
     * 
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions are met:
     *     * Redistributions of source code must retain the above copyright
     *       notice, this list of conditions and the following disclaimer.
     *     * Redistributions in binary form must reproduce the above copyright
     *       notice, this list of conditions and the following disclaimer in the
     *       documentation and/or other materials provided with the distribution.
     *     * Neither the name of Brooklyn eXperimental Media Center nor the
     *       names of its contributors may be used to endorse or promote products
     *       derived from this software without specific prior written permission.
     * 
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
     * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     * DISCLAIMED. IN NO EVENT SHALL Brooklyn eXperimental Media Center BE LIABLE FOR ANY
     * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
     * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
     * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    */
    package edu.poly.bxmc.betaville.util;
    
    import java.util.HashMap;
    
    /**
     * Class for storing current country codes based on ISO 3166-2
     * @author Skye Book
     *
     */
    public class CountryCodes {
    	/**
    	 * A {@link HashMap} using 2 letter country codes as keys and
    	 * country names as the values. 
    	 */
    	public static final HashMap<String, String> countries;
    	static{
    		HashMap<String, String> map = new HashMap<String, String>();
    		map.put("AF", "Afghanistan");
    		map.put("AL", "Albania");
    		map.put("DZ", "Algeria");
    		map.put("AS", "American Samoa");
    		map.put("AD", "Andorra");
    		map.put("AO", "Angola");
    		map.put("AI", "Anguilla ");
    		map.put("AQ", "Antarctica");
    		map.put("AG", "Antigua and Barbuda");
    		map.put("AR", "Argentina");
    		map.put("AM", "Armenia");
    		map.put("AW", "Aruba");
    		map.put("AU", "Australia");
    		map.put("AT", "Austria");
    		map.put("AZ", "Azerbaijan");
    		map.put("BS", "Bahamas");
    		map.put("BH", "Bahrain");
    		map.put("BD", "Bangladesh");
    		map.put("BB", "Barbados");
    		map.put("BY", "Belarus");
    		map.put("BE", "Belgium");
    		map.put("BZ", "Belize");
    		map.put("BJ", "Benin");
    		map.put("BM", "Bermuda");
    		map.put("BT", "Bhutan");
    		map.put("BO", "'Bolivia, Plurinational State Of'  ");
    		map.put("BQ", "'Bonaire, Saint Eustatius and Saba'");
    		map.put("BA", "Bosnia and Herzegovina");
    		map.put("BW", "Botswana");
    		map.put("BV", "Bouvet Island");
    		map.put("BR", "Brazil");
    		map.put("IO", "British Indian Ocean Territory");
    		map.put("BN", "Brunei Darussalam");
    		map.put("BG", "Bulgaria");
    		map.put("BF", "Burkina Faso");
    		map.put("BI", "Burundi");
    		map.put("KH", "Cambodia");
    		map.put("CM", "Cameroon");
    		map.put("CA", "Canada");
    		map.put("CV", "Cape Verde  ");
    		map.put("KY", "Cayman Islands");
    		map.put("CF", "Central African Republic");
    		map.put("TD", "Chad");
    		map.put("CL", "Chile");
    		map.put("CN", "China");
    		map.put("CX", "Christmas Island");
    		map.put("CC", "Cocos (Keeling) Islands");
    		map.put("CO", "Colombia");
    		map.put("KM", "Comoros");
    		map.put("CG", "Congo");
    		map.put("CD", "'Congo, The Democratic Republic Of The'");
    		map.put("CK", "Cook Islands");
    		map.put("CR", "Costa Rica");
    		map.put("HR", "Croatia");
    		map.put("CU", "Cuba");
    		map.put("CW", "Curaçao");
    		map.put("CY", "Cyprus");
    		map.put("CZ", "Czech Republic");
    		map.put("CI", "Côte D\'Ivoire");
    		map.put("DK", "Denmark");
    		map.put("DJ", "Djibouti");
    		map.put("DM", "Dominica");
    		map.put("DO", "Dominican Republic");
    		map.put("EC", "Ecuador");
    		map.put("EG", "Egypt");
    		map.put("SV", "El Salvador");
    		map.put("GQ", "Equatorial Guinea");
    		map.put("ER", "Eritrea");
    		map.put("EE", "Estonia");
    		map.put("ET", "Ethiopia");
    		map.put("FK", "Falkland Islands  (Malvinas)");
    		map.put("FO", "Faroe Islands");
    		map.put("FJ", "Fiji");
    		map.put("FI", "Finland");
    		map.put("FR", "France");
    		map.put("GF", "French Guiana");
    		map.put("PF", "French Polynesia");
    		map.put("TF", "French Southern Territories");
    		map.put("GA", "Gabon");
    		map.put("GM", "Gambia");
    		map.put("GE", "Georgia");
    		map.put("DE", "Germany");
    		map.put("GH", "Ghana ");
    		map.put("GI", "Gibraltar");
    		map.put("GR", "Greece");
    		map.put("GL", "Greenland");
    		map.put("GD", "Grenada");
    		map.put("GP", "Guadeloupe");
    		map.put("GU", "Guam");
    		map.put("GT", "Guatemala");
    		map.put("GG", "Guernsey");
    		map.put("GN", "Guinea");
    		map.put("GW", "Guinea-Bissau");
    		map.put("GY", "Guyana");
    		map.put("HT", "Haiti");
    		map.put("HM", "Heard and McDonald Islands");
    		map.put("VA", "Holy See (Vatican City State)");
    		map.put("HN", "Honduras");
    		map.put("HK", "Hong Kong");
    		map.put("HU", "Hungary");
    		map.put("IS", "Iceland");
    		map.put("IN", "India");
    		map.put("ID", "Indonesia");
    		map.put("IR", "'Iran, Islamic Republic Of'");
    		map.put("IQ", "Iraq");
    		map.put("IE", "Ireland");
    		map.put("IM", "Isle of Man");
    		map.put("IL", "Israel");
    		map.put("IT", "Italy");
    		map.put("JM", "Jamaica");
    		map.put("JP", "Japan");
    		map.put("JE", "Jersey");
    		map.put("JO", "Jordan");
    		map.put("KZ", "Kazakhstan");
    		map.put("KE", "Kenya");
    		map.put("KI", "Kiribati");
    		map.put("KP", "'Korea, Democratic People\'s Republic Of'");
    		map.put("KR", "'Korea, Republic of'");
    		map.put("KW", "Kuwait");
    		map.put("KG", "Kyrgyzstan");
    		map.put("LA", "Lao People\'s Democratic Republic");
    		map.put("LV", "Latvia");
    		map.put("LB", "Lebanon");
    		map.put("LS", "Lesotho");
    		map.put("LR", "Liberia");
    		map.put("LY", "Libyan Arab Jamahiriya");
    		map.put("LI", "Liechtenstein");
    		map.put("LT", "Lithuania");
    		map.put("LU", "Luxembourg");
    		map.put("MO", "Macao");
    		map.put("MK", "'Macedonia, the Former Yugoslav Republic Of'");
    		map.put("MG", "Madagascar");
    		map.put("MW", "Malawi");
    		map.put("MY", "Malaysia");
    		map.put("MV", "Maldives");
    		map.put("ML", "Mali");
    		map.put("MT", "Malta");
    		map.put("MH", "Marshall Islands");
    		map.put("MQ", "Martinique");
    		map.put("MR", "Mauritania");
    		map.put("MU", "Mauritius");
    		map.put("YT", "Mayotte");
    		map.put("MX", "Mexico");
    		map.put("FM", "'Micronesia, Federated States Of'");
    		map.put("MD", "'Moldova, Republic of'");
    		map.put("MC", "Monaco");
    		map.put("MN", "Mongolia");
    		map.put("ME", "Montenegro");
    		map.put("MS", "Montserrat");
    		map.put("MA", "Morocco");
    		map.put("MZ", "Mozambique");
    		map.put("MM", "Myanmar");
    		map.put("NA", "Namibia");
    		map.put("NR", "Nauru");
    		map.put("NP", "Nepal");
    		map.put("NL", "Netherlands");
    		map.put("AN", "Netherlands Antilles");
    		map.put("NC", "New Caledonia");
    		map.put("NZ", "New Zealand");
    		map.put("NI", "Nicaragua");
    		map.put("NE", "Niger");
    		map.put("NG", "Nigeria");
    		map.put("NU", "Niue");
    		map.put("NF", "Norfolk Island");
    		map.put("MP", "Northern Mariana Islands");
    		map.put("NO", "Norway");
    		map.put("OM", "Oman");
    		map.put("PK", "Pakistan");
    		map.put("PW", "Palau");
    		map.put("PS", "'Palestinian Territory, Occupied'");
    		map.put("PA", "Panama");
    		map.put("PG", "Papua New Guinea");
    		map.put("PY", "Paraguay");
    		map.put("PE", "Peru");
    		map.put("PH", "Philippines");
    		map.put("PN", "Pitcairn");
    		map.put("PL", "Poland");
    		map.put("PT", "Portugal");
    		map.put("PR", "Puerto Rico");
    		map.put("QA", "Qatar");
    		map.put("RO", "Romania");
    		map.put("RU", "Russian Federation");
    		map.put("RW", "Rwanda");
    		map.put("RE", "Réunion");
    		map.put("BL", "Saint Barthélemy");
    		map.put("SH", "'Saint Helena, Ascension and Tristan Da Cunha'");
    		map.put("KN", "Saint Kitts And Nevis");
    		map.put("LC", "Saint Lucia");
    		map.put("MF", "Saint Martin");
    		map.put("PM", "Saint Pierre And Miquelon");
    		map.put("VC", "Saint Vincent And The Grenedines");
    		map.put("WS", "Samoa");
    		map.put("SM", "San Marino");
    		map.put("ST", "Sao Tome and Principe");
    		map.put("SA", "Saudi Arabia");
    		map.put("SN", "Senegal");
    		map.put("RS", "Serbia");
    		map.put("SC", "Seychelles");
    		map.put("SL", "Sierra Leone");
    		map.put("SG", "Singapore");
    		map.put("SX", "Sint Maarten (Dutch part)");
    		map.put("SK", "Slovakia");
    		map.put("SI", "Slovenia");
    		map.put("SB", "Solomon Islands");
    		map.put("SO", "Somalia");
    		map.put("ZA", "South Africa");
    		map.put("GS", "South Georgia and the South Sandwich Islands");
    		map.put("ES", "Spain");
    		map.put("LK", "Sri Lanka");
    		map.put("SD", "Sudan");
    		map.put("SR", "Suriname");
    		map.put("SJ", "Svalbard And Jan Mayen");
    		map.put("SZ", "Swaziland");
    		map.put("SE", "Sweden");
    		map.put("CH", "Switzerland");
    		map.put("SY", "Syrian Arab Republic  ");
    		map.put("TW", "'Taiwan, Province Of China'");
    		map.put("TJ", "Tajikistan");
    		map.put("TZ", "'Tanzania, United Republic of'");
    		map.put("TH", "Thailand");
    		map.put("TL", "Timor-Leste");
    		map.put("TG", "Togo");
    		map.put("TK", "Tokelau");
    		map.put("TO", "Tonga");
    		map.put("TT", "Trinidad and Tobago");
    		map.put("TN", "Tunisia");
    		map.put("TR", "Turkey");
    		map.put("TM", "Turkmenistan");
    		map.put("TC", "Turks and Caicos Islands");
    		map.put("TV", "Tuvalu");
    		map.put("UG", "Uganda");
    		map.put("UA", "Ukraine");
    		map.put("AE", "United Arab Emirates");
    		map.put("GB", "United Kingdom");
    		map.put("US", "United States");
    		map.put("UM", "United States Minor Outlying Islands");
    		map.put("UY", "Uruguay");
    		map.put("UZ", "Uzbekistan");
    		map.put("VU", "Vanuatu");
    		map.put("VE", "'Venezuela, Bolivarian Republic of' ");
    		map.put("VN", "Viet Nam");
    		map.put("VG", "'Virgin Islands, British'");
    		map.put("VI", "'Virgin Islands, U.S.'");
    		map.put("WF", "Wallis and Futuna");
    		map.put("EH", "Western Sahara");
    		map.put("YE", "Yemen");
    		map.put("ZM", "Zambia");
    		map.put("ZW", "Zimbabwe");
    		map.put("AX", "Åland Islands");
    		countries = map;
    	}
    }
  • Heartbeat

    I got to thinking about all the underlying “services” we have running under the skin and how they never fail (until something goes wrong). Below is a few minutes of your heart pumping blood throughout your body based on an average healthy adult (~80 bpm). I put in a small randomization function to simulate the fluctuations the body goes through. Think about this the next time you take yourself for granted :)

    beat (time since last 854)
    

    beat (time since last 809)

    beat (time since last 858)

    beat (time since last 836)

    beat (time since last 851)

    beat (time since last 862)

    beat (time since last 838)

    beat (time since last 821)

    beat (time since last 833)

    beat (time since last 834)

    beat (time since last 817)

    beat (time since last 896)

    beat (time since last 872)

    beat (time since last 843)

    beat (time since last 866)

    beat (time since last 819)

    beat (time since last 847)

    beat (time since last 820)

    beat (time since last 873)

    beat (time since last 861)

    beat (time since last 813)

    beat (time since last 816)

    beat (time since last 898)

    beat (time since last 873)

    beat (time since last 891)

    beat (time since last 803)

    beat (time since last 841)

    beat (time since last 822)

    beat (time since last 819)

    beat (time since last 831)

    beat (time since last 867)

    beat (time since last 825)

    beat (time since last 892)

    beat (time since last 873)

    beat (time since last 898)

    beat (time since last 833)

    beat (time since last 804)

    beat (time since last 820)

    beat (time since last 822)

    beat (time since last 875)

    beat (time since last 898)

    beat (time since last 855)

    beat (time since last 872)

    beat (time since last 866)

    beat (time since last 822)

    beat (time since last 843)

    beat (time since last 808)

    beat (time since last 841)

    beat (time since last 834)

    beat (time since last 817)

    beat (time since last 856)

    beat (time since last 828)

    beat (time since last 851)

    beat (time since last 849)

    beat (time since last 900)

    beat (time since last 832)

    beat (time since last 829)

    beat (time since last 806)

    beat (time since last 814)

    beat (time since last 848)

    beat (time since last 829)

    beat (time since last 858)

    beat (time since last 865)

    beat (time since last 805)

    beat (time since last 846)

    beat (time since last 841)

    beat (time since last 896)

    beat (time since last 830)

    beat (time since last 877)

    beat (time since last 812)

    beat (time since last 886)

    beat (time since last 862)

    beat (time since last 859)

    beat (time since last 819)

    beat (time since last 892)

    beat (time since last 818)

    beat (time since last 863)

    beat (time since last 868)

    beat (time since last 883)

    beat (time since last 812)

    beat (time since last 861)

    beat (time since last 809)

    beat (time since last 877)

    beat (time since last 828)

    beat (time since last 814)

    beat (time since last 817)

    beat (time since last 816)

    beat (time since last 887)

    beat (time since last 893)

    beat (time since last 857)

    beat (time since last 855)

    beat (time since last 843)

    beat (time since last 870)

    beat (time since last 852)

    beat (time since last 845)

    beat (time since last 890)

    beat (time since last 847)

    beat (time since last 897)

    beat (time since last 866)

    beat (time since last 863)

    beat (time since last 834)

    beat (time since last 823)

    beat (time since last 899)

    beat (time since last 838)

    beat (time since last 851)

    beat (time since last 872)

    beat (time since last 840)

    beat (time since last 873)

    beat (time since last 882)

    beat (time since last 854)

    beat (time since last 852)

    beat (time since last 900)

    beat (time since last 866)

    beat (time since last 895)

    beat (time since last 812)

    beat (time since last 865)

    beat (time since last 811)

    beat (time since last 807)

    beat (time since last 840)

    beat (time since last 834)

    beat (time since last 857)

    beat (time since last 891)

    beat (time since last 815)

    beat (time since last 820)

    beat (time since last 855)

    beat (time since last 812)

    beat (time since last 852)

    beat (time since last 830)

    beat (time since last 873)

    beat (time since last 832)

    beat (time since last 831)

    beat (time since last 842)

    beat (time since last 895)

    beat (time since last 815)

    beat (time since last 857)

    beat (time since last 841)

    beat (time since last 807)

    beat (time since last 832)

    beat (time since last 863)

    beat (time since last 808)

    beat (time since last 833)

    beat (time since last 893)

    beat (time since last 889)

    beat (time since last 811)

    beat (time since last 893)

    beat (time since last 860)

    beat (time since last 856)

    beat (time since last 858)

    beat (time since last 827)

    beat (time since last 845)

    beat (time since last 897)

    beat (time since last 810)

    beat (time since last 837)

    beat (time since last 815)

    beat (time since last 872)

    beat (time since last 852)

    beat (time since last 881)

    beat (time since last 873)

    beat (time since last 888)

    beat (time since last 829)

    beat (time since last 842)

    beat (time since last 846)

    beat (time since last 817)

    beat (time since last 865)

    beat (time since last 856)

    beat (time since last 890)

    beat (time since last 870)

    beat (time since last 821)

    beat (time since last 839)

    beat (time since last 816)

    beat (time since last 854)

    beat (time since last 897)

    beat (time since last 845)

    beat (time since last 826)

    beat (time since last 855)

    beat (time since last 859)

    beat (time since last 832)

    beat (time since last 844)

    beat (time since last 871)

    beat (time since last 820)

    beat (time since last 807)

    beat (time since last 827)

    beat (time since last 879)

    beat (time since last 875)

    beat (time since last 825)

    beat (time since last 896)

    beat (time since last 863)

    beat (time since last 886)

    beat (time since last 888)

    beat (time since last 861)

    beat (time since last 838)

    beat (time since last 884)

    beat (time since last 812)

    beat (time since last 865)

    beat (time since last 867)

    beat (time since last 860)

    beat (time since last 843)

    beat (time since last 873)

    beat (time since last 861)

    beat (time since last 805)

    beat (time since last 814)

    beat (time since last 891)

    beat (time since last 855)

    beat (time since last 888)

    beat (time since last 847)

    beat (time since last 863)

    beat (time since last 879)

    beat (time since last 853)

    beat (time since last 897)

    beat (time since last 822)

    beat (time since last 866)

    beat (time since last 862)

    beat (time since last 873)

    beat (time since last 867)

    beat (time since last 828)

    beat (time since last 840)

    beat (time since last 845)

    beat (time since last 874)

    beat (time since last 841)

    beat (time since last 868)

    beat (time since last 858)

    beat (time since last 880)

    beat (time since last 830)

    beat (time since last 818)

    beat (time since last 824)

    beat (time since last 888)

    beat (time since last 884)

    beat (time since last 854)

    beat (time since last 878)

    beat (time since last 833)

    beat (time since last 809)

    beat (time since last 874)

    beat (time since last 869)

    beat (time since last 861)

    beat (time since last 877)

    beat (time since last 900)

    beat (time since last 824)

    beat (time since last 823)

    beat (time since last 871)

    beat (time since last 807)

    beat (time since last 815)

    beat (time since last 812)

    beat (time since last 803)

    beat (time since last 822)

    beat (time since last 855)

    beat (time since last 868)

    beat (time since last 818)

    beat (time since last 805)

    beat (time since last 817)

    beat (time since last 809)

    beat (time since last 861)

    beat (time since last 821)

    beat (time since last 830)

    beat (time since last 809)

    beat (time since last 893)

    beat (time since last 873)

    beat (time since last 849)

    beat (time since last 860)

    beat (time since last 895)

    beat (time since last 861)

    beat (time since last 889)

    beat (time since last 810)

    beat (time since last 895)

    beat (time since last 869)

    beat (time since last 861)

    beat (time since last 855)

    beat (time since last 850)

    beat (time since last 849)

    beat (time since last 806)

    beat (time since last 808)

    beat (time since last 866)

    beat (time since last 886)

    beat (time since last 849)

    beat (time since last 810)

    beat (time since last 822)

    beat (time since last 823)

    beat (time since last 854)

    beat (time since last 826)

    beat (time since last 883)

    beat (time since last 840)

    beat (time since last 868)

    beat (time since last 840)

    beat (time since last 894)

    beat (time since last 815)

    beat (time since last 845)

    beat (time since last 842)

    beat (time since last 879)

    beat (time since last 899)

    beat (time since last 880)

    beat (time since last 870)

    beat (time since last 844)

    beat (time since last 804)

    beat (time since last 824)

    beat (time since last 884)

    beat (time since last 887)

    beat (time since last 832)

    beat (time since last 824)

    beat (time since last 870)

    beat (time since last 891)

    beat (time since last 886)

    beat (time since last 860)

    beat (time since last 891)

    beat (time since last 881)

    beat (time since last 859)

    beat (time since last 848)

    beat (time since last 851)

    beat (time since last 899)

    beat (time since last 845)

    beat (time since last 829)

    beat (time since last 852)

    beat (time since last 855)

    beat (time since last 868)

    beat (time since last 858)

    beat (time since last 877)

    beat (time since last 854)

    beat (time since last 883)

    beat (time since last 808)

    beat (time since last 838)

    beat (time since last 871)

    beat (time since last 887)

    beat (time since last 835)

    beat (time since last 868)

    beat (time since last 805)

    beat (time since last 853)

    beat (time since last 807)

    beat (time since last 862)

    beat (time since last 850)

    beat (time since last 853)

    beat (time since last 853)

    beat (time since last 811)

    beat (time since last 806)

    beat (time since last 888)

    beat (time since last 829)

    beat (time since last 835)

    beat (time since last 805)

    beat (time since last 802)

    beat (time since last 811)

    beat (time since last 891)

    beat (time since last 821)

    beat (time since last 839)

    beat (time since last 810)

    beat (time since last 822)

    beat (time since last 838)

    beat (time since last 894)

    beat (time since last 831)

    beat (time since last 820)

    beat (time since last 870)

    beat (time since last 861)

    beat (time since last 884)

    beat (time since last 803)

    beat (time since last 842)

    beat (time since last 820)

    beat (time since last 894)

    beat (time since last 818)

    beat (time since last 829)

    beat (time since last 892)

    beat (time since last 807)

    beat (time since last 886)

    beat (time since last 873)

    beat (time since last 857)

    beat (time since last 834)

    beat (time since last 877)

    beat (time since last 810)

    beat (time since last 838)

    beat (time since last 885)

    beat (time since last 842)

    beat (time since last 811)

    beat (time since last 898)

    beat (time since last 887)

    beat (time since last 815)

    beat (time since last 889)

    beat (time since last 849)

    beat (time since last 830)

    beat (time since last 857)

    beat (time since last 898)

    beat (time since last 846)

    beat (time since last 890)

    beat (time since last 893)

    beat (time since last 856)

    beat (time since last 841)

    beat (time since last 821)

    beat (time since last 898)

    beat (time since last 827)

    beat (time since last 845)

    beat (time since last 856)

    beat (time since last 863)

    beat (time since last 803)

    beat (time since last 814)

    beat (time since last 836)

    beat (time since last 873)

    beat (time since last 831)

    beat (time since last 816)

    beat (time since last 866)

    beat (time since last 863)

    beat (time since last 875)

    beat (time since last 860)

    beat (time since last 806)

    beat (time since last 816)

    beat (time since last 899)

    beat (time since last 885)

    beat (time since last 894)

    beat (time since last 875)

    beat (time since last 852)

    beat (time since last 869)

    beat (time since last 891)

    beat (time since last 813)

    beat (time since last 886)

    beat (time since last 841)

    beat (time since last 805)

    beat (time since last 815)

    beat (time since last 833)

    beat (time since last 862)

    beat (time since last 885)

    beat (time since last 867)

    beat (time since last 823)

    beat (time since last 881)

    beat (time since last 820)

    beat (time since last 825)

    beat (time since last 847)

    beat (time since last 834)

    beat (time since last 882)

    beat (time since last 878)

    beat (time since last 862)

    beat (time since last 876)

    beat (time since last 843)

    beat (time since last 883)

    beat (time since last 802)

    beat (time since last 862)

    beat (time since last 886)

    beat (time since last 857)

    beat (time since last 849)

    beat (time since last 816)

    beat (time since last 867)

    beat (time since last 845)

    beat (time since last 853)

    beat (time since last 822)

    beat (time since last 849)

    beat (time since last 811)

    beat (time since last 878)

    beat (time since last 892)

    beat (time since last 833)

    beat (time since last 886)

    beat (time since last 856)

    beat (time since last 821)

    beat (time since last 829)

    beat (time since last 897)

    beat (time since last 823)

    beat (time since last 837)

    beat (time since last 899)

    beat (time since last 828)

    beat (time since last 825)

    beat (time since last 835)

    beat (time since last 845)

    beat (time since last 880)

    beat (time since last 875)

    beat (time since last 814)

    beat (time since last 828)

    beat (time since last 829)

    beat (time since last 818)

    beat (time since last 811)

    beat (time since last 864)

    beat (time since last 880)

    beat (time since last 824)

    beat (time since last 846)

    beat (time since last 826)

    beat (time since last 807)

    beat (time since last 816)

    beat (time since last 864)

    beat (time since last 822)

    beat (time since last 892)

    beat (time since last 851)

    beat (time since last 816)

    beat (time since last 875)

    beat (time since last 808)

    beat (time since last 881)

    beat (time since last 803)

    beat (time since last 889)

    beat (time since last 896)

    beat (time since last 855)

    beat (time since last 869)

    beat (time since last 845)

    beat (time since last 839)

    beat (time since last 893)

    beat (time since last 830)

    beat (time since last 825)

    beat (time since last 893)

    beat (time since last 882)

    beat (time since last 825)

    beat (time since last 877)

    beat (time since last 845)

    beat (time since last 898)

    beat (time since last 827)

    beat (time since last 878)

    beat (time since last 861)

    beat (time since last 861)

    beat (time since last 853)

    beat (time since last 874)

    beat (time since last 861)

    beat (time since last 839)

    beat (time since last 817)

    beat (time since last 833)

    beat (time since last 881)

    beat (time since last 868)

    beat (time since last 885)

    beat (time since last 852)

    beat (time since last 817)

    beat (time since last 841)

    beat (time since last 848)

    beat (time since last 900)

    beat (time since last 896)

    beat (time since last 863)

    beat (time since last 856)

    beat (time since last 816)

    beat (time since last 848)

    beat (time since last 856)

    beat (time since last 859)

    beat (time since last 806)

    beat (time since last 806)

    beat (time since last 858)

    beat (time since last 823)

    beat (time since last 874)

    beat (time since last 827)

    beat (time since last 815)

    beat (time since last 815)

    beat (time since last 845)

    beat (time since last 802)

    beat (time since last 833)

    beat (time since last 866)

    beat (time since last 817)

    beat (time since last 857)

    beat (time since last 837)

    beat (time since last 817)

    beat (time since last 865)

    beat (time since last 894)

    beat (time since last 807)

    beat (time since last 890)

    beat (time since last 805)

    beat (time since last 856)

    beat (time since last 864)

    beat (time since last 833)

    beat (time since last 835)

    beat (time since last 893)

    beat (time since last 806)

    beat (time since last 900)

    beat (time since last 853)

    beat (time since last 857)

    beat (time since last 866)

    beat (time since last 802)

    beat (time since last 891)

    beat (time since last 845)

    beat (time since last 816)

    beat (time since last 883)

    beat (time since last 801)

    beat (time since last 861)

    beat (time since last 811)

    beat (time since last 804)

    beat (time since last 862)

    beat (time since last 826)

    beat (time since last 898)

    beat (time since last 840)

    beat (time since last 810)

    beat (time since last 854)

    beat (time since last 880)

    beat (time since last 898)

    beat (time since last 853)

    beat (time since last 860)

    beat (time since last 898)

    beat (time since last 850)

    beat (time since last 825)

    beat (time since last 863)

    beat (time since last 804)

    beat (time since last 885)

    beat (time since last 882)

    beat (time since last 893)

    beat (time since last 887)

    beat (time since last 852)

    beat (time since last 892)

    beat (time since last 803)

    beat (time since last 840)

    beat (time since last 823)

    beat (time since last 849)

    beat (time since last 853)

    beat (time since last 820)

    beat (time since last 889)

    beat (time since last 820)

    beat (time since last 866)

    beat (time since last 892)

    beat (time since last 824)

    beat (time since last 851)

    beat (time since last 896)

    beat (time since last 888)

    beat (time since last 836)

    beat (time since last 826)

    beat (time since last 806)

    beat (time since last 883)

    beat (time since last 896)

    beat (time since last 889)

    beat (time since last 873)

    beat (time since last 893)

    beat (time since last 814)

    beat (time since last 801)

    beat (time since last 881)

    beat (time since last 803)

    beat (time since last 813)

    beat (time since last 827)

    beat (time since last 898)

    beat (time since last 897)

    beat (time since last 863)

    beat (time since last 893)

    beat (time since last 810)

    beat (time since last 889)

    beat (time since last 837)

    beat (time since last 882)

    beat (time since last 816)

    beat (time since last 814)

    beat (time since last 821)

    beat (time since last 894)

    beat (time since last 873)

    beat (time since last 853)

    beat (time since last 806)

    beat (time since last 895)

    beat (time since last 857)

    beat (time since last 826)

    beat (time since last 840)

    beat (time since last 855)

    beat (time since last 873)

    beat (time since last 805)

    beat (time since last 876)

    beat (time since last 865)

    beat (time since last 861)

    beat (time since last 866)

    beat (time since last 819)

    beat (time since last 802)

    beat (time since last 809)

    beat (time since last 869)

    beat (time since last 872)

    beat (time since last 874)

    beat (time since last 815)

    beat (time since last 899)

    beat (time since last 862)

    beat (time since last 806)

    beat (time since last 854)

    beat (time since last 899)

    beat (time since last 899)

    beat (time since last 836)

    beat (time since last 886)

    beat (time since last 877)

    beat (time since last 864)

    beat (time since last 823)

    beat (time since last 835)

    beat (time since last 825)

    beat (time since last 802)

    beat (time since last 833)

    beat (time since last 803)

    beat (time since last 859)

    beat (time since last 898)

    beat (time since last 823)

    beat (time since last 849)

    beat (time since last 877)

    beat (time since last 890)

    beat (time since last 832)

    beat (time since last 898)

    beat (time since last 826)

    beat (time since last 855)

    beat (time since last 876)

    beat (time since last 858)

    beat (time since last 898)

    beat (time since last 849)

    beat (time since last 893)

    beat (time since last 879)

    beat (time since last 820)

    beat (time since last 856)

    beat (time since last 844)

    beat (time since last 862)

    beat (time since last 816)

    beat (time since last 824)

    beat (time since last 812)

    beat (time since last 855)

    beat (time since last 810)

    beat (time since last 837)

    beat (time since last 807)

    beat (time since last 847)

    beat (time since last 846)

    beat (time since last 833)

    beat (time since last 854)

    beat (time since last 878)

    beat (time since last 829)

    beat (time since last 883)

    beat (time since last 838)

    beat (time since last 825)

    beat (time since last 860)

    beat (time since last 852)

    beat (time since last 883)

    beat (time since last 811)

    beat (time since last 862)

    beat (time since last 860)

    beat (time since last 879)

    beat (time since last 844)

    beat (time since last 897)

    beat (time since last 871)

    beat (time since last 883)

    beat (time since last 816)

    beat (time since last 882)

    beat (time since last 855)

    beat (time since last 801)

    beat (time since last 836)

    beat (time since last 854)

    beat (time since last 829)

    beat (time since last 824)

    beat (time since last 832)

    beat (time since last 835)

    beat (time since last 852)

    beat (time since last 844)

    beat (time since last 801)

    beat (time since last 862)

    beat (time since last 868)

    beat (time since last 836)

    beat (time since last 886)

    beat (time since last 850)

    beat (time since last 884)

    beat (time since last 859)

    beat (time since last 872)

    beat (time since last 816)

    beat (time since last 846)

    beat (time since last 868)

    beat (time since last 845)

    beat (time since last 818)

    beat (time since last 841)

    beat (time since last 822)

    beat (time since last 808)

    beat (time since last 853)

    beat (time since last 842)

    beat (time since last 861)

    beat (time since last 819)

    beat (time since last 850)

    beat (time since last 827)</pre></blockquote>

  • Putting the Quick Back in Quicksilver

    It’s taken me nearly a year and I’ve finally updated my installation of Quicksilver and was disappointed to find that typing in a few letters in the wrong order (i.e: “ecl” will always give me Eclipse, but try “elc”) was suddenly a mistake that required a backspace!  In the prior version all I had to do was wait a moment and type again, the text from my last attempt would be cleared.

    It turns out that the reset timer isn’t gone but instead seems to be set to 2 seconds by default.  Trying to wait that long has nearly driven me insane, so I’ve set it to a far more comfortable .75 seconds.  Of course, everyone will have their own preference so YMMV.

    This is about the simplest fix ever but its taken me nearly a week to get around to doing simply because Quicksilver is never a thought process for me.  I treat more as a patch bay, and when’s the last time you put any effort into tweaking one of those?

  • [Almost] Back to New York

    So its been nearly a month and we’re now in the final stretch of our last week here in Bremen. While the time initially seemed to stand still, these last two weeks have flown by reminding me yet again that there truly aren’t enough hours in a day.

    The good news to report is that I’ve met some great new people, reconnected with some old ones, and managed to get a whole heck of a lot done :) If that’s not a month well spent I’m not sure what is.

  • More News From the 3ds Max Front

    I’ve really come to enjoy Thursdays and Fridays during my month’s stay here in Germany as it gives me a chance to do some work with the extremely talented students of the Hochschule Bremen.  As you may remember from my most recent post, we faced quite a headache with regards to 3ds and the way it handles Windows localization settings.  This week, however, we were extremely fortunate to stumble on a previously hidden plugin included with this popular 3d package: its OBJ capabilities.

    As I’ve seen some really bad exporters floating around, I was pleasantly surprised to find  an extremely well equipped piece of software by the name of guruware OBJ Exporter.  The capabilities of this little gem are absolutely stunning, as is the thoughtfulness put into the interface and options.  The idea of presets?  WOW!  What a novel idea!  I know I’m not the only person out there with collections of screenshots for different export targets, this feature is truly a lifesaver.

    In addition to the usual checkboxes to triangulate meshes, export texture coordinates, etc there are useful options that anyone in the real time 3d business will love.  You may ask “what could a developer possibly love about anything.. ever?”, which would be a fair question on a normal day.  Today, however, we’ve been granted the option to flip between a Z and Y up-axis, determine decimal precision, and specify target platform (which I can only assume is for the purpose of line terminations).  Brilliant.  As if cappuccino in a university cafeteria wasn’t enough, this was truly a great find.  Needless to say, we were able to correctly set up the exporter and get our test model into Betaville in a matter of minutes.  COLLADA may be the wave of the future, but the ubiquitous OBJ may still rain king for as long as there is software like this around.