[{"content":"\namazon-orders is an unofficial library that provides a Python API (and CLI) for Amazon order history.\nThis package works by parsing data from Amazon\u0026rsquo;s consumer-facing website. A periodic build validates functionality to ensure its stability, but as Amazon provides no official API to use, this package may break at any time. Pin the minor version with a wildcard (ex. ==4.0.*, not ==4.0.7)—or reinstall with the --upgrade (as shown below) often—to ensure you always get the latest stable release.\nThis package only officially supports the English, .com version of Amazon.\nInstallation amazon-orders is available on PyPI and can be installed using pip:\npip install amazon-orders --upgrade That\u0026rsquo;s it! amazon-orders is now available as a package to your Python projects and from the command line.\nBasic Usage You\u0026rsquo;ll use AmazonSession to authenticate your Amazon account, then AmazonOrders and AmazonTransactions to interact with account data. get_order_history and get_order are good places to start.\nfrom amazonorders.session import AmazonSession from amazonorders.orders import AmazonOrders amazon_session = AmazonSession(\u0026#34;\u0026lt;AMAZON_EMAIL\u0026gt;\u0026#34;, \u0026#34;\u0026lt;AMAZON_PASSWORD\u0026gt;\u0026#34;) amazon_session.login() amazon_orders = AmazonOrders(amazon_session) orders = amazon_orders.get_order_history(year=2023) for order in orders: print(f\u0026#34;{order.order_number} - {order.grand_total}\u0026#34;) If the fields you\u0026rsquo;re looking for aren\u0026rsquo;t populated with the above, set full_details=True (or pass --full-details to the history CLI command), since by default it is False (enabling it slows down querying, since an additional request for each order is necessary). Have a look at the Order entity\u0026rsquo;s docs to see what fields are only populated with full details.\nCommand Line Usage You can also run any command available to the main Python interface from the command line:\namazon-orders login amazon-orders history --year 2023 Automating Authentication Authentication can be automated by (in order of precedence) storing credentials in environment variables, passing them to AmazonSession, or storing them in AmazonOrdersConfig. The environment variables amazon-orders looks for are:\nAMAZON_USERNAME\nAMAZON_PASSWORD\nAMAZON_OTP_SECRET_KEY (see docs for usage)\nDocumentation For more advanced usage, amazon-orders\u0026rsquo;s official documentation is available at http://amazon-orders.readthedocs.io.\nContributing If you would like to get involved, be sure to review the Contribution Guide.\nWant to contribute financially? If you\u0026rsquo;ve found amazon-orders useful, sponsorship would also be greatly appreciated!\n","permalink":"https://alexlaird.com/2024/01/amazon-orders-for-python/","summary":"\u003cp\u003e\u003ca href=\"https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Famazon-orders.readthedocs.io%2F_images%2Flogo.png\"\u003e\u003cimg alt=\"amazon-orders - A Python libray (and CLI) for Amazon order history\" loading=\"lazy\" src=\"https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Famazon-orders.readthedocs.io%2F_images%2Flogo.png\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eamazon-orders\u003c/code\u003e is an unofficial library that provides a Python API (and CLI) for Amazon order history.\u003c/p\u003e\n\u003cp\u003eThis package works by parsing data from Amazon\u0026rsquo;s consumer-facing website. A periodic build validates functionality to ensure its stability, but as Amazon provides no official API to use, this package may break at any time. Pin the \u003ca href=\"https://semver.org/\"\u003eminor version\u003c/a\u003e with a wildcard (ex. \u003ccode\u003e==4.0.*\u003c/code\u003e, not \u003ccode\u003e==4.0.7\u003c/code\u003e)—or reinstall with the \u003ccode\u003e--upgrade\u003c/code\u003e (as shown below) often—to ensure you always get the latest stable release.\u003c/p\u003e","title":"amazon-orders for Python"},{"content":"\njava-ngrok is a Java wrapper for ngrok that manages its own binary, making ngrok available via a convenient Java API.\nngrok is a reverse proxy that opens secure tunnels from public URLs to localhost. It\u0026rsquo;s perfect for rapid development (test webhooks, demo local websites, enable SSH access), establishing ingress to external networks and devices, building production APIs (traffic policies, OAuth, load balancing), and more. And it\u0026rsquo;s made even more powerful with native Java integration through the java-ngrok client.\nInstallation java-ngrok is available on Maven Central.\nIf you want ngrok to be available from the command line, pyngrok can be installed using pip to manage that for you.\nBasic Usage Open a Tunnel To open a tunnel, use the NgrokClient\u0026lsquo;s connect() method, which returns a Tunnel, and this returned object has a reference to the public URL generated by ngrok, which can be retrieved with getPublicUrl().\nfinal NgrokClient ngrokClient = new NgrokClient.Builder().build(); // Open a HTTP tunnel on the default port 80 // \u0026lt;Tunnel: \u0026#34;https://\u0026lt;public_sub\u0026gt;.ngrok.io\u0026#34; -\u0026gt; \u0026#34;http://localhost:80\u0026#34;\u0026gt; final Tunnel httpTunnel = ngrokClient.connect(); // Open a SSH tunnel // \u0026lt;Tunnel: \u0026#34;tcp://0.tcp.ngrok.io:12345\u0026#34; -\u0026gt; \u0026#34;localhost:22\u0026#34;\u0026gt; final CreateTunnel sshCreateTunnel = new CreateTunnel.Builder() .withProto(Proto.TCP) .withAddr(22) .build(); final Tunnel sshTunnel = ngrokClient.connect(sshCreateTunnel); // Open a named tunnel from the config file final CreateTunnel createNamedTunnel = new CreateTunnel.Builder() .withName(\u0026#34;my-config-file-tunnel\u0026#34;) .build(); final Tunnel namedTunnel = ngrokClient.connect(createNamedTunnel); // Open an Internal Endpoint that\u0026#39;s load balanced // \u0026lt;Tunnel: \u0026#34;https://some-endpoint.internal\u0026#34; -\u0026gt; \u0026#34;http://localhost:9000\u0026#34;\u0026gt; final CreateTunnel createInternalEndpoint = new CreateTunnel.Builder() .withAddr(\u0026#34;9000\u0026#34;) .withDomain(\u0026#34;some-endpoint.internal\u0026#34;) .withPoolingEnabled(true) .build(); final Tunnel internalEndpoint = ngrokClient.connect(createInternalEndpoint); The connect() method can also take a CreateTunnel (which can be built through its Builder) that allows you to pass additional properties that are supported by ngrok (or withName() to use a tunnel defined in ngrok\u0026rsquo;s config file), as documented here.\nngrok\u0026rsquo;s API The api() method allows you to use the local ngrok agent to make requests against the ngrok API, if you have set an API key. For example, here\u0026rsquo;s how you would reserve a ngrok domain, then create a Cloud Endpoint with an associated traffic policy:\nfinal NgrokClient ngrokClient = new NgrokClient.Builder().build(); final String domain = \u0026#34;some-domain.ngrok.dev\u0026#34;; final ApiResponse domainResponse = ngrokClient.api( List.of(\u0026#34;reserved-domains\u0026#34;, \u0026#34;create\u0026#34;, \u0026#34;--domain\u0026#34;, domain)); final ApiResponse endpointResponse = ngrokClient.api( List.of(\u0026#34;endpoints\u0026#34;, \u0026#34;create\u0026#34;, \u0026#34;--bindings\u0026#34;, \u0026#34;public\u0026#34;, \u0026#34;--url\u0026#34;, String.format(\u0026#34;https://%s\u0026#34;, domain), \u0026#34;--traffic-policy-file\u0026#34;, \u0026#34;policy.yml\u0026#34;)); Command Line Usage Assuming you have also installed pyngrok, all features of ngrok are available on the command line.\nngrok http 80 For details on how to fully leverage ngrok from the command line, see ngrok\u0026rsquo;s official documentation.\nDocumentation For more advanced usage, java-ngrok\u0026rsquo;s official documentation is available here on GitHub, with additional API documentation on javadoc.io.\nIntegration Examples Spring\nDropwizard\nPlay (Scala)\nDocker\nEnd-to-End Testing\nJava 8 A Java 8-compatible build was previously maintained in the 1.4.x branch. While it is no longer supported, it is available through the java8-ngrok artifact instead on Maven Central.\nFor more details on what differs in the java8-ngrok dependency, see the \u0026ldquo;Java 8\u0026rdquo; section of the docs.\nContributing If you would like to get involved, be sure to review the Contribution Guide.\nWant to contribute financially? If you\u0026rsquo;ve found java-ngrok useful, sponsorship would also be greatly appreciated!\n","permalink":"https://alexlaird.com/2021/08/java-ngrok-a-java-wrapper-for-ngrok/","summary":"\u003cp\u003e\u003ca href=\"https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Falexdlaird%2Fjava-ngrok%2Fraw%2Fmain%2Flogo.png\"\u003e\u003cimg alt=\"java-ngrok - a Java wrapper for ngrok\" loading=\"lazy\" src=\"https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Falexdlaird%2Fjava-ngrok%2Fraw%2Fmain%2Flogo.png\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ejava-ngrok\u003c/code\u003e is a Java wrapper for \u003ccode\u003engrok\u003c/code\u003e that manages its own binary, making \u003ccode\u003engrok\u003c/code\u003e available via a convenient Java API.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://ngrok.com/\"\u003e\u003ccode\u003engrok\u003c/code\u003e\u003c/a\u003e is a reverse proxy that opens secure tunnels from public URLs to localhost. It\u0026rsquo;s perfect for rapid development (test webhooks, demo local websites, enable SSH access), establishing ingress to external networks and devices, building production APIs (traffic policies, OAuth, load balancing), and more. And it\u0026rsquo;s made even more powerful with native Java integration through the \u003ccode\u003ejava-ngrok\u003c/code\u003e client.\u003c/p\u003e","title":"java-ngrok - a Java wrapper for ngrok"},{"content":"\nhookee is a utility that provides command line webhooks, on demand! Dump useful request data to the console, process requests and responses, customize response data, and configure hookee and its routes further in any number of ways through custom plugins.\nInstallation hookee is available on PyPI and can be installed using pip:\npip install hookee or conda:\nconda install -c conda-forge hookee That\u0026rsquo;s it! hookee is now available as a Python package and is available from the command line.\nBasic Usage hookee makes it easy to get webhooks on the fly right from the console. Simply start it with:\nhookee start With its default configuration, this will start a server on port 8000, open a ngrok tunnel using pyngrok, and mount a URL at /webhook. Sending any request to the /webhook endpoint will dump the request and response data to the console.\nhookee can be configured in a number of ways to quickly and easily tweak request and response data. For example, here is how you can customize the response body from /webhook using the --response arg.\nhookee --response \u0026#34;\u0026lt;Response\u0026gt;Ok\u0026lt;/Response\u0026gt;\u0026#34; \\ --content-type application/xml hookee can also be started without a tunnel (removing the dependency on an Internet connection). Using the --no-tunnel flag only starts hookee\u0026rsquo;s server, allowing responses to be mocked locally. This can be particularly useful when service discovery is done through a proxy service (ex. HAProxy, Envoy, etc.), meaning you can tell hookee to start on the port of an expected downstream, thus intercepting requests to that service to provide your own responses in an isolated environment, very useful for rapid local development, cluster testing, and more.\nhookee --no-tunnel --response \u0026#34;\u0026lt;Response\u0026gt;Ok\u0026lt;/Response\u0026gt;\u0026#34; \\ --content-type application/xml \\ --default-route /some/route \\ --port 19780 To see the ways hookee can be tweaked right from the console, view its documented args and commands like this:\nhookee --help Documentation For more advanced usage, including how hookee\u0026rsquo;s default configuration can be changed, extended through plugins, API integrations, and more, see its official documentation is available at http://hookee.readthedocs.io.\nContributing If you would like to get involved, be sure to review the Contribution Guide.\nWant to contribute financially? If you\u0026rsquo;ve found hookee useful, sponsorship\nwould also be greatly appreciated!\n","permalink":"https://alexlaird.com/2020/09/hookee-command-line-webhooks-on-demand/","summary":"\u003cp\u003e\u003ca href=\"https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhookee.readthedocs.io%2Fen%2Flatest%2F_images%2Flogo.png\"\u003e\u003cimg alt=\"hookee - command line webhooks, on demand\" loading=\"lazy\" src=\"https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhookee.readthedocs.io%2Fen%2Flatest%2F_images%2Flogo.png\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ehookee\u003c/code\u003e is a utility that provides command line webhooks, on demand! Dump useful request data to the console, process requests and responses, customize response data, and configure \u003ccode\u003ehookee\u003c/code\u003e and its routes further in any number of ways through custom plugins.\u003c/p\u003e\n\u003ch2 id=\"installation\"\u003e\u003ca href=\"https://dev.to/alexdlaird/hookee-command-line-webhooks-on-demand-2of8#installation\"\u003e\u003c/a\u003eInstallation\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003ehookee\u003c/code\u003e is available on \u003ca href=\"https://pypi.org/project/hookee/\"\u003ePyPI\u003c/a\u003e and can be installed using \u003ccode\u003epip\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003epip install hookee\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eor \u003ccode\u003econda\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003econda install -c conda-forge hookee\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThat\u0026rsquo;s it! \u003ccode\u003ehookee\u003c/code\u003e is now available as a Python package and is available from the command line.\u003c/p\u003e","title":"hookee - command line webhooks, on demand"},{"content":"\npyngrok is a Python wrapper for ngrok that manages its own binary, making ngrok available via a convenient Python API and the command line.\nngrok is a reverse proxy that opens secure tunnels from public URLs to localhost. It\u0026rsquo;s perfect for rapid development (test webhooks, demo local websites, enable SSH access), establishing ingress to external networks and devices, building production APIs (traffic policies, OAuth, load balancing), and more. And it\u0026rsquo;s made even more powerful with native Python integration through the pyngrok client.\nInstallation pyngrok is available on PyPI and can be installed using pip:\npip install pyngrok or conda:\nconda install -c conda-forge pyngrok That\u0026rsquo;s it! pyngrok is now available as a package to your Python projects, and ngrok is now available from the command line.\nBasic Usage Open a Tunnel To open a tunnel, use the connect method, which returns a NgrokTunnel, and this returned object has a reference to the public URL generated by ngrok in its public_url attribute.\nfrom pyngrok import ngrok # Open a HTTP tunnel on the default port 80 # \u0026lt;NgrokTunnel: \u0026#34;https://\u0026lt;public_sub\u0026gt;.ngrok.io\u0026#34; -\u0026gt; \u0026#34;http://localhost:80\u0026#34;\u0026gt; http_tunnel = ngrok.connect() # Open a SSH tunnel # \u0026lt;NgrokTunnel: \u0026#34;tcp://0.tcp.ngrok.io:12345\u0026#34; -\u0026gt; \u0026#34;localhost:22\u0026#34;\u0026gt; ssh_tunnel = ngrok.connect(\u0026#34;22\u0026#34;, \u0026#34;tcp\u0026#34;) # Open a named tunnel from the config file named_tunnel = ngrok.connect(name=\u0026#34;my-config-file-tunnel\u0026#34;) # Open an Internal Endpoint that\u0026#39;s load balanced # \u0026lt;NgrokTunnel: \u0026#34;https://some-endpoint.internal\u0026#34; -\u0026gt; \u0026#34;http://localhost:9000\u0026#34;\u0026gt; internal_endpoint = ngrok.connect(addr=\u0026#34;9000\u0026#34;, domain=\u0026#34;some-endpoint.internal\u0026#34;, pooling_enabled=True) The connect method takes kwargs as well, which allows you to pass additional tunnel configurations that are supported by ngrok (or the name of a tunnel defined in ngrok\u0026rsquo;s config file), as documented here.\nngrok\u0026rsquo;s API The api method allows you to use the local ngrok agent to make requests against the ngrok API, if you have set an API key. For example, here\u0026rsquo;s how you would reserve a ngrok domain, then create a Cloud Endpoint with an associated traffic policy:\nfrom pyngrok import ngrok domain = \u0026#34;some-domain.ngrok.dev\u0026#34; ngrok.api(\u0026#34;reserved-domains\u0026#34;, \u0026#34;create\u0026#34;, \u0026#34;--domain\u0026#34;, domain) ngrok.api(\u0026#34;endpoints\u0026#34;, \u0026#34;create\u0026#34;, \u0026#34;--bindings\u0026#34;, \u0026#34;public\u0026#34;, \u0026#34;--url\u0026#34;, f\u0026#34;https://{domain}\u0026#34;, \u0026#34;--traffic-policy-file\u0026#34;, \u0026#34;policy.yml\u0026#34;) Command Line Usage This package puts the default ngrok binary on your path, so all features of ngrok are available on the command line.\nngrok http 80 For details on how to fully leverage ngrok from the command line, see ngrok\u0026rsquo;s official documentation.\nDocumentation For more advanced usage, pyngrok\u0026rsquo;s official documentation is available on Read the Docs.\nIntegration Examples Flask\nDjango\nDocker\nGoogle Colab\nEnd-to-End Testing\nContributing If you would like to get involved, be sure to review the Contribution Guide.\nWant to contribute financially? If you\u0026rsquo;ve found pyngrok useful, sponsorship would also be greatly appreciated!\n","permalink":"https://alexlaird.com/2019/01/pyngrok-a-python-wrapper-for-ngrok/","summary":"\u003cp\u003e\u003ca href=\"https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpyngrok.readthedocs.io%2Fen%2Flatest%2F_images%2Flogo.png\"\u003e\u003cimg alt=\"pyngrok - a Python wrapper for ngrok\" loading=\"lazy\" src=\"https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpyngrok.readthedocs.io%2Fen%2Flatest%2F_images%2Flogo.png\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003epyngrok\u003c/code\u003e is a Python wrapper for \u003ccode\u003engrok\u003c/code\u003e that manages its own binary, making \u003ccode\u003engrok\u003c/code\u003e available via a convenient Python API and the command line.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://ngrok.com/\"\u003e\u003ccode\u003engrok\u003c/code\u003e\u003c/a\u003e is a reverse proxy that opens secure tunnels from public URLs to localhost. It\u0026rsquo;s perfect for rapid development (test webhooks, demo local websites, enable SSH access), establishing ingress to external networks and devices, building production APIs (traffic policies, OAuth, load balancing), and more. And it\u0026rsquo;s made even more powerful with native Python integration through the \u003ccode\u003epyngrok\u003c/code\u003e client.\u003c/p\u003e","title":"pyngrok - a Python wrapper for ngrok"},{"content":"\nWith wildfire season upon us, use this handy texting tool to find out what the air quality is in your area. Simply text your zip code to (415) 212-4229 for air quality updates. You can also add “map” to the text to be sent an image of your region.\nThis service isn’t just useful for individuals with limited access to smartphones or the Internet. It also alleviates the load put on air quality sites like AirNow, which are often overloaded and unavailable during wildfire season due to the spike in traffic. Texting this number instead is a great way to get the same information without bogging down those sites, helping them to stay up for others who need to access them.\nSpread the word and stay safe! If you’re interested in nerding out over the code, feel free to check it out on GitHub, and if you have questions or comments, tweet @alexdlaird to let him know.\n","permalink":"https://alexlaird.com/2018/11/twilio-powered-air-quality-texting-service/","summary":"\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://raw.githubusercontent.com/alexdlaird/air-quality-bot/main/logo.png\"\u003e\u003c/p\u003e\n\u003cp\u003eWith wildfire season upon us, use this handy texting tool to find out what the air quality is in your area. Simply \u003cstrong\u003etext your zip code to (415) 212-4229\u003c/strong\u003e for air quality updates. You can also add “map” to the text to be sent an image of your region.\u003c/p\u003e\n\u003cp\u003eThis service isn’t just useful for individuals with limited access to smartphones or the Internet. It also alleviates the load put on air quality sites like AirNow, which are often overloaded and unavailable during wildfire season due to the spike in traffic. Texting this number instead is a great way to get the same information without bogging down those sites, helping them to stay up for others who need to access them.\u003c/p\u003e","title":"Twilio-Powered Air Quality Texting Service"},{"content":"“Talk is cheap.” That’s what we say. And, to a degree, it’s true. But bear this in mind: all action is precipitated by talk. People will often try to silence your voice expressly for that reason — because they know it will lead to action.\nIn the age where hating on millenials is trendy, dismissing the value of social media is equally in vogue — there’s a correlation there, but that’s another post for another time. But like any form of communication, it has its pros and cons, and you get out of it what you put into it.\nThis is what we put into it. A group of like minded and motivated parents from all across the country banded together using social media to encourage, educate, and challenge each other (and our peers) ideologically and politically while raising the level of discourse. You’ve seen us posting since well before the election, and you’ve seen us continue to join our collective voices as concerned citizens and parents since.\nToday, we launched our next initiative: a PAC (Political Action Committee). Raising Our Future is focused on funding federal candidates who are fighting to make a better world for our children on issues of educational equity, social justice, and family planning.\nWe just launched yesterday. In one day, we raised over $15,000 and took our new Facebook page to 1,300 members. We shared the stories of dozens of founding members throughout the day (we’ll continue this in the days and weeks to come), each post reaching, on average, 2,500 people.\n“Stop talking and do something about it.”\nWe did. We have. We are. We are a force to be reckoned with. Join us.\n#RaisingOurFuture #ROFPAC #WeStartedAPAC\nLike Us on Facebook: https://www.facebook.com/ROFPAC\nFollow Us on Twitter: https://twitter.com/rof_pac\nOur Story: https://www.raisingourfuture.org/2017/07/25/alex-and-jess-are-raising-our-future\nDONATE: https://www.raisingourfuture.org/donate\n","permalink":"https://alexlaird.com/2017/07/alex-and-jess-are-raising-our-future/","summary":"\u003cp\u003e“Talk is cheap.” That’s what we say. And, to a degree, it’s true. But bear this in mind: all action is precipitated by talk. People will often try to silence your voice expressly for that reason — because they know it will lead to action.\u003c/p\u003e\n\u003cp\u003eIn the age where hating on millenials is trendy, dismissing the value of social media is equally in vogue — there’s a correlation there, but that’s another post for another time. But like any form of communication, it has its pros and cons, and you get out of it what you put into it.\u003c/p\u003e","title":"Alex and Jess Are Raising Our Future"},{"content":"Ever been on a trip and, upon return, needed a quick and easy way for all your friends to send you their pictures and videos without burning CDs, sending massive emails, or using third-party services? Or, maybe a better question, ever wondered how to construct a basic Django application with Amazon\u0026rsquo;s web services, for instance S3?\nLook no further. Below is the basic code for a drag-and-drop Django web application that allows users to upload files directly to an Amazon S3 bucket.\nDeployment Setup The code for this project can be found on GitHub.\nYou\u0026rsquo;ll need the following installed before cloning or forking the source code:\nPython 2.7 PyCrypto (if you\u0026rsquo;re on Windows, look at these installers) PIP This project will write to an Amazon Web Services (AWS) S3 storage bucket, so it\u0026rsquo;s assumed you have an AWS account. If not, create one. S3 is a storage platform from Amazon, and EC2 allows you to spin up virtual servers, which you can use to host this project. If you\u0026rsquo;re new to AWS, Amazon will likely give you the first year of their smallest EC2 instance free.\nThis project also includes a deployment script, which allows you to easily deploy the project from your local computer to your server.\nHere\u0026rsquo;s what you need to setup in AWS to ensure your account is ready to receive a deployment of this project:\nLaunch an EC2 instance running Ubuntu Server (or some other Debian-based operating system) Save the .pem key pair file for the EC2 instance as ~/.ssh/myserver.pem Create an EC2 Security Group that has port 80 opened Create an S3 bucket Generate an AWS Access Key and Secret Access Key (Optional) Create an elastic IP and associate it with the EC2 instace you created (Optional) Create a DNS entry of your choosing to point to the elastic IP (AWS will generate their own DNS entry that you can also use, if you don\u0026rsquo;t have your own domain name) Fork the Code Now you\u0026rsquo;re ready to clone, configure, and deploy the code to your EC2 server.\nFork the repository on GitHub Clone your forked repository Modify the variables at the bottom of djangodropzonetos3/settings.py to customize the application You must specify valid values for AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, and AWS_STORAGE_BUCKET_NAME in settings.py Modify the HOSTNAME variables at the top of fabfile.py to point to your EC2 instance\u0026rsquo;s DNS entry Modify the REPO_URL variable at the top of fabfile.py to point to your fork of the repository Deploy The fabfile.py in the repository will take care of setting up the environment for you, including installing and configuring a web server. Isn\u0026rsquo;t that handy? So you\u0026rsquo;re ready to deploy by doing the following:\nFrom the Command Line at the root of the cloned source, execute \u0026ldquo;pip install -r reqs.txt\u0026rdquo; From the Command Line at the root of the cloned source, execute \u0026ldquo;fab deploy\u0026rdquo; That\u0026rsquo;s it. If this deployment is successful, you should be able to navigate to the hostname for your server in a web browser, drop and save the files, and see them stored in your S3 bucket.\nNow, start poking around in the code to learn the ease and awesomeness of Django and how this was accomplished! Leave your thoughts in the comments section below!\n","permalink":"https://alexlaird.com/2014/11/django-dropzone-uploader/","summary":"\u003cp\u003eEver been on a trip and, upon return, needed a quick and easy way for all your friends to send you their pictures and videos without burning CDs, sending massive emails, or using third-party services? Or, maybe a better question, ever wondered how to construct a basic Django application with Amazon\u0026rsquo;s web services, for instance S3?\u003c/p\u003e\n\u003cp\u003eLook no further. Below is the basic code for a drag-and-drop Django web application that allows users to upload files directly to an Amazon S3 bucket.\u003c/p\u003e","title":"Django Dropzone Uploader"},{"content":"NAT loopback is what your router performs when you try to access your external IP address from within your LAN. For instance, say your router forwards port 80 to a web server on your LAN. From an outside network, you could simply visit your external IP address from a browser to access the web server. Internally, if NAT loopback is disabled or blocked, you would not be able to access this the same way.\nThere are any number of valid reasons why you\u0026rsquo;d want to allow NAT loopback on your network. If you\u0026rsquo;re like me, you simply want internal and external access to operate in the same way. NAT loopback is needed to accomplish this, and it is simple and safe. Don\u0026rsquo;t be fooled by the plethora of forum posts crying that NAT loopback is disabled on routers purposefully, that it opens up dangerous security holes, or that it will destroy your network and ultimately your livelihood as you know it. Like the vast majority of scare tactic-based content on the internet, it\u0026rsquo;s false. Your router will not stab you in your sleep if you allow NAT loopback \u0026hellip; although it may emit higher levels of radiation, lace your lipstick and food with carcinogens (compliments of the government, of course), and kill Brad Pitt. Again. Coincidentally, the posts never specify why the claims might be true, lack credible sources, and are rarely found outside of back alley forums. We\u0026rsquo;re still talking about NAT loopback, right? The internet has made us so gullible \u0026hellip;\nThe primary reason for the security concern is that some consumer routers appear to intentionally disable NAT loopback by default, and there is no way around this with stock firmware. However, this is not an intentional barrier, it\u0026rsquo;s just a constraint of limited stock firmware. Nothing new there. The simplest solution to this is, as usual, to flash DD-WRT to your router. Then, follow this tutorial to allow NAT loopback.\nImplementation Before proceeding, ensure NAT loopback actually doesn\u0026rsquo;t work with your version of DD-WRT. Different versions of DD-WRT implement NAT with slight variances, so it\u0026rsquo;s possible your version of DD-WRT may not actually need the special rules below.\nTo check if NAT loopback is working on your router, you\u0026rsquo;ll need your external IP address. If you don\u0026rsquo;t know your external IP address, just Google \u0026ldquo;what is my ip\u0026rdquo;. Now, open a Command Prompt and ping your external IP address. If the command times out, NAT loopback is not working.\nIn the DD-WRT Control Panel, navigate to the “Administration” tab and click on “Commands”. Add the following rules, then click “Save Firewall” to ensure the rules execute even after the router is rebooted.\ninsmod ipt_mark insmod xt_mark iptables -t mangle -A PREROUTING -i ! `get_wanface` -d `nvram get wan_ipaddr` \\\\\\\\ -j MARK --set-mark 0xd001 iptables -t nat -A POSTROUTING -m mark --mark 0xd001 -j MASQUERADE Conclusion That\u0026rsquo;s it! Now, try pinging your external IP again from the Command Line. This time you should receive packets.\nDD-WRT is a always evolving. The developers have stated that they aren\u0026rsquo;t planning on fixing this issue, but if this procedure doesn\u0026rsquo;t work for you, leave a comment below and I\u0026rsquo;ll check to see if something has changed in the latest version of DD-WRT. I’ll try to always keep the tutorial updated with instructions for the latest DD-WRT build.\nAlso, if you previously followed my DD-WRT Guest Wireless tutorial, this fix should work for both interfaces.\n","permalink":"https://alexlaird.com/2013/04/dd-wrt-nat-loopback-issue/","summary":"\u003cp\u003eNAT loopback is what your router performs when you try to access your external IP address from within your LAN. For instance, say your router forwards port 80 to a web server on your LAN. From an outside network, you could simply visit your external IP address from a browser to access the web server. Internally, if NAT loopback is disabled or blocked, you would not be able to access this the same way.\u003c/p\u003e","title":"DD-WRT NAT Loopback Issue"},{"content":"If you\u0026rsquo;ve done any amount of work with routers, you know that it doesn\u0026rsquo;t take long to start craving consistency. And more advanced functionality that the cheap home interfaces simply don\u0026rsquo;t grant you. This is the point where you usually break down and start research things like Tomato, OpenWrt, and DD-WRT, just to name a few of the more popular alternatives.\nThese alternate firmwares don\u0026rsquo;t just provide a consistent administrative experience across all compatible models and brands, they also turn a cheap home router into a flexible and competitive enterprise router.\nMy Setup DD-WRT is my personal firmware of choice. Powerful, flexible, and stable. One thing that I demand in a router is the ability to broadcast a secondary SSID for my guest\u0026rsquo;s to be able to access wireless internet in my home without also having access to my entire network of computers and devices.\nGladly, because my router\u0026rsquo;s firmware was extremely slow and buggy, I flashed my Cisco E2500 router with \u0026ldquo;mini\u0026rdquo; DD-WRT firmware (the E2500 also supports the \u0026ldquo;big\u0026rdquo; firmware). But after reviewing getting the two wireless networks setup on my router, it was brought to my attention that there are no good tutorials for how exactly you are to do this using DD-WRT. The tutorial provided on their own website, in fact, does not work. So, I find that it falls upon me to put out my particular configuration for two mutually exclusive wireless networks from a single router, both networks having access to the WAN port (that is, internet access). There are, of course, multiple ways to do this. Feel free to leave alternative suggestions in the comments.\nCreate Two Wireless Networks First, create your wireless networks by clicking clicking on \u0026ldquo;Wireless\u0026rdquo; and then \u0026ldquo;Basic Settings\u0026rdquo;. We\u0026rsquo;ll setup security in a moment. After you\u0026rsquo;ve configured your private wireless network setup, click \u0026ldquo;Add\u0026rdquo; under \u0026ldquo;Virtual Interfaces\u0026rdquo; to add the \u0026ldquo;wl0.1 SSID\u0026rdquo;. Give your guest network a separate SSID, and select \u0026ldquo;Enable\u0026rdquo; for \u0026ldquo;AP Isolation\u0026rdquo;.\nNow click \u0026ldquo;Save\u0026rdquo; and \u0026ldquo;Apply Settings\u0026rdquo;.\nSetup Wireless Security Navigate over to the \u0026ldquo;Wireless Security\u0026rdquo; tab. After you\u0026rsquo;ve setup the wireless security for your private network, setup similar security for your guest SSID. I would advise against leaving your guest wireless completely open, but since you\u0026rsquo;re going to be giving out this password to your guests, it should probably be a little simpler than your private network\u0026rsquo;s key.\nNow click \u0026ldquo;Save\u0026rdquo; and \u0026ldquo;Apply Settings\u0026rdquo;.\nCreate Bridge At this point, you have two wireless networks broadcasting on two separate SSIDs. Both networks should have internet access, but you\u0026rsquo;ll also notice both networks dish out IPs in the same subnet, and both networks are clearly able to see each other. While you may like and trust your guests, that doesn\u0026rsquo;t mean you necessarily want them to have access to all your network devices. To separate the network routing, we need to create a bridge and place the guest network into a different subnet.\nClick on \u0026ldquo;Setup\u0026rdquo; and then on the \u0026ldquo;Networking\u0026rdquo; tab. Under \u0026ldquo;Create Bridge\u0026rdquo; click \u0026ldquo;Add\u0026rdquo; to add a new bridge. Give the bridge a name, and modify the IP address of the bridge to be in a different subnet than your private network. For example, my private network grants IPs in the subnet 192.168.1.0/24, so my guest network in the image below is setup to grant IPs in the subnet 192.168.2.0/24.\nNow click \u0026ldquo;Save\u0026rdquo; and \u0026ldquo;Apply Settings\u0026rdquo;. Though the page may refresh right away, you may need to wait about a minute before the bridge is available to use in the next few steps.\nAssign Guest Network to Bridge Under \u0026ldquo;Assign to Bridge\u0026rdquo; click \u0026ldquo;Add\u0026rdquo;. Select the new bridge you\u0026rsquo;ve created from the first drop-down, and pair it with the \u0026ldquo;wl0.1\u0026rdquo; interface.\nNow click \u0026ldquo;Save\u0026rdquo; and \u0026ldquo;Apply Settings\u0026rdquo;.\nCreate DHCP Server for Guest Network We\u0026rsquo;re almost there! We\u0026rsquo;ve created a bridge in an alternate subnet, but the alternate subnet doesn\u0026rsquo;t have a DHCP server, so our guests currently cannot access the guest SSID (unless they assign themselves a static IP). Scroll to the bottom of the \u0026ldquo;Networking\u0026rdquo; page and under \u0026ldquo;Multiple DHCP Server\u0026rdquo; click \u0026ldquo;Add\u0026rdquo;. Ensure your newly created bridge name is selected from the first drop-down menu.\nNow click \u0026ldquo;Save\u0026rdquo; and \u0026ldquo;Apply Settings\u0026rdquo;. Congratulations, we now have a working, separate guest network! Unfortunately, while users can connect to the network and DHCP is running, guest users aren\u0026rsquo;t able to access the internet quite yet.\nCreate Firewall Rules for Guest Network Navigate to the \u0026ldquo;Administration\u0026rdquo; tab and click on \u0026ldquo;Commands\u0026rdquo;. We need to add three rules to our firewall settings before our private network is completely secure and our guest network has internet access. Add these three rules (one per line) to the \u0026ldquo;Commands\u0026rdquo; text field, then click \u0026ldquo;Save Firewall\u0026rdquo; to ensure the rules execute even after the router is rebooted.\niptables -t nat -I POSTROUTING -o `get_wanface` -j SNAT --to `nvram get wan_ipaddr` iptables -I FORWARD -i br1 -m state --state NEW -j ACCEPT iptables -I FORWARD -i br1 -o br0 -m state --state NEW -j DROP Improve Guest Security Pete Runyan commented with a few more ways to nail down the security of the guest network. For one, your guests likely assume that their device on the guest network is not accessible from other devices on the same network, so you\u0026rsquo;ll want to add the firewall rules below to make that true. It\u0026rsquo;s also probably unnecessary (depending on your needs) to allow users on the guest network SSH, Telnet, or GUI access to the router. Append these firewall rules to harden the security of all of your networks!\niptables -I FORWARD -i br0 -o br1 -m state --state NEW -j DROP iptables -I INPUT -i br1 -p tcp --dport telnet -j REJECT --reject-with tcp-reset iptables -I INPUT -i br1 -p tcp --dport ssh -j REJECT --reject-with tcp-reset iptables -I INPUT -i br1 -p tcp --dport www -j REJECT --reject-with tcp-reset iptables -I INPUT -i br1 -p tcp --dport https -j REJECT --reject-with tcp-reset Conclusion You should now have two working SSIDs: a private one for your home network, and a guest network for your visitors. Both networks should have internet access. The private network will function the same as a LAN and single wireless network did before, with the wireless network having full access to the LAN connections. The guest network, on the other hand, is separated from the private network. Additionally, each individual device on the guest network is separate from another, so guests cannot see each other.\nIf you\u0026rsquo;ve gotten to this point and something is not working, or your guest network does not have internet access, don\u0026rsquo;t be alarmed. DD-WRT is a always evolving, and it\u0026rsquo;s entirely possible bridge settings or firewall rules for the latest build have changed. If this tutorial does not produce the desired result, please leave a comment below. I\u0026rsquo;ll try to always keep the tutorial updated with instructions for the latest DD-WRT build.\nIf you are using DD-WRT and experiencing issues with NAT loopback (accessing your public IP address from within your network), I have a tutorial to help resolve that issue here.\n","permalink":"https://alexlaird.com/2013/03/dd-wrt-guest-wireless/","summary":"\u003cp\u003eIf you\u0026rsquo;ve done any amount of work with routers, you know that it doesn\u0026rsquo;t take long to start craving consistency. And more advanced functionality that the cheap home interfaces simply don\u0026rsquo;t grant you. This is the point where you usually break down and start research things like Tomato, OpenWrt, and DD-WRT, just to name a few of the more popular alternatives.\u003c/p\u003e\n\u003cp\u003eThese alternate firmwares don\u0026rsquo;t just provide a consistent administrative experience across all compatible models and brands, they also turn a cheap home router into a flexible and competitive enterprise router.\u003c/p\u003e","title":"DD-WRT Guest Wireless"},{"content":"Recently, I needed to plot numerous addresses on a map and, ultimately, find the geocentral location of all addresses. The geocentral location is the weighted center of all the addresses, which can be useful in helping determine numerous things, including the average distance between all addresses and some other location.\nThe geocentral location is attained through relatively simple vector math. Let\u0026rsquo;s say, for instance, you have a set of points on a graph. Adding each point together would give you the weighted center of all the points, which can help you determine quite a bit about how that population of points interacts with you or each other.\nI\u0026rsquo;ve put together a simple script below that interacts with Google Maps to do just that. Input a list of addresses in the text box below, attain the coordinates for each address, and plot each address, and the address\u0026rsquo; geocentral location, on the map below.\nA few things to keep in mind:\nOne address per line Addresses must be properly formatted Ensure no address lines are blank The geocentral location is marked with a blue flag In order to keep strain on my server low, the tool below only allows 150 or less addresses to be processed. The source is available on GitHub here, so you\u0026rsquo;re welcome to modify the tool for use on your own server. ","permalink":"https://alexlaird.com/2012/08/geocentral-location-addresses-to-coordinates/","summary":"\u003cp\u003eRecently, I needed to plot numerous addresses on a map and, ultimately, find the geocentral location of all addresses. The geocentral location is the weighted center of all the addresses, which can be useful in helping determine numerous things, including the average distance between all addresses and some other location.\u003c/p\u003e\n\u003cp\u003eThe geocentral location is attained through relatively simple vector math. Let\u0026rsquo;s say, for instance, you have a set of points on a graph. Adding each point together would give you the weighted center of all the points, which can help you determine quite a bit about how that population of points interacts with you or each other.\u003c/p\u003e","title":"Geocentral Location; Addresses to Coordinates"},{"content":"Gordon Crovitz wrote an opinion piece for the Wall Street Journal titled Who Really Invented the Internet? Fortunately, it\u0026rsquo;s only an opinion piece, because there was little more than opinion, littered with plenty of misinformation, in the writing. You can read the article here.\nNow, it\u0026rsquo;s not like I look to the WSJ for the latest technology information (or, in this case, technology history). Far from it. And generally when a here\u0026rsquo;s-the-truth-you-never-knew article starts with political propaganda, it\u0026rsquo;s pretty safe to assume that whatever comes next is going to be absurd. The article\u0026rsquo;s introduction could essentially be summarized as, \u0026ldquo;Obama said something that was true, but I\u0026rsquo;ll be damned if I can\u0026rsquo;t find a way to make it sound false!\u0026rdquo;\nEven still, to those of us in the technology field, the \u0026ldquo;first computer\u0026rdquo; and \u0026ldquo;who invented the internet\u0026rdquo; discussions are highly revered and hotly debated, so when someone not in the industry starts boasting that they have a complete and final answer to these discussions, we just scoff. In Crovitz\u0026rsquo;s defense, he seems to be confusing \u0026ldquo;internet\u0026rdquo; with \u0026ldquo;World Wide Web\u0026rdquo; and many other terms that merely relate to networking and computers. But that\u0026rsquo;s about the extent I\u0026rsquo;d go to to defend him; he\u0026rsquo;s a conservative author trying to make something out of nothing just because a liberal said it.\nDue to the fact that I\u0026rsquo;m more than a little OCD, I wound up relating the history of internet technology through the ages to my Grandpa, who originally sent me the Crovitz article. Much of the details below are in response to specific parts of Crovitz\u0026rsquo;s article, so, as painful as it may be, I recommend you read that article first. Alright, ready? Begin.\nPersonal Computer: The term \u0026ldquo;personal computer\u0026rdquo; was not coined until 1975 for the Altair 8800. However, it is disputed that Xerox created the first \u0026ldquo;personal computer\u0026rdquo;, by whatever modern definition you use. IBM created the first electronic computer in 1953 (the IBM 701), Digital Equipment Corporation created the first digital computer in 1960, and Hewlett-Packard released the first mass-produced digital computer in 1968, the HP 9100A.\nPersonal Workstation: This is the term the WSJ author is looking for in their article. The first personal workstation, a \u0026ldquo;workstation\u0026rdquo; being a computer that can be connected to another computer (in this case, through the Ethernet technology he referenced), was created by Xerox in 1974. However, the computers used by ARPANet were technically also workstations, just not mass produced.\nIntranet (take special note of the \u0026ldquo;a\u0026rdquo;): A connection between two or more computers within the same network. The network in your house is an \u0026ldquo;intranet\u0026rdquo;.\nInternet (take special note of the \u0026ldquo;e\u0026rdquo;): A connection between two or more networks. The wires that connect your house\u0026rsquo;s network to mine are the \u0026ldquo;internet\u0026rdquo;.\nARPANet: The first computer network (or \u0026ldquo;intranet\u0026rdquo;), created by the Department of Defense, which was fully implemented in 1969. I\u0026rsquo;ve never heard it associated with nuclear strikes or anything of the sort. It was created merely to replace slow and overused satellite communication between government agencies. When originally created, it did not use TCP/IP, it used NCP.\nDNS: DNS stands for \u0026ldquo;Domain Name System\u0026rdquo;. It\u0026rsquo;s interesting that, for an article claiming Ethernet was more defining to the internet than TCP/IP, the article makes no mention of DNS, the third essential component to the modern internet. Though you type in \u0026ldquo;google.com\u0026rdquo; to get to Google, Google\u0026rsquo;s website actually lives at an Internet Protocol (IP) address of 173.194.34.165 (at the time of this writing). This IP address is similar to a human street address. People cannot be expected to remember an IP addresses for their favorite websites, so DNS was invented to resolve a host name (google.com) to an IP address. This is similar to me saying \u0026ldquo;Ben and Jerry\u0026rsquo;s on Navy Pier\u0026rdquo; instead of \u0026ldquo;Ben \u0026amp; Jerry\u0026rsquo;s - NAVY PIER, 700 East Grand Ave., Chicago, IL 60611-3436\u0026rdquo;.\nRFC: RFC stands for \u0026ldquo;Request for Comment\u0026rdquo;. The article does not mention these, but they are crucial to understand when things were adopted. They\u0026rsquo;re sort of like the Congressional bills of the technology world. RFC documents are official definitions of technological protocols or interfaces. When something is adopted as a standard, a RFC fully defining it is written, and, if other people want to interface with it, they use that \u0026ldquo;law\u0026rdquo; to know how things work. The very first RFC, RFC 1, was called \u0026ldquo;Host Software\u0026rdquo; and dictated the infrastructure of ARPANet. RFC 791 was for TCP/IP in 1981. RFC 894 was for Ethernet in 1984. RFC 1035 was for DNS in 1987. These dates do not necessarily correspond to when the interfaces were created, but they do indicate when the interfaces were standardized and/or adopted.\nWorld Wide Web: The World Wide Web was formally introduced in 1989. The World Wide Web is, in very loose terms, the combination of HTTP, HTML, and database communication that transfers web content by a standardized means to a web browser.\nDifference Between Intranet and Internet So, what is the difference between the an \u0026ldquo;intranet\u0026rdquo; and the \u0026ldquo;internet\u0026rdquo;. First of all, the foundational structures of the \u0026ldquo;internet\u0026rdquo; are identical to the \u0026ldquo;intranet\u0026rdquo; (that being TCP/IP referenced in the article). Once there was the possibility for the intranet, the possibility for the internet also existed, but it was not realized until a bit later, which is why Xerox is trying to claim credit for that. It\u0026rsquo;s a chicken-or-the-egg argument. Naturally, each company (and the Pentagon) claim different loose definitions of all these terms so that they can claim credit for actually inventing the end result. The fact is, none and all of them invented it \u0026hellip; which coincides with Obama\u0026rsquo;s remarks pretty well, if you ask me.\nTCP/IP and Ethernet First of all, it\u0026rsquo;s sad that the article references Vinton Cerf but makes no mention of Bob Kahn. They collaborated together to define TCP/IP, but Kahn rarely gets the credit he deserves. Kahn was actually the one with the idea of TCP/IP, and Cerf was in charge of the implementation and later the RFC definition.\nSecondly, it should be highly suspect that much of the WSJ author\u0026rsquo;s claims come from a book written about Xerox. More significantly, after the WSJ article was published, the author of the cited book released a statement refuting the article and saying the article misrepresented the content of his book.\nNaturally, Xerox will claim \u0026ldquo;full credit\u0026rdquo; for a discovery, as many other companies have done as well, but given they utilized standards that had already been put in place by others before them (namely TCP/IP), this is disingenuous at best. However, their contribution to the internet\u0026rsquo;s development was equally strong. Ethernet was merely a communication standard that allowed passing data (at very high speeds) between two computers using TCP/IP. Neither technology would ever have been adopted by the private sector (and ultimately the world) without something like \u0026hellip;\nDNS The Domain Name System was invented in 1983, and the internet would not exist without it, just like TCP/IP and Ethernet. It was created when issues were seen in how hosts were resolved with ARPANet. It was obvious that as ARPANet got larger, the way hosts were resolved (me asking, \u0026ldquo;Hey, what\u0026rsquo;s Mom and Dad\u0026rsquo;s address?) would become weaker and weaker (and certainly slower and slower). So they decentralized their host resolution to several Domain Name Systems rather than a centralized location at the Pentagon. This was essentially the birth of the privatized internet as we know it, but that is not to discredit its foundations.\nSo Did Xerox Invent the Internet or Not? Short answer? No. Xerox has never been one of the discussion points in the \u0026ldquo;who invented the internet\u0026rdquo; within knowledgeable circles.\nLong answer? It\u0026rsquo;s a bit arrogant for Xerox (or any one company or government organization) to accept or take full or even majority credit for the invention of the modern day internet. It was a combined effort of multiple unrelated parties, companies, and government entities. People usually credit the Department of Defense with the creation of the internet because, well, they created the first internet. And without the funding and research for TCP/IP, the advancement toward what we have today would have been much slower. Additionally, though Xerox coupled TCP/IP with their own technology to make Ethernet, they did not use Ethernet on the internet. They used it on their own intranet, or internal network, because at the time only government organizations had access to the internet. More importantly, TCP/IP and other internet protocols could exist outside of an internal network, which is where Ethernet is used. Ethernet is used to join computers to an intranet, not to join networks to the intranet. Xerox\u0026rsquo;s contribution certainly increased the speed and reliability of internal network communication, but that is an indirect contribution to the internet. It is not an essential part of the components that makeup the internet.\nWhat About the Privatization of the Internet? The reason the internet became privatized had little to do with little government/big government politics, as the WSJ implies, and everything to do with decentralization. The fundamental structure and combination of TCP/IP and network-to-network communications led to DNS, and once DNS was introduced it became obvious that the internet was going to become a worldwide tool that could not be contained or centralized by any one government or entity. However, the U.S. government did still control all the DNS servers, and government organizations were the only ones with access to the internet.\nThough Xerox enabled reliable intranet communications with Ethernet (which, by the way, was given back to the government for their use primarily), ARPANet expanded to become the internet, and DNS offered the potential to use the service around the globe, it was not commercialized. It was not until 1992 when Congress passed a bill (spearheaded by Al Gore, which is usually why people misquote him to make the joke in which he claims to invent the internet) that allowed commercial access to the internet. This began the privatization of the internet, but the government still controlled all DNS servers.\nFor six more years the internet was essentially still controlled by the U.S. government, but commercial entities were allowed to use it. In 1998 (not sure what event the article is referring to when it says 1995), the Clinton administration issued a mandate to form a non-profit organization called the International Corporation of Assigned Names and Numbers (ICANN). The U.S. government gave control of all DNS servers, maintenance, and documentation of internet infrastructure to ICANN. And you thought Google owned the internet. At that point, the internet became officially and completely privatized.\nDoesn\u0026rsquo;t Britain Claim They Invented the Internet? Actually, no. If you watched the Olympics 2012 Opening Ceremonies, Tim Berners-Lee was paraded through the stadium and loudly proclaimed as the \u0026ldquo;inventor of the World Wide Web\u0026rdquo;. And there\u0026rsquo;s the distinction. London never claimed he invented the \u0026ldquo;internet\u0026rdquo;. There is a difference. The \u0026ldquo;internet\u0026rdquo; and the \u0026ldquo;World Wide Web\u0026rdquo; are two distinct things, though they obviously operate together and are essentially synonymous to the average internet user today.\nIn 1989, Tim Berners-Lee had an idea for a database of hypertext links. Berners-Lee implemented what he called the World Wide Web with the collaborative help of Robert Cailliau. It didn\u0026rsquo;t take long for the two of them to realize the potential the World Wide Web could offer to the internet, so in late 1990 Berners-Lee developed the protocol necessary to transmit World Wide Web data across the internet: HyperText Transfer Protocol (HTTP) and HyperText Markup Language (HTML). Along with this, he developed the first web browser, which he called simply the WorldWideWeb. Joining HTTP, HTML, and a browser with the internet gave Berners-Lee the ability to pass much more valuable data from point to point, displaying that data in a specifically intended way to the end-user.\nIn regards to the WSJ article, it\u0026rsquo;s also possible that the author of the WSJ was confusing the term \u0026ldquo;internet\u0026rdquo; with \u0026ldquo;World Wide Web\u0026rdquo;. By 1994, better graphical browsers had been created, and the World Wide Web standard had pretty well been adopted, but primarily only by universities and research labs. In late 1994, Berners-Lee founded the World Wide Web Consortium (W3C), which maintains many of the standards for the World Wide Web still today. After W3C was founded, and in early 1995, the potential the World Wide Web coupled with the internet had to offer the commercial world became apparent, and the internet really started taking off.\nConclusion Even still, the Department of Defense, Vinton Cerf, and Bob Kahn do deserve full credit for the creation of the first intranet/network and the initial ideas for networking protocols. The natural successor to that was Ethernet, DNS, and ultimately a privatized and distributed internet as we know it today.\nHere\u0026rsquo;s a more simple example to help with the comparison. Assume for a moment that, prior to Henry Ford, nobody had ever done anything with a vehicle that moved (without assistance from an outside force) from point A to point B. Ford created the Quadricycle as his first vehicle. He then adapted that into the Model T. Is the Model T any more or less of a vehicle? It has more of the parts that we\u0026rsquo;re used to today, and it was certainly much more luxurious. But to say then that, because the Model T is more like what we have today, the Quadricycle was not a vehicle is silly. The Quadricycle was still a vehicle that moved you from point A to point B. The Model T was the natural successor to that, and cars have progressively become more and more advanced (with newly invented technology added to them) as society has advanced.\nIn the same way, ARPANet moved network information from point A to point B. The internet was the natural successor to an intranet, but the same ideas and fundamental technology were used for it, so it is safe to say that the government formed what has become the internet. Which, I believe, was President Obama\u0026rsquo;s point. No argument here that the internet boomed came in 1998 when it was fully privatized, but the internet also would not have been established in the first place without government research and funding.\n","permalink":"https://alexlaird.com/2012/07/a-correction-for-the-wsj-so-who-did-invent-the-internet/","summary":"\u003cp\u003eGordon Crovitz wrote an opinion piece for the Wall Street Journal titled \u003cem\u003eWho Really Invented the Internet?\u003c/em\u003e Fortunately, it\u0026rsquo;s only an opinion piece, because there was little more than opinion, littered with plenty of misinformation, in the writing. You can read the article \u003ca href=\"http://online.wsj.com/article/SB10000872396390444464304577539063008406518.html\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eNow, it\u0026rsquo;s not like I look to the WSJ for the latest technology information (or, in this case, technology history). Far from it. And generally when a here\u0026rsquo;s-the-truth-you-never-knew article starts with political propaganda, it\u0026rsquo;s pretty safe to assume that whatever comes next is going to be absurd. The article\u0026rsquo;s introduction could essentially be summarized as, \u0026ldquo;Obama said something that was true, but I\u0026rsquo;ll be damned if I can\u0026rsquo;t find a way to make it sound false!\u0026rdquo;\u003c/p\u003e","title":"A Correction for the WSJ: So, Who Did Invent the Internet?"},{"content":"I\u0026rsquo;ve recently been reading through Steve Jobs\u0026rsquo; biography, a phenomenal work by Walter Isaacson. A point that Isaacson keeps coming back to throughout the book is that Steve Jobs revolutionized six different industries: animated movies (through Pixar), personal computing, tablet computing, phones, digital publishing, and music.\nI don\u0026rsquo;t disagree with Isaacson. Jobs did revolutionize the way that digital media (including music, movies, books, and more) is marketed and sold today. But before you can have the corner on the market, there needs to be demand. And the revolution that realized the screaming demand for easily accessible digital media around the globe started in a college dorm room during the summer of 1999.\nThe Beginning It started with two adolescents, Shawn Fanning and Sean Parker, who shared mutual interest in hacking and programming. Though the teenagers never met at this point, they continued to chat over IRC in the years to come, bouncing various software ideas off each other.\nDuring his Freshman year of college at Northeastern University in Boston, Fanning had an idea to simplify online music acquisition for him and his roommate. It was 1998, and the easiest way to download MP3s was through various websites. Each website had a different interface. Each a different library of music. Many broken links. All were very slow.\nFanning wrote a piece of software that fixed this. It provided a single, clean interface that searched all the major MP3 websites, providing results only for working links. It was effective. But it still wasn\u0026rsquo;t a comprehensive library.\nBy the end of his Freshman year, Fanning had dropped out of college and was mulling over ideas for a music sharing program that didn\u0026rsquo;t rely on limited libraries and websites that were taken down and relaunched on a weekly basis. He worked out the good and bad ideas for such a program with his internet buddy, Parker, over IRC, slowly growing more confident in his idea and its architecture.\nBy midsummer, 1999, Fanning sat down at his uncle\u0026rsquo;s for a sixty-hour programming spree, and it was during those sleepless hours that Napster was officially born.\nThe Architecture His idea was simple enough. All he needed to do was combine three existing protocols into one client: computer-to-computer connectivity (which was accomplished in instant messaging clients like IRC), file sharing (which was implemented in many instant messaging clients and exhibited in operating systems like Windows), and advanced search (which was illustrated by MP3 and internet search engines).\nFanning had already implemented two of the three features in the MP3 search program that he wrote during his Freshman year of college. The third feature, computer-to-computer connectivity, was the innovation that led his first program to become Napster.\nThe issue with Fanning\u0026rsquo;s first program was the same issue independent MP3 websites had: it relied on the servers of third-party websites that were frequently taken down for a number of reasons. Using computer-to-computer connectivity, Napster utilized each user\u0026rsquo;s computer as a server on the Napster network. Rather than searching the server of a website, Napster searched the computer\u0026rsquo;s of user\u0026rsquo;s that were currently logged onto the network.\nThere still was a centralized server for Napster—which is what eventually led to the service\u0026rsquo;s downfall—that indexed MP3 files and their locations. This allowed the Napster to still provide a very rapid search functionality.\nAmazingly, in its two years of operation, the centralized server for Napster never went down. Not once.\nSharing and Searching Napster did not blindly search a user\u0026rsquo;s entire computer for MP3 files—Fanning was originally a hacker, but he still understood privacy. Nor was Napster able to search a client\u0026rsquo;s computer if the Napster client was not running. So how did user\u0026rsquo;s music library become part of the Napster network?\nThe user would need to install the Napster client on their computer The user would need to share a specific folder on their computer The user would need to have the Napster client running Assuming these three criteria were met, any MP3 files within the user\u0026rsquo;s shared folder would be indexed on the centralized Napster server and available for download by other logged on users.\nAny other user using the Napster client could then browse for songs by artist, song, album, etc. The search would be indexed through the centralized Napster server, and results returned from the index would be shown to the user. When a user selected a song for download, the Napster server would return the IP address of the user\u0026rsquo;s computer that contained the desired song, connect the two user\u0026rsquo;s computers, and transfer the file.\nThe Rise \u0026hellip; After Fanning\u0026rsquo;s sixty-hour programming marathon, Napster was born. It was June of 1999, and Fanning and Parker released the beta of Napster to thirty of their friends. It was meant to be a small group for testing. But obviously, given the described architecture above, the more computers that user Napster, the larger the Napster library would be. Fanning and Parker\u0026rsquo;s friends saw this potential, and less than seven days later, the purposely small test group had spread the download from thirty to 15,000 users.\nIts users unaware of the legal implications, Napster went viral. Less than a year from its release, Napster was the fastest growing website in history and had acquired over 25 million users. This growth rate was unprecedented and was a surprise to everyone except Fanning, Parker \u0026hellip; and anyone that used the service. Napster was wildly popular on the internet for two blissful years. Before Napster\u0026rsquo;s user base started to decline (due to the hot legal attention it was receiving), the service peaked at 80 million registered users.\nFanning believed his idea would be popular. But he had no idea of the demand that it would generate. Prior to the release of Napster, digital media was not easily accessible to the general public. Napster opened our eyes to the convenience we could be affording. Unfortunately, the convenience Napster offered was relatively short lived. The Recording Industry Association of America (RIAA) had taken its focus off nearly every other legal dispute it had to focus its crosshairs squarely on Napster.\n\u0026hellip; And Fall How much damage (if any) Napster did to the music industry will be a topic of debate that will never find a good answer. While the RIAA may point out that, at its peak, Napster shared roughly 2.79 billion MP3s per month among its users, others would tell you that a song downloaded for free does not always correlate to revenue lost. A statistician on the other side of the argument might point out that, during the year Napster was most popular, revenue for the music industry increased by $500 million. Neither of these facts provide hard evidence for either side of the case, but they make for good argumentation.\nRegardless, the service Napster provided was solely free MP3 distribution, and there\u0026rsquo;s no doubt that the means by which Napster did this violated copyright law. The RIAA, along with major record labels, artists, producers, and other corporate giants, banded together to file litigation against Napster. The litigation itself wasn\u0026rsquo;t overly complicated, and the Napster company effectively dissolved in July 2001, two years after launching the Napster service, one year after injunction.\nBut the Napster rise, fall, and lawsuit were extremely interesting. No, the litigation itself was nothing to write home about. It was the companies sponsoring the litigation, as well as Napster, that illustrated both the irony of the situation and the need for something like Napster with a legal face. Because many of the same companies that sponsored the litigation against Napster, and even sued Napster itself, were the same companies that had (and continued to, even after injunction) funded Napster.\nWhile the litigation departments of media companies around the world were building cases against Napster, the software departments were integrating components of Napster into their own applications. AOL, Yahoo, and Microsoft, for instance, each introduced instant messaging clients that had a Napster button on every chat window, which allowed you to quickly share a song with a friend. You may recall that AOL merged with Time Warner in late 2000, which caused Warner Music to be renamed to Warner Music Group. Point being, Warner Music Group was one of the many groups involved in litigation against Napster, but their parent company AOL Time Warner was funding the very company they were suing.\nAOL was not the only house divided. German media giant Bertelsmann saw the potential in Napster, but they also saw how susceptible it was to legal disputes. So they invested $85 million into the company, asking them to develop a better, more secure distribution system. All this, even while Bertelsmann\u0026rsquo;s media division was also funding the RIAA and its lawsuit against Napster. And finally, when the dust was still settling in early 2002, Bertelsmann offered to purchase Napster for $20 million. The offer was rejected, and Napster quickly disintegrated as its employees (and executives \u0026hellip; and board) took their severance pay and fled at the sight of bankruptcy. For as spectacular as the formation of Napster was, the day the company finally closed its doors was downtrodden and quiet.\nThe Gnutella Network The end of the Napster service did not end the Napster idea. And even though Bertelsmann offered Napster $85 million to develop a secure distribution system that the company never had time to develop, someone else did: two people named Justin Frankel and Tom Pepper, co-founders of Nullsoft, a small software company recently purchased by none other than AOL. Justin and Tom developed a more robust and secure peer-to-peer file sharing network, and they called it Gnutella. Mind you, this wasn\u0026rsquo;t years after the RIAA smashed Napster into the ground. They began working on their alternative to Napster in 2000, and the Gnutella network began to catch the attention of the public\u0026rsquo;s eye in early 2001, when Napster\u0026rsquo;s legal battles were ramping up.\nTo AOL\u0026rsquo;s credit, they did try to stop Gnutella from growing up and living a long and healthy life. The day after the Gnutella source code was publicly released on Nullsoft\u0026rsquo;s website, AOL demanded the project be shut down. But, of course, it had already been downloaded thousands of times, and it was already being redistributed on countless sites. So AOL\u0026rsquo;s move to pull it off their servers was said to be similar to closing the barn door after you let the horse out.\nThe Gnutella network, unlike Napster, was not a client. It was both a protocol and an idea. The downfall of the old MP3 sites was that both their index server and their libraries were centralized servers owned by the sites. The downfall of Napster was that, though their libraries were on their user\u0026rsquo;s computers, they still had a centralized server that indexed all MP3 files and the computers on which they were stored. The Gnutella network removed all centralized server and instead used each user\u0026rsquo;s computer as a server and also a relay. The relay was what acted in place of a centralized index server. And since the Gnutella protocol was open source, anyone could make a client that connected to it. And there are \u0026hellip; many.\nWhen you logged on to the Gnutella protocol using a Gnutella client, for instance LimeWire or Morpheus, the protocol on your computer would ping several other computers that it thought might be logged on. Each of those computers also had a list of computers they knew were logged on, so they would return that list to your Gnutella client. Once Gnutella found other logged on users, it would remember those addresses the next time you started the service—this way if one of the servers did go down for any reason (even copyright violation), it still had other alternatives. When you searched for a file on Gnutella, it would send the request down the chain of clients you were attached to, and clients attached to those clients, until it found a match.\nIn this way, the Gnutella network was completely distributed. There were no centralized servers, so there was nothing for copyright holders to seize when an infraction was suspected. Sure, they would seize your computer, since it was one of Gnutella\u0026rsquo;s servers. But there were millions of other servers out there just like you. And for this reason, the Gnutella network has never been (and likely never will be, as its effectively impossible) shutdown; it has only grown since its inception. Certain clients have legally been shutdown before, but since they are open source, they would simply reemerge a few days later.\nModern Distribution The Gnutella network today is the most widely used peer-to-peer distribution network (aside from torrenting). Though illegality popularized these distribution systems, they are primarily used for legitimate transfers today, though obviously they do still house illegal content.\nMore importantly, however, the digital media revolution that Napster started, however controversial it was and is, finally forced the media sources to reevaluate demand for their products. Piracy initially caused CD sales to plummet and thus the music industry to lose money. But once key distributors like Apple, Amazon, and even eventually Napster again (purchased by Rhapsody and reintroduced legally for a fee) finally saw the demand that Napster enlightened them to, the music industry recovered (though they\u0026rsquo;d like you to believe they\u0026rsquo;re still limping along). Sure, CD sales have all but died, and some stores like Best Buy don\u0026rsquo;t even carry CDs, but digital sales have surpassed what CD sales used to be. The digital revolution also opened new possibilities. For instance, Pandora, offering you a digital streaming alternative to your radio.\nBut the demand for digital content didn\u0026rsquo;t stop at music. Companies like Netflix, Hulu, and Amazon Instant emerged. Products like the iPad and Kindle are hugely popular. And TV stations started streaming their content online. Even non-internet-based companies like Redbox were formed based on consumer\u0026rsquo;s desire for on demand content.\nNow, I\u0026rsquo;m not condoning illegal activity. And downloading music or movies from LimeWire or The Pirate Bay is very bad, kids. But there is a lesson to be learned here. When the culture begins to change, and the culture realizes a new possibility that never existed to them before is now a reality, don\u0026rsquo;t resist it. The amount of money the record labels and RIAA put into legislation and litigation before they even consider changing with the culture to provide legal alternatives to services such as Napster far surpassed the money they were losing in records sales. When the culture advances, advance with it. That\u0026rsquo;s what technology is all about.\nUnless the culture advances into a murdering machine. That should still be frowned upon.\n","permalink":"https://alexlaird.com/2012/07/the-napster-revolution/","summary":"\u003cp\u003eI\u0026rsquo;ve recently been reading through Steve Jobs\u0026rsquo; biography, a phenomenal work by Walter Isaacson. A point that Isaacson keeps coming back to throughout the book is that Steve Jobs revolutionized six different industries: animated movies (through Pixar), personal computing, tablet computing, phones, digital publishing, and music.\u003c/p\u003e\n\u003cp\u003eI don\u0026rsquo;t disagree with Isaacson. Jobs did revolutionize the way that digital media (including music, movies, books, and more) is marketed and sold today. But before you can have the corner on the market, there needs to be demand. And the revolution that realized the screaming demand for easily accessible digital media around the globe started in a college dorm room during the summer of 1999.\u003c/p\u003e","title":"The Napster Revolution"},{"content":"I heard a commercial with the booming and illustrious voice of Rush Limbaugh. After I recovered from banging my head against my desk, I reflected on what was said in the commercial.\nRush pointed to the popular free email providers (Yahoo, Google, and others) to remind you that they scan your email. To remind you that they sell your email address, and other information about you, to the highest bidder. To remind you that the use of these free email addresses may increase your risk of spam mail. In contrast, purchasing an email address from Reagan.com provides you with private and secure email, and your information will never be sold.\nI was intrigued.\nI found that Rush was not the only conservative advertising this servic. Fox, CBS, and many others also endorsed it, though for slightly different political reasons; they primarily portrayed it as an email alternative \u0026ldquo;for conservatives\u0026rdquo;. They said that, unlike these free services, Reagan.com email would not have you unknowingly contributing to \u0026ldquo;the liberals\u0026rdquo;. These are hard-and-fast definitions, people.\nMichael Reagan, founder of Reagan.com and son of, you guessed it, Ronald Reagan, has this to say about his service:\n[\u0026hellip;] every time you use your email from companies like Google, AOL, Yahoo, Hotmail, Apple and others, you are helping the liberals. These companies are, and will continue to be, huge supporters financially and with technology of those that are hurting our country.\nBecause apparently liberals are the only ones that are interested in using technology to advance our country. And apparently \u0026ldquo;the liberals\u0026rdquo; are the only people benefiting from these huge corporations. Obviously, they would never help \u0026ldquo;the conservatives\u0026rdquo;. Regardless, this is a relatively empty claim as its never actually substantiated.\nPolitics aside, allow me to explain to you from a technical perspective why the commercials endorsing Reagan.com and even the information on Reagan.com is largely misleading.\nFirst, let\u0026rsquo;s address the script Rush was fed in his advertisement. It is well known and accepted that free email providers, along with many paying internet providers as well, will harvest and sell your information to advertising companies. It\u0026rsquo;s well known because these companies clearly state this in their Privacy Policies. The claim is that the Reagan email service, which costs you $40 per year, does not do this. However, if you read through the Privacy Policy for Reagan.com, it is true that Reagan.com says they will not collect your information, but they do allow their affiliates to collect your information.\nWe may also use one or more advertising network providers to help present advertisements or other content on this website. These advertising network providers use cookies, web beacons, or other technologies to serve you advertisements or content tailored to interests you have shown by browsing on this and other websites you have visited. Advertising network providers collect non-personally identifiable information such as your browser type, your operating system, web pages visited, time of visits, content viewed, ads viewed, and other click stream data.\nThe key phrases here are that their \u0026ldquo;advertising network providers\u0026rdquo; have the right to collect information about \u0026ldquo;content viewed\u0026rdquo;. I don\u0026rsquo;t know about you, but the content I primarily view while logged onto my email is \u0026hellip; email.\nThe use of cookies, web beacons, or similar technologies by these advertising network providers is subject to their own privacy policies, not our privacy policy for this website or its Service.\nReagan.com uses the affiliate networkadvertising.org for their ads (why they show ads on a service they charge for is beyond me). Ironically, if you look through the list of partners of Network Advertising, four companies may quickly jump out at you: Microsoft (Hotmail), AOL, Yahoo, and Google. Just to name a few. Which means much of the same ad revenue that these companies may generate from your use of their free email services may still be generated for them through your use of Reagan.com.\nThis last point is key to highlighting the disconnect between the claim of the Reagan.com email service and the reality of the internet\u0026rsquo;s interconnectivity. This disconnect has also recently been highlighted with the controversial SOPA and PIPA bills passing through Congress. You have politicians proposing bills, or in this case making a buck using the influence of politics, on technical subjects in which they have little to no understanding.\nIf privacy is what you seek, you cannot use the internet, and you certainly cannot use email (unless it is isolated to an internal network). Even if a given email was secure and private while on the Reagan.com servers, any incoming and outgoing messages will go through a server at some point somewhere in the world that is likely owned, operated, or affiliated with one of the internet or server giants, including Google. Coincidentally, even if you had a Reagan.com email address and sent an email to yourself, the email would still go through one of these external servers before returning to you.\nNext claim. Reagan.com is email for conservatives, right? So supposedly using Reagan.com will support a conservative agenda rather than a liberal agenda. Perhaps directly, and on the very surface, but indirectly (and about half an inch below the surface down to bedrock) no. As I said before, you can\u0026rsquo;t take something as intertwined and complex as the internet and expect to take the biggest internet giants out of it. Ironically, on the same site that Michael Reagan is falsely boasting that his service will get you away from those Big Brother liberal companies, he provides instructions for how to configure his email service to work on your mobile device. You know, the one made by Blackberry, Apple, or Motorola (owned by Google) running the Android OS (also owned by Google).\nLet\u0026rsquo;s give Reagan the benefit of the doubt. Let\u0026rsquo;s assume he\u0026rsquo;s not trying to insinuate it\u0026rsquo;s Big Business we should distrust. Maybe he\u0026rsquo;s suggesting Google, Yahoo, and the like sell your information to the government, and that\u0026rsquo;s where the privacy risk comes in. This is half true \u0026hellip; although they don\u0026rsquo;t sell it. And, again, Reagan.com won\u0026rsquo;t get you away from this. Even when using Reagan.com, as soon as the email leaves the Reagan.com servers, the United States government will have the opportunity to seize and view the email. They probably won\u0026rsquo;t, unless you\u0026rsquo;re a terrorist suspect, but they always have the right, no matter your provider, thanks to the Patriot Act. Heck, even on the Reagan.com servers the government has the right to seize it under this act.\nThere\u0026rsquo;s a phrase that somebody said once goes something like:\nIs it really free if it costs you your privacy?\nThat\u0026rsquo;s up to you to decide, really. But if you believe internet companies are the only ones tracking personal information about your daily habits \u0026hellip; well, let\u0026rsquo;s just say you should stop shopping at Target. Or Wal-Mart. Or Best Buy. Or really any major chain in America. Personally, I don\u0026rsquo;t think a corporation tracking your habits to better serve you with ads related to your interests is an invasion of your privacy.\nThe cost of Reagan\u0026rsquo;s supposedly private and secure email service is $40 per year. This service is rented from a man who has no technical expertise and is not a server administrator. His Terms of Service clearly and painfully guarantee you nothing in terms of support, up-time, warranty, or back-up. And if you\u0026rsquo;re expecting new features in the future \u0026hellip; well, don\u0026rsquo;t hold your breath.\nOn the other hand, companies like Google and Yahoo have incentive to provide you with new features. They have incentive to guarantee you up-time, because every second their servers are down is ad revenue lost for them. They have dedicated support teams to ensure their servers are always running at peak health, and they have redundantly connected servers and farms, just in case.\nReagan\u0026rsquo;s servers go down? I\u0026rsquo;m sure they\u0026rsquo;ll get it back up eventually. But, you know, you\u0026rsquo;ve already paid them your $40, so they don\u0026rsquo;t lose money by the second when the service is down. And it is owned by a politician \u0026hellip; so don\u0026rsquo;t expect a quick turnaround.\n","permalink":"https://alexlaird.com/2012/04/reagan.com-email-is-a-misguided-effort/","summary":"\u003cp\u003eI heard a commercial with the booming and illustrious voice of Rush Limbaugh. After I recovered from banging my head against my desk, I reflected on what was said in the commercial.\u003c/p\u003e\n\u003cp\u003eRush pointed to the popular free email providers (Yahoo, Google, and others) to remind you that they scan your email. To remind you that they sell your email address, and other information about you, to the highest bidder. To remind you that the use of these free email addresses may increase your risk of spam mail. In contrast, purchasing an email address from \u003ca href=\"http://reagan.com\"\u003eReagan.com\u003c/a\u003e provides you with private and secure email, and your information will never be sold.\u003c/p\u003e","title":"Reagan.com Email is a Misguided Effort"},{"content":"Oracle\u0026rsquo;s VM VirtualBox is a virtualization program that allows you to run another operating system from within your native operating system. Though it is most commonly used to run fully functional operating systems such as Linux or OS X from within Windows 7 (or vice versa), it can also be used to host a Virtual Private Server (VPS).\nThis post does nothing to compare benchmarks between more efficient (and recommended) VPS environments such as VMware or Linux-VServer, and I would not recommend using VirtualBox as a VPS in a production environment. However, it is useful in many situations, and I\u0026rsquo;ll let you be the judge of when this should or should not be done. It is certainly acceptable for personal and developmental purposes. And hosting a VPS through something like VirtualBox that is extremely simply to setup and use allows you to easily experiment with configurations and operating systems, or even jump between multiple VPSs on the same computer.\nThis tutorial assumes you have a rudimentary knowledge of server software and operating systems. I\u0026rsquo;m going to be explaining virtualization to you, not the details of the server installation and configuration.\nSetting Up VirtualBox First, some definitions. When I refer to the host operating system, that is the primary operating system that your computer boots into. When I refer to the guest operating system, that is the virtualized system that is run from within VirtualBox_._ There will also be references to IP address and ports on the host and guest. They follow the same theme. Now that we\u0026rsquo;ve got that of the way \u0026hellip;\nYou can pick up VirtualBox for free from their website here. Download and run the installer for your host operating system. Congratulations. VirtualBox is now ready to run. Unfortunately, it doesn\u0026rsquo;t have a guest operating system installed or configured yet, so it doesn\u0026rsquo;t do much for you. But before we actually install one of those, let\u0026rsquo;s create a virtual environment for it and configure some VirtualBox settings.\nIn VirtualBox, click New to create an environment where we install a guest operating system. I\u0026rsquo;m assuming you\u0026rsquo;re a civilized human being and installing a Linux server operating system, so select Linux, then select the version of operating system you\u0026rsquo;re using. If the exact version isn\u0026rsquo;t in the VirtualBox list, select the parent Linux distribution (for instance, for CentOS you\u0026rsquo;d select Fedora).\nIdeally, you should grant at least half of your host system\u0026rsquo;s memory to the guest operating system. You should dedicate at least 8GB to the guests hard drive space. Luckily, since this is a virtual environment, you can select to dynamically allocate this space, so the virtual hard drive will only consume space on your host\u0026rsquo;s hard drive as it is needed. Finish up the wizard, and the guest environment will be created.\nNow, to make that guest environment accessible to our host computer. Right-click on the newly created environment and select \u0026ldquo;Settings\u0026rdquo;. Click on \u0026ldquo;Network\u0026rdquo; in the list on the left, and click on \u0026ldquo;Adapter 2\u0026rdquo;. Enable this adapter and, from \u0026ldquo;Attached to:\u0026rdquo; select \u0026ldquo;Bridged Adapter\u0026rdquo;. This will cause the guest environment to resolve DHCP IP information directly from the host operating system, which means we can now forward some host ports directly to the guest operating system.\nGo back to the \u0026ldquo;Adapter 1\u0026rdquo; tab, make sure this adapter is \u0026ldquo;Attached to: NAT\u0026rdquo;, and click \u0026ldquo;Advanced\u0026rdquo;. Click on \u0026ldquo;Port Forwarding\u0026rdquo; and add a new TCP forward. Let\u0026rsquo;s call it \u0026ldquo;SSH\u0026rdquo;. Specify 22 for the host and guest ports. This will forward the host machines port 22 to the guest machines port 22—they don\u0026rsquo;t have to be the same, they just have to match other configurations on the host and guest side of things. It\u0026rsquo;s also worth adding an \u0026ldquo;HTTP\u0026rdquo; forward for port 80 as well as any other the forwards for ports controlling any other services you\u0026rsquo;d like accessible from the guest environment.\nServer Operating System If you haven\u0026rsquo;t already, now\u0026rsquo;s the time to choose what operating system you\u0026rsquo;re going to use for your guest environment. I recommend Ubuntu Server if you\u0026rsquo;re used to Ubuntu or Debian environments, and CentOS is another wildly popular one, though it\u0026rsquo;s not my cup of tea. Whatever operating system you choose, download the ISO for it\u0026rsquo;s installation and open up VirtualBox again.\nRight-click on your guest environment and select \u0026ldquo;Settings\u0026rdquo;. From the list on the left select \u0026ldquo;Storage\u0026rdquo;, and point your virtual disc drive to the ISO you just downloaded. Once this is done, you can simply start the guest environment and it will boot with that disc \u0026ldquo;in the drive\u0026rdquo;, so you can install that operating system in the guest environment.\nIf you\u0026rsquo;re installing Ubuntu Server, selecting OpenSSH during the install process as well as LAMP and any other services you\u0026rsquo;d like available will make things much easier for you. However, as I said above, this tutorial assumes you have a rudimentary knowledge of server operating systems, so I\u0026rsquo;m not going to go into the details of installing those services. But to prove that our port forwards worked, you should at least install OpenSSH (during installation or as soon as you boot into the environment), and if you are able to SSH to your host computer on port 22 and access the guest environment, then everything worked the way it should have.\nLaunching Server When Computer is Booted It may be useful to launch this virtual server when the computer boots. To do this, create a BAT file with the following command:\nVBoxManage startvm \u0026ldquo;VM Name\u0026rdquo; \u0026ndash;type headless\nPlace a shortcut to this BAT file in the Startup folder of a (or all) user accounts and you\u0026rsquo;re good to go. The server will launch and run in the background, allowing you to SSH into the server to control it from a terminal.\nFor maintenance purposes, you may also want to create a second BAT file for stopping the server (since it\u0026rsquo;s running in the background with no visible window). To do so, create a BAT file with the following command:\nVBoxManage controlvm \u0026ldquo;VM Name\u0026rdquo; poweroff\nAccess from External IP Login to your router and go the Port Forwarding section. Add a new port 22 forward, and forward that port to the IP address of the host. Do the same for port 80 and any other ports you added during the configuration above. Now, by typing in the external IP address of your network, you can SSH into the guest operating system through port 22, and you can utilize other services available to other ports.\nThere\u0026rsquo;s a lot more than can be done from here (using DNS to propagate to your external IP address, mail servers, etc.), but this tutorial has gotten you to the point where you can use tutorials for non-virtualized environments tutorials to accomplish those goals now. Good luck with your endeavors!\n","permalink":"https://alexlaird.com/2012/03/using-virtualbox-to-host-a-vps/","summary":"\u003cp\u003eOracle\u0026rsquo;s VM VirtualBox is a virtualization program that allows you to run another operating system from within your native operating system. Though it is most commonly used to run fully functional operating systems such as Linux or OS X from within Windows 7 (or vice versa), it can also be used to host a Virtual Private Server (VPS).\u003c/p\u003e\n\u003cp\u003eThis post does nothing to compare benchmarks between more efficient (and recommended) VPS environments such as VMware or Linux-VServer, and I would not recommend using VirtualBox as a VPS in a production environment. However, it is useful in many situations, and I\u0026rsquo;ll let you be the judge of when this should or should not be done. It is certainly acceptable for personal and developmental purposes. And hosting a VPS through something like VirtualBox that is extremely simply to setup and use allows you to easily experiment with configurations and operating systems, or even jump between multiple VPSs on the same computer.\u003c/p\u003e","title":"Using VirtualBox to Host a VPS"},{"content":"When perusing the internet for discussions on PHP sessions and cookies in regards to credential validation and user logins, I\u0026rsquo;ve never been satisfied with the approaches I find. Many of the tutorials are just plain lousy or incomplete. And the others seem to imply that you should only use sessions or cookies and never mix-and-match, a confusion that would probably trip up many PHP novices. So I\u0026rsquo;ve decided to post a tutorial explaining the complete PHP login format I use for my sites and web applications. Before we start, I should let you know that you can grab all the source in this tutorial from GitHub.\nHow it Works The way to create secure pages using PHP is a simple enough concept: determine the pages that can only be visited by logged in users and put a piece of code at the top of them to redirect logged out users to a login page. If a user visits the login page and is already logged in, they should be redirected to the main page.\nSo, how do you determine if a user has been logged in? You have PHP to see if there\u0026rsquo;s a fingerprint that pairs the server to the client\u0026rsquo;s computer. To do this, PHP provides access to two mechanisms: sessions and cookies. Once a user has logged in with a valid username and password, you fingerprint either the server (session) or the client\u0026rsquo;s computer (cookie). Once the fingerprint is in place, each secured page just needs to check to see if it exists. If it does, show the page to the user; if not, kick the user back to the login page.\nIt\u0026rsquo;s that simple.\nComparing Sessions and Cookies Before you can really proceed, you need to understand the primary differences between sessions and cookies in PHP (and, well, anywhere). Let\u0026rsquo;s break them down for comparison:\nCookie\nStored on client\u0026rsquo;s computer Slower, since they have to be sent to the server from the client\u0026rsquo;s computer Limited on size and how many can be stored on the client\u0026rsquo;s computer Can be used across multiple servers Can have a lengthy lifespan Can be viewed and modified by client and can therefore be a security risk, depending on the content Not available until page reloads, since cookies will be sent to the server on page load Session\nStored on server Faster, since they are already on the server Less bandwidth transfer since, rather than sending all data from client to server, the session only sends the session ID to be stored in a cookie on the client\u0026rsquo;s computer Size of a session is dependent on the PHP memory limit set in php.ini, but my guess is that limit is significantly higher on your server than the 4k generally allotted to cookies Cannot be used across multiple servers Lifespan is very short; always destroyed when browser has been closed Can only be accessed through the server, so much more secure than cookies Available immediately in code without a page reload From the above, you should be able to deduce that if you are working with sensitive data (passwords, credit card data, etc.), a session should be used. If you simply want to carry non-sensitive data between pages (the contents of a shopping cart), a cookie may be used.\nNow that we understand the differences between sessions and cookies functionally speaking, what are they? Basically, as far as the code is concerned, they\u0026rsquo;re just arrays. The cookie array can be accessed using _$COOKIE[\u0026lsquo;project-name\u0026rsquo;][\u0026lsquo;val-name\u0026rsquo;], and the session array is conditionally accessible by referencing _$SESSION[\u0026lsquo;project-name\u0026rsquo;][\u0026lsquo;val-name\u0026rsquo;]. The session array is only accessible if you have started a session by calling session_start().\nTo store a value into a cookie, we use the provided function setcookie(\u0026lsquo;project-name[val-name]\u0026rsquo;, $myData, time () + $keepAlive). Now let\u0026rsquo;s break this down: val-name will be the string used to reference this cookie as shown in the paragraph above. Whatever is in $myData is the string that will be stored in the cookie, and the cookie will stay alive until $keepAlive seconds from the current time have passed.\nTo store a value into a session is much easier. After a session has started, you simply execute _$SESSION[\u0026lsquo;project-name\u0026rsquo;][\u0026lsquo;val-name\u0026rsquo;] = $myData. The values will be accessible as shown above so long as the session exists—that is to say, so long as the browser has not been closed and session_destory() has not been called.\nWith this understanding of sessions and cookies now, you should be able to see that a session will be useful in allowing a user to login to a secured page, but that it will not allow a user to close the browser and return to that page still logged in. We\u0026rsquo;re just about to dive into the code that will allow for both of those things, but first let\u0026rsquo;s look at a common oversight.\nThe Shared Server Conundrum This is a sneaky issue, because you likely won\u0026rsquo;t know that it exists until your security has been compromised, so I\u0026rsquo;ll let you in on the secret now.\nPHP session variables are stored in /tmp by default, and this is true for any user on a server. Since the HTTP server software has access to read and write from this folder, and all users of a shared server execute from that same user, there is never a complete guarantee that your sessions are completely safe when you\u0026rsquo;re in a shared server environment. It is also possible for session collisions to occur because of this, for instance, if you and another user on a shared server are using the same session string. For this reason, it\u0026rsquo;s a good idea to regularly regenerate the session ID, and it\u0026rsquo;s also smart to use session strings that are related to the application you\u0026rsquo;re working with.\nAnother issue with shared server sessions in PHP is their timeout time. Though you may set a session timeout to be five hours, if another user on the shared server sets the timeout to be something else, say two hours, all of your sessions will also timeout in two hours, since PHP does not disambiguate between users within the /tmp folder.\nI don\u0026rsquo;t know of a remedy for the timeout issue, though you may be able to contact your server admin to ask if there is a user-based php.ini file that could be configured to store your sessions somewhere other than /tmp. There are also ways to store your sessions in a database, which would get rid of both of these potential issues.\nRegardless, neither of these issues are extreme vulnerabilities, but they should be something you\u0026rsquo;re aware of. If your application simply cannot share its sessions with other users, or your session data needs to be tightly maintained and secured, your best bet is to go with a dedicated server.\nUser Database Before we can make a secured page that only certain users have access to, we need an access list of those users and their credentials, right? The way we achieve that goal is with a database. In our code example below, we\u0026rsquo;re using a MySQL database, so you\u0026rsquo;ll need to perform the following steps using MySQL:\nCreate a database named project_name Create a table within project_name named Users Users should have (at least) three columns: UserID int(11), Username char(25), and Password char(60) The UserID column needs to be unique and auto-incrementing, starting at one (1)—the code below checks for a UserID equal to zero, which means that the user was not in the database Ideally, the UserID column should be the primary index for the table Users should have (at least) one row added: plain text Username, and hashed Password Once a MySQL database setup like this, you\u0026rsquo;re ready to write the PHP code.\nIf you are a PHP beginner, please look into database sanitization. Anytime you are going to be accepting input from a web form and passing that input into a database (for example, in the case of accepting user credentials and logging that user into the website), you need to sanitize the inputs to prevent potential attacks on your website. In the source code below, database inputs are sanitized through the use PHP\u0026rsquo;s PDO library.\nThe Code The snippets of PHP code below are robust enough to be deployed with a large-scale web application. If all you require is a simple authentication page and don\u0026rsquo;t much plan on using the session variables throughout your user\u0026rsquo;s stay, this code can easily be trimmed down to fit those needs as well. So, let\u0026rsquo;s walk through the code, shall we?\nclass-databasehelpers.php\nIf you are making a large-scale web application a database helpers class can help streamline repetitive database calls. If you are making a more simple login interface, you can move the functionality within this class to functions.php.\nIf your application eventually has a settings.php file, it\u0026rsquo;d make more sense to move the defined database constants out there.\nphp define (\u0026#39;DB_HOST\u0026#39;, \u0026#39;localhost\u0026#39;); define (\u0026#39;DB_NAME\u0026#39;, \u0026#39;project_name\u0026#39;); define (\u0026#39;DB_USERNAME\u0026#39;, \u0026#39;sql-username\u0026#39;); define (\u0026#39;DB_PASSWORD\u0026#39;, \u0026#39;sql-password\u0026#39;); class DatabaseHelpers { function blowfishCrypt($password, $length) { $chars = \u0026#39;./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\u0026#39;; $salt = sprintf (\u0026#39;$2a$%02d$\u0026#39;, $length); for ($i=0; $i \u0026lt; 22; $i++) { $salt .= $chars[rand (0,63)]; } return crypt ($password, $salt); } public function getDatabaseConnection() { $dbh = new PDO(\u0026#39;mysql:host=\u0026#39; . DB_HOST . \u0026#39;;dbname=\u0026#39; . DB_NAME, DB_USERNAME, DB_PASSWORD); $dbh-\u0026gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $dbh; } } ?\u0026gt; class-userdata.php\nThe UserData class should be an almost identical interface to the MySQL Users table. Almost identical. You should not have the Password field, as PHP will handle checking that value and beyond that the user\u0026rsquo;s password, hashed or not, should never need to be displayed.\nThis class is unused by this tutorial, but it is a template that can be used to easily retrieve information from a database table. When you\u0026rsquo;re ready to move on beyond the login page, you can easily use PDO to fill class variables from corresponding variables in a database table with a call like $stmt-\u0026gt;setFetchMode(PDO::FETCH_CLASS, \u0026lsquo;UserData\u0026rsquo;), and then calling $stmt-\u0026gt;fetch(PDO::FETCH_CLASS) to fill the class variables.\n\u0026lt;?php class UserData { public $UserID; public $Username; } ?\u0026gt; class-users.php\nThe Users class is used to retrieve, assess, and modify data stored in the UserData class. For our purposes, we only need a checkCredentials() function to validate the given username and password against MySQL database elements.\n\u0026lt;?php require_once (\u0026#39;class-databasehelpers.php\u0026#39;); require_once (\u0026#39;class-userdata.php\u0026#39;); class Users { public function checkCredentials($username, $password) { // A UserID of 0 from the database indicates that the username/password pair // could not be found in the database $userID = 0; $digest = \u0026#39;\u0026#39;; try { $dbh = DatabaseHelpers::getDatabaseConnection(); // Build a prepared statement that looks for a row containing the given // username/password pair $stmt = $dbh-\u0026gt;prepare(\u0026#39;SELECT UserID, Password FROM Users WHERE \u0026#39; . \u0026#39;Username=:username \u0026#39; . \u0026#39;LIMIT 1\u0026#39;); $stmt-\u0026gt;bindParam(\u0026#39;:username\u0026#39;, $username, PDO::PARAM_STR); $success = $stmt-\u0026gt;execute(); // If results were returned from executing the MySQL command, we // have found the user if ($success) { // Ensure provided password matches stored hash $userData = $stmt-\u0026gt;fetch(); $digest = $userData[\u0026#39;Password\u0026#39;]; if (crypt ($password, $digest) == $digest) { $userID = $userData[\u0026#39;UserID\u0026#39;]; } } $dbh = null; } catch (PDOException $e) { $userID = 0; $digest = \u0026#39;\u0026#39;; } return array ($userID, $username, $digest); } } ?\u0026gt; pages.php\nThis class acts as an enum of pages on your site.\n\u0026lt;?php // To get around the fact that PHP won\u0026#39;t allow you to declare // a const with an expression, define our constants outside // the Page class, then use these variables within the class define (\u0026#39;LOGIN\u0026#39;, \u0026#39;Login\u0026#39;); define (\u0026#39;INDEX\u0026#39;, \u0026#39;Index\u0026#39;); class Page { const LOGIN = LOGIN; const INDEX = INDEX; } ?\u0026gt; functions.php\nHere\u0026rsquo;s where it gets fun. As you create more pages that should only be accessible to validated users, make sure you add them as an OR to the return of isSecuredPage().\nThe checkLoggedIn() function is our primary work house. This function checks to see if the current page requires validation. If the page requires validation and the user is not logged in, they are redirected to login.php. If a user has been logged in and visits the login page, they are redirected to the main page. If the user has been logged in, this function allows them to access secured pages. The checkLoggedIn() function is also responsible for completing both the login and logout process, and on successful login it sets the proper session and cookie variables.\nTake note of how the secondDigest cookie parameter is being used. We need to store authentication information in the cookie so we can securely implement the \u0026ldquo;Remember me\u0026rdquo; functionality, but if all we store are credentials, the cookie could still be stolen and used. To prevent against this, we also store physical characteristics of the connection, in this case IP address and HTTP User Agent information. That data should be hashed as well so a hijacker can\u0026rsquo;t just spoof it when they steal the cookie. Now, if a hijacker takes our cookie to their own computer, the cookie will pass user authentication but fail the second digest, and the hijacker will be prompted to login again.\nYou would be wise to modify what exactly is in the second digest. If a standard were used, hashing it would pointless, even with the salt. Additional salt beyond the Blowfish cypher would be good, adding additional information, reordering the information before it\u0026rsquo;s hashed, etc. For increased security, you could also store the second digest on the server in the Users table, comparing the cookie\u0026rsquo;s value with that value (which would need to be updated after each successful login).\n\u0026lt;?php require_once (\u0026#39;class-databasehelpers.php\u0026#39;); require_once (\u0026#39;class-users.php\u0026#39;); require_once (\u0026#39;functions.php\u0026#39;); require_once (\u0026#39;pages.php\u0026#39;); function isSecuredPage($page) { // Return true if the given page should only be accessible to validation users return $page == Page::INDEX; } function checkLoggedIn($page) { $loginDiv = \u0026#39;\u0026#39;; $action = \u0026#39;\u0026#39;; if (isset($_POST[\u0026#39;action\u0026#39;])) { $action = stripslashes ($_POST[\u0026#39;action\u0026#39;]); } session_start (); // Check if we\u0026#39;re already logged in, and check session information against cookies // credentials to protect against session hijacking if (isset ($_COOKIE[\u0026#39;project-name\u0026#39;][\u0026#39;userID\u0026#39;]) \u0026amp;\u0026amp; crypt($_SERVER[\u0026#39;REMOTE_ADDR\u0026#39;] . $_SERVER[\u0026#39;HTTP_USER_AGENT\u0026#39;], $_COOKIE[\u0026#39;project-name\u0026#39;][\u0026#39;secondDigest\u0026#39;]) == $_COOKIE[\u0026#39;project-name\u0026#39;][\u0026#39;secondDigest\u0026#39;] \u0026amp;\u0026amp; (!isset ($_COOKIE[\u0026#39;project-name\u0026#39;][\u0026#39;username\u0026#39;]) || (isset ($_COOKIE[\u0026#39;project-name\u0026#39;][\u0026#39;username\u0026#39;]) \u0026amp;\u0026amp; Users::checkCredentials($_COOKIE[\u0026#39;project-name\u0026#39;][\u0026#39;username\u0026#39;], $_COOKIE[\u0026#39;project-name\u0026#39;][\u0026#39;digest\u0026#39;])))) { // Regenerate the ID to prevent session fixation session_regenerate_id (); // Restore the session variables, if they don\u0026#39;t exist if (!isset ($_SESSION[\u0026#39;project-name\u0026#39;][\u0026#39;userID\u0026#39;])) { $_SESSION[\u0026#39;project-name\u0026#39;][\u0026#39;userID\u0026#39;] = $_COOKIE[\u0026#39;project-name\u0026#39;][\u0026#39;userID\u0026#39;]; } // Only redirect us if we\u0026#39;re not already on a secured page and are not // receiving a logout request if (!isSecuredPage ($page) \u0026amp;\u0026amp; $action != \u0026#39;logout\u0026#39;) { header (\u0026#39;Location: ./\u0026#39;); exit; } } else { // If we\u0026#39;re not already the login page, redirect us to the login page if ($page != Page::LOGIN) { header (\u0026#39;Location: login.php\u0026#39;); exit; } } // If we\u0026#39;re not already logged in, check if we\u0026#39;re trying to login or logout if ($page == Page::LOGIN \u0026amp;\u0026amp; $action != \u0026#39;\u0026#39;) { switch ($action) { case \u0026#39;login\u0026#39;: { $userData = Users::checkCredentials (stripslashes ($_POST[\u0026#39;login-username\u0026#39;]), stripslashes ($_POST[\u0026#39;password\u0026#39;])); if ($userData[0] != 0) { $_SESSION[\u0026#39;project-name\u0026#39;][\u0026#39;userID\u0026#39;] = $userData[0]; $_SESSION[\u0026#39;project-name\u0026#39;][\u0026#39;ip\u0026#39;] = $_SERVER[\u0026#39;REMOTE_ADDR\u0026#39;]; $_SESSION[\u0026#39;project-name\u0026#39;][\u0026#39;userAgent\u0026#39;] = $_SERVER[\u0026#39;HTTP_USER_AGENT\u0026#39;]; if (isset ($_POST[\u0026#39;remember\u0026#39;])) { // We set a cookie if the user wants to remain logged in after the // browser is closed // This will leave the user logged in for 168 hours, or one week setcookie(\u0026#39;project-name[userID]\u0026#39;, $userData[0], time () + (3600 \\* 168)); setcookie(\u0026#39;project-name[username]\u0026#39;, $userData[1], time () + (3600 \\* 168)); setcookie(\u0026#39;project-name[digest]\u0026#39;, $userData[2], time () + (3600 \\* 168)); setcookie(\u0026#39;project-name[secondDigest]\u0026#39;, DatabaseHelpers::blowfishCrypt($_SERVER[\u0026#39;REMOTE_ADDR\u0026#39;] . $_SERVER[\u0026#39;HTTP_USER_AGENT\u0026#39;], 10), time () + (3600 \\* 168)); } else { setcookie(\u0026#39;project-name[userID]\u0026#39;, $userData[0], false); setcookie(\u0026#39;project-name[username]\u0026#39;, \u0026#39;\u0026#39;, false); setcookie(\u0026#39;project-name[digest]\u0026#39;, \u0026#39;\u0026#39;, false); setcookie(\u0026#39;project-name[secondDigest]\u0026#39;, DatabaseHelpers::blowfishCrypt($_SERVER[\u0026#39;REMOTE_ADDR\u0026#39;] . $_SERVER[\u0026#39;HTTP_USER_AGENT\u0026#39;], 10), time () + (3600 \\* 168)); } header (\u0026#39;Location: ./\u0026#39;); exit; } else { $loginDiv = \u0026#39; \u0026lt;div id=\u0026#34;login-box\u0026#34; class=\u0026#34;error\u0026#34;\u0026gt;The username or password \u0026#39; .\u0026lt;/div\u0026gt; \u0026lt;pre\u0026gt; \u0026#39;you entered is incorrect.\u0026lt;/div\u0026gt;\u0026#39;; } break; } // Destroy the session if we received a logout or don\u0026#39;t know the action received case \u0026#39;logout\u0026#39;: default: { // Destroy all session and cookie variables $_SESSION = array (); setcookie(\u0026#39;project-name[userID]\u0026#39;, \u0026#39;\u0026#39;, time () - (3600 \\* 168)); setcookie(\u0026#39;project-name[username]\u0026#39;, \u0026#39;\u0026#39;, time () - (3600 \\* 168)); setcookie(\u0026#39;project-name[digest]\u0026#39;, \u0026#39;\u0026#39;, time () - (3600 \\* 168)); setcookie(\u0026#39;project-name[secondDigest]\u0026#39;, \u0026#39;\u0026#39;, time () - (3600 \\* 168)); // Destory the session session_destroy (); $loginDiv = \u0026#39; \u0026lt;div id=\u0026#34;login-box\u0026#34; class=\u0026#34;info\u0026#34;\u0026gt;Thank you. Come again!\u0026lt;/div\u0026gt; \u0026lt;pre\u0026gt;\u0026#39;; break; } } } return $loginDiv; } ?\u0026gt; login.php\nThis is the base for a login form on the login page. Notice that now we\u0026rsquo;re modifying front-centric PHP files, the only reference you see to heavy lifting is a simple call to our checkLoggedIn() function. The form handles POSTing to this page to log the user in and redirect them to index.php.\nThe $loginDiv that we receive from checkLoggedIn() allows us to display informative statuses to the user, for instance, if they try to login with the wrong password.\n\u0026lt;?php require_once (\u0026#39;functions.php\u0026#39;); // Check to see if we\u0026#39;re already logged in or if we have a special status div to report $loginDiv = checkLoggedIn (Page::LOGIN); ?\u0026gt; \u0026lt;html\u0026gt; \u0026lt;body\u0026gt; \u0026lt;h2\u0026gt;Sign in\u0026lt;/h2\u0026gt; \u0026lt;form name=\u0026#34;login\u0026#34; method=\u0026#34;post\u0026#34; action=\u0026#34;login.php\u0026#34;\u0026gt; \u0026lt;input type=\u0026#34;hidden\u0026#34; name=\u0026#34;action\u0026#34; value=\u0026#34;login\u0026#34; /\u0026gt; \u0026lt;label for=\u0026#34;login-username\u0026#34;\u0026gt;Username:\u0026lt;/label\u0026gt;\u0026lt;br /\u0026gt; \u0026lt;input id=\u0026#34;login-username\u0026#34; name=\u0026#34;login-username\u0026#34; type=\u0026#34;text\u0026#34; /\u0026gt;\u0026lt;br /\u0026gt; \u0026lt;label for=\u0026#34;password\u0026#34;\u0026gt;Password:\u0026lt;/label\u0026gt;\u0026lt;br /\u0026gt; \u0026lt;input name=\u0026#34;password\u0026#34; type=\u0026#34;password\u0026#34; /\u0026gt;\u0026lt;br /\u0026gt; \u0026lt;input id=\u0026#34;remember\u0026#34; name=\u0026#34;remember\u0026#34; type=\u0026#34;checkbox\u0026#34; /\u0026gt; \u0026lt;label for=\u0026#34;remember\u0026#34;\u0026gt;Remember me\u0026lt;/label\u0026gt;\u0026lt;br /\u0026gt; \u0026lt;!--?php echo $\u0026lt;span class=\u0026#34;hiddenSpellError\u0026#34; pre=\u0026#34;echo \u0026#34; data-mce-bogus=\u0026#34;1\u0026#34;--\u0026gt;loginDiv ?\u0026gt; \u0026lt;input type=\u0026#34;submit\u0026#34; value=\u0026#34;Login\u0026#34; /\u0026gt; \u0026lt;/form\u0026gt; \u0026lt;/body\u0026gt; \u0026lt;/html\u0026gt; index.php\nLast, but certainly not least, our secured pages. All the work we\u0026rsquo;ve done above to ensure a robust application allows us to make one simple call from a secured page: checkLoggedIn(). Everything we\u0026rsquo;ve done above handles the rest. Add this call to any page you want to be secured and you\u0026rsquo;re good to go!\nOne thing to note is the logout button, which simple POSTs a logout action to login.php.\n\u0026lt;?php require_once (\u0026#39;functions.php\u0026#39;); checkLoggedIn (Page::INDEX); ?\u0026gt; \u0026lt;html\u0026gt; \u0026lt;body\u0026gt; \u0026lt;form name=\u0026#34;logout\u0026#34; method=\u0026#34;post\u0026#34; action=\u0026#34;login.php\u0026#34;\u0026gt; \u0026lt;input type=\u0026#34;hidden\u0026#34; name=\u0026#34;action\u0026#34; value=\u0026#34;logout\u0026#34; /\u0026gt; \u0026lt;input type=\u0026#34;submit\u0026#34; value=\u0026#34;Logout\u0026#34; /\u0026gt; \u0026lt;/form\u0026gt; \u0026lt;/body\u0026gt; \u0026lt;/html\u0026gt; The Common Exit Issue Take special note that as soon as it has been determined that checkLoggedIn() in functions.php succeeded or failed (i.e. following a header call to redirect), exit has been called. This is crucial if your secured page makes ready use of your session or cookie variables, because it tells PHP to cease construction of the page immediately. It is a common mistake to not call exit after a header redirect, which is not necessarily insecure, but it is poor practice. If you fail to call exit immediately, the remainder of the page will still be evaluated by PHP (though the variables may not have been initialized), and error reports may occur. Not data will be displayed to the user, but you neglecting to call exit may fill up your PHP error logs.\nThe Payoff You now have login page, secured content areas, cookie storage for returning users, and working sessions throughout your pages. What\u0026rsquo;s cool about this from this point forward is that you can easily apply this new knowledge of cookies and sessions outside of the credentials realm.\nYou now have live sessions on your pages, so you can store additional values in the $_SESSION variable to carry them between pages. You\u0026rsquo;ve seen how cookies work, so you can curse your clients with crumbles of your website for the next time they return (don\u0026rsquo;t be evil).\nIf you have any further questions regarding the login process, sessions, or cookies, or if you just found this tutorial useful, let me know in a comment.\n","permalink":"https://alexlaird.com/2012/02/secure-php-login/","summary":"\u003cp\u003eWhen perusing the internet for discussions on PHP sessions and cookies in regards to credential validation and user logins, I\u0026rsquo;ve never been satisfied with the approaches I find. Many of the tutorials are just plain lousy or incomplete. And the others seem to imply that you should only use sessions \u003cem\u003eor\u003c/em\u003e cookies and never mix-and-match, a confusion that would probably trip up many PHP novices. So I\u0026rsquo;ve decided to post a tutorial explaining the complete PHP login format I use for my sites and web applications. Before we start, I should let you know that you can grab all the source in this tutorial \u003ca href=\"https://github.com/alexdlaird/secure-php-login\"\u003efrom GitHub\u003c/a\u003e.\u003c/p\u003e","title":"Secure PHP Login"},{"content":"A few weeks back, I was contemplating various ways Jess and I could possibly payoff school debt sooner rather than later. I had a spreadsheet detailing my current Loan Payment Plan, but I was more than willing to knock months off the bottom of that plan, if at all possible. So I mulled over several schemes for paying them off sooner: embezzlement, bank robbery, pirated movie sales. The usual. But none of these options gave me complete confidence that they were bullet proof.\nAnd then another, slightly more ethical thought crept into my mind: what if I pulled money from my own investments and used that to pay off school loans? After all, my investments were earning less interest on a monthly basis than the loans were accruing interest. Surely it made sense then to use the money from investments to payoff the loans.\nAdditionally, though I would be lowering the balance of the investments for the short term, I would more quickly be able to put larger monthly contributions toward them, as I would no longer be putting those monthly payments to my student loans. This seemed intuitive. And, after Googling the idea, I found that this isn\u0026rsquo;t all that uncommon of a practice, and many of the articles encouraged this practice. The other half of the articles suggested that it\u0026rsquo;s not possible to take money from a mutual fund (like a 401k or an IRA) before you\u0026rsquo;re 59 and 1/2, but this isn\u0026rsquo;t true. I know. I called several brokerages.\nThe Realization However.\nUpon further research, and with an Excel spreadsheet that was the brain child of my brother, I have found these assumptions to be untrue. It seems common sense—and it seems reason would suggest that pulling low interest investments out and putting the money toward high interest loans would save you money in the long run, but the long-term ramifications of this were actually quite startling.\nThe attached spreadsheet, I believe, will speak for itself. But the understand you at least need to have going into it is knowing why the these posts suggesting pulling from a mutual fund is a good idea; they\u0026rsquo;re missing the concept of exponential growth.\nIn the short-term, you believe that pulling a few thousand out of mutual funds now won\u0026rsquo;t matter, because you\u0026rsquo;ll quickly pay that few thousand back, with interest. But you\u0026rsquo;re missing how fast mutual funds start to grow exponentially each subsequent year, and the more you pull out, the more difficult (or even impossible) it will be for you to catch up with payments over the long-term.\nThe Big Idea Download the spreadsheet, plug your numbers in, and see if pulling from your investments is a good idea for you (there are a few circumstances where, if you\u0026rsquo;re disciplined, you can pay yourself back soon enough). But I would suggest against this.\nBut here\u0026rsquo;s the Big Idea, and the real heart of the issue. Withdrawing money from your investments, whether you can ultimately pay the amount back in full, or whether you\u0026rsquo;ll save money by paying off your loans sooner, gives you a dangerous mindset toward long-term investing. It puts the thought into the back of your mind that, if absolutely necessary, your mutual funds may be liquid cash. And they\u0026rsquo;re not. They shouldn\u0026rsquo;t be. You will need those funds for you in thirty years when inflation is catching up with your finances, when your kids start looking at college, and when you\u0026rsquo;re thinking about retirement.\nDownload Loan vs. Investment Spreadsheet\n","permalink":"https://alexlaird.com/2011/11/investment-vs.-loan-payoff/","summary":"\u003cp\u003eA few weeks back, I was contemplating various ways Jess and I could possibly payoff school debt sooner rather than later.  I had a \u003ca href=\"http://alexlaird.com/2011/07/paying-off-your-loans/\" title=\"Paying Off Your Loans\"\u003espreadsheet detailing my current Loan Payment Plan\u003c/a\u003e, but I was more than willing to knock months off the bottom of that plan, if at all possible.  So I mulled over several schemes for paying them off sooner: embezzlement, bank robbery, pirated movie sales.  The usual.  But none of these options gave me complete confidence that they were bullet proof.\u003c/p\u003e","title":"Investment vs. Loan Payoff"},{"content":" Author\u0026rsquo;s Note To prevent uneasiness, I should disclose that the attached sample spreadsheet (link provided at the bottom of the post) contains fictional data as an example/starting point for you to understand how the spreadsheet works so you can more easily use it yourself. These are not my (nor anyone elses) loans or account numbers. Do not worry :)!\nEverybody has debt. And, I assume, we all want to pay it off. But how quickly should we pay it off? Did you know that on a $100,000 home mortgage at 12.0% interest, increasing your monthly payment by only $100 (from $1,100 to $1,200) will save you nearly $50,000 of interest paid over the course of the loan? Now do I have your attention?\nHere\u0026rsquo;s another scenario. You\u0026rsquo;ve cancelled your credit card with a remaining balance of $3,499 (you know, from the new Mac Pro you bought). Your credit card has an interest rate of 15% and requires a minimum monthly payment of $40. In some moment of madness, you decide that making the minimum monthly payments will be a good idea. If you die in sixty years, you will not have come close to paying off that small balance. In fact, when you die, the new balance on that card will be $2,441,399.88, and you will have paid over $2.4 million in interest. Of course, the credit card company would never divulge this information to you.\nIn both of these situations, you only have one loan. What if you\u0026rsquo;re a recent college graduate (like my spouse and I) and you have several smaller loans and would like to find the fastest, most cost-effective way to pay them off? For that, I present you with an Excel spreadsheet I created. You may even be surprised to find that you will spend less on interest just by paying off your loans in a different order.\nI\u0026rsquo;ve tried to make the spreadsheet as simple as possible, with buttons and drop-downs to help you add/edit/sort your own loans. Once your loans have been added and the details specified, the spreadsheet will automatically populate a payment plan for you. It will tell you the projected date when all of your loans will be paid off, how much you will have paid in interest, and how large the loans will have gotten with accrued interest. For fun, sort your loans by different criteria (there are drop-downs for sorting at the top of the spreadsheet) and change your monthly payment. You\u0026rsquo;ll be surprised how much things like that will ultimately affect your payment plan, and it\u0026rsquo;ll be good knowledge for you to better understand your own loans.\nIf you don\u0026rsquo;t have any loans currently but are about to start college (or are considering getting five separate credit cards), I still strongly recommend opening this spreadsheet and putting in bogus loan values for your speculative debt. The misinformation or simply lack of understanding among my peers when it came to financial responsibility (and future debt) was immense in college. Sure, college loans generally have a better interest rate than credit card or auto loans. And, sure, you could pay your $80,000 loans off over the next thirty years \u0026hellip; but do you know that, when all is said and done, on that $80,000 loan, including interest, you may end up paying something upwards of $150-$200,000?\nI could continue with example after example of loan payments and the penalties incurred if you don\u0026rsquo;t pay attention to your interest rates and monthly payments, but my main point is that you need to stay on top of your loans, and the best way to do that is to make a plan for them. That\u0026rsquo;s where I hope my spreadsheet can help you; it has helped me come up with a simple way to quickly pay off Jess\u0026rsquo; and my school loans in only a couple of years. Not only that, but after putting my own loans into this spreadsheet and sorting them in different ways, I found that paying them off in a different order than I originally perceived to be the best would save me about $350. That may seem like nominal savings to you now, but my spouse and I (comparatively) don\u0026rsquo;t have that much school debt−so imagine how much would be saved if we did, or in the future when we have a home mortgage and maybe a car payment or two. When that time comes, knowing this information will save us thousands or tens-of-thousands (see my first example).\nLet me know if you have any issues with the spreadsheet or if you have any ideas that might make it better−I\u0026rsquo;m always open to ideas! And happy savings :).\nFor your convenience, especially if you are a soon-to-be or current college student that may be unfamiliar with much of loan lingo, I\u0026rsquo;ve provided some guidance that will help you better understand loans and the spreadsheet.\nStatus: A word or two describing the state of the loan (ex. \u0026ldquo;Open\u0026rdquo;, \u0026ldquo;Enrolled\u0026rdquo;, \u0026ldquo;In School\u0026rdquo;, \u0026ldquo;Closed\u0026rdquo;). Loan Name: A unique name to help you identify the loan. This is a required field, and it must be unique from all other loan names. Account Number: The account number given by the lender for this loan. Lender: Every loan has a lending institution that granted you the loan. For your reference, put the name of that institution here (ex. \u0026ldquo;The Department of Education\u0026rdquo;, \u0026ldquo;Capitol One\u0026rdquo;, \u0026ldquo;Collins Community Credit Union\u0026rdquo;). Type: The type of loan this is, either generically (ex. \u0026ldquo;School Loan\u0026rdquo;, \u0026ldquo;Credit Card\u0026rdquo;) or specifically (\u0026ldquo;Stafford\u0026rdquo;, \u0026ldquo;Direct\u0026rdquo;, \u0026ldquo;Perkins\u0026rdquo;). Interest Subsidy: Subsidization is a type of assistance you may get from the lender or another financial institution (or the government) to help you with the loan or its interest. For example, if your loan payments or interest are deferred for six months, your loan is \u0026ldquo;subsidized\u0026rdquo;. If your loan does not have any sort of assistance with it, it is \u0026ldquo;unsubsidized\u0026rdquo;. An unsubsidized loan begins accruing immediately. This is a required field. Interest Rate: The percentage rate at which your loan gains interest annually. This is a required field. Minimum Payment: Most loans require a minimum monthly payment. The payment plan will deduct minimum payments each month so your payment plan is accurately generated. This is a required field—just input $0 if your loan does not require a minimum payment. Due Date: The date on which payments are expected to begin for this loan. In the same of a subsidized loan, this should be the date your interest will start accruing. This field is required. Initial Balance: The initial amount that the loan was worth. This field is required. Current Balance: The current amount that the loan is worth. This will be the same as the initial balance if you haven\u0026rsquo;t already started paying toward this loan. This field is required. Download Sample Loan Payment Plan Spreadsheet For an example of how the spreadsheet will look when it\u0026rsquo;s filled in with loan values, download the sample spreadsheet above. \u0026mdash; Download Ready-to-Use Loan Payment Plan Spreadsheet For a ready-to-use spreadsheet that you can more easily enter your own loan information into, download the template spreadsheet above.\n","permalink":"https://alexlaird.com/2011/07/paying-off-your-loans/","summary":"\u003cdiv class=\"admonition important\"\u003e\n\u003ch3 id=\"authors-note\"\u003eAuthor\u0026rsquo;s Note\u003c/h3\u003e\n\u003cp\u003e\u003cem\u003eTo prevent uneasiness, I should disclose that the attached sample spreadsheet (link provided at the bottom of the post) contains fictional data as an example/starting point for you to understand how the spreadsheet works so you can more easily use it yourself.  These are not my (nor anyone elses) loans or account numbers.  Do not worry :)!\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003cp\u003eEverybody has debt.  And, I assume, we all want to pay it off.  But how quickly should we pay it off?  Did you know that on a $100,000 home mortgage at 12.0% interest, increasing your monthly payment by only $100 (from $1,100 to $1,200) will save you nearly $50,000 of interest paid over the course of the loan?  Now do I have your attention?\u003c/p\u003e","title":"Paying Off Your Loans"},{"content":"\nWhat \u0026hellip; Is This? If you\u0026rsquo;re like my brother and me, you love old-timey computer games almost more than the latest and greatest shoot-em-up. For as long as I can remember, my brother and I have loved playing classic puzzle games like King\u0026rsquo;s Quest, Commander Keen (yah, I realize that\u0026rsquo;s not really a puzzle game), and, later, games like the Myst games.\nAs such, after years of my brother and I writing our own useful programs, Andrew had a brilliant idea. \u0026ldquo;Hey, why don\u0026rsquo;t we write an old-school adventure game with lousy DOS graphics? You know, in the fashion of King\u0026rsquo;s Quest and the like?\u0026rdquo;\nThis was an idea through most of 2008, began development in 2009, and became what it is now sometime in 2010. Obviously, we could have put effort into making these graphics cutting edge \u0026hellip; but that would kind of defeat the purpose. We intentionally made this game for nostalgic purposes.\nThe music is pure genius, I must say. Any likenesses you may here throughout the game to other old-timey games you\u0026rsquo;ve played is purely coincidental. Don\u0026rsquo;t sue us.\nAlright, I Follow. So Who\u0026rsquo;s Ernie? Ernie was my dog. I don\u0026rsquo;t say \u0026ldquo;was\u0026rdquo; because he\u0026rsquo;s dead or anything terrible like that−I say \u0026ldquo;was\u0026rdquo; because he now belongs to my brother. I now have a new dog named Dante, and he and Ernie get along great. But I digress.\nWhen Andrew started developing The-Yet-To-Be-Named-Old-School-Game, he needed something to fashion it after, and he wanted it to be something he and I had in common, since we had the same affinity for such games. Ernie must have been trotting by at the time, because he decided to make him the main character. And thus development began.\nUh, I Didn\u0026rsquo;t Play Old-Timey Games. What Do I Do? Use the arrow keys to move the Ernie character around. When you walk up to an object you\u0026rsquo;d like to do something with, type the action. Then press enter. Yes, type. For instance, if you walk up to a shiny object on the ground, try typing the command \u0026ldquo;get key\u0026rdquo; and pressing enter. Don\u0026rsquo;t know if it\u0026rsquo;s a keep? Try the \u0026ldquo;look\u0026rdquo; command to see what\u0026rsquo;s around you. Be specific. If you see a person, type \u0026ldquo;look person\u0026rdquo;.\nThe key to these old game typing commands is verb noun. So to talk (verb) to a_person_ (noun), you\u0026rsquo;d type \u0026ldquo;talk person\u0026rdquo;. Don\u0026rsquo;t know the name of the person? Type \u0026ldquo;look\u0026rdquo; and maybe the description will tell you the name of the person in the screen.\nType \u0026ldquo;inventory\u0026rdquo; to see a list of the items in your \u0026hellip; you guessed it \u0026hellip; inventory!\nOh, and as I said before, this was intentionally made as a DOS-style game. That means your mouse won\u0026rsquo;t work at all. If you\u0026rsquo;d like to access those menus at the top, press Alt and use the arrow keys to navigate.\nThe Nerd-Speech in This Post is Minimal. Anything to Add? Yah. The game can also be run on Mac, if you\u0026rsquo;re interested, but the build isn\u0026rsquo;t as stable, and, frankly, I didn\u0026rsquo;t feel like dealing with getting it to that state. Deal with it. If you\u0026rsquo;d really like to see the game run on Mac, you\u0026rsquo;re more than welcome to brave the build yourself. You can find it on Andrew\u0026rsquo;s code repository here. Don\u0026rsquo;t say I didn\u0026rsquo;t warn use. Seriously. Not a pretty build. And even if you do get it to build, I\u0026rsquo;ve only gotten it to run a few times, and it does crash from time to time.\nAnd speaking of crashing, it may crash a bit on Windows Vista. I don\u0026rsquo;t think we got all of the Vista bugs worked out because, well \u0026hellip; it\u0026rsquo;s Vista. Not worth our time. But it worked consistently on Windows XP and Windows 7. Anyway, you know, we offer this game with absolutely no guarantee or warranty. And it should work just fine for you. I promise.\nConclusion If you\u0026rsquo;re a fan of the classics, or you just really like stalking the work I do, or you just want to take my old dog on a walking-tour of my parent\u0026rsquo;s house, it\u0026rsquo;s certainly worth a play through!\nAnd, since a lot of the commands and scenarios on this game are very Laird-specific, I\u0026rsquo;ll leave comments and such enabled on this page so people can post and help each other out if absolutely necessary.\nDownload Ernie\u0026rsquo;s Adventure\n","permalink":"https://alexlaird.com/2011/07/ernies-adventure/","summary":"\u003cp\u003e\u003ca href=\"http://alexlaird.com/content/uploads/2011/07/ernies_adventure.png\"\u003e\u003cimg loading=\"lazy\" src=\"http://alexlaird.com/content/uploads/2011/07/ernies_adventure-300x235.png\" title=\"Ernie\u0026#39;s Adventure Screenshot\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"what--is-this\"\u003eWhat \u0026hellip; Is This?\u003c/h2\u003e\n\u003cp\u003eIf you\u0026rsquo;re like my brother and me, you love old-timey computer games almost more than the latest and greatest shoot-em-up.  For as long as I can remember, my brother and I have loved playing classic puzzle games like King\u0026rsquo;s Quest, Commander Keen (yah, I realize that\u0026rsquo;s not really a puzzle game), and, later, games like the Myst games.\u003c/p\u003e\n\u003cp\u003eAs such, after years of my brother and I writing our own useful programs, Andrew had a brilliant idea.  \u0026ldquo;Hey, why don\u0026rsquo;t we write an old-school adventure game with lousy DOS graphics?  You know, in the fashion of King\u0026rsquo;s Quest and the like?\u0026rdquo;\u003c/p\u003e","title":"Ernie's Adventure"},{"content":"STS-135: The Final (Shuttle) Launch This morning marked the beginning of the end of an era. I say the beginning of the end because the era does not conclusively close until next week, when the Space Shuttle Atlantis returns safely the Earth.\nThe beginning of the end happened at 11:29 A.M. EST as Atlantis\u0026rsquo; rocket engines propelled the 4.5 million pound vehicle off the pad and, in eight and a half minutes, out of the Earth\u0026rsquo;s atmosphere, into space, and up to a speed of 17,320 mph. (For the astute reader, you\u0026rsquo;ll note that this means it must be traveling at over 4.81 miles per second as it left the Earth\u0026rsquo;s atmosphere.)\nOminous weather taunted the launch of this shuttle all week, but all systems were a go this morning, and aside from a slight hold at T-minus 31 seconds (due to the GOX Vent Hood not registering with one of the sensors as fully retracted), Atlantis left the pad and disappeared into the heavy blanket of clouds above in less than forty seconds.\nWhat you may not realize is that, at the time of the launch, according to NASA\u0026rsquo;s own protocol, the shuttle technically had the red light. Yesterday, storms were furious around Cape Canaveral, and lightning even struck the ground twice just around the launch pad. Luckily, there was no significant damage done to the pad or the surrounding area. The weather, however, persisted.\nNASA\u0026rsquo;s launch safety protocol dictates that precipitation cannot occur within twenty miles of the launch pad during a launch. This morning, after all launch systems reported back \u0026ldquo;go\u0026rdquo;, the weather crew came back without a go. It wasn\u0026rsquo;t a no-go, per se. They just hadn\u0026rsquo;t reached a verdict yet. This was at the T-minus 9 minute hold; it was definitely raining within the twenty mile radius.\nUltimately, Mike Leinbach, the Shuttle Launch Director, who gave the launch a go under the assumption that the weather would continue to move away from the launch pad before launch. This was not a dangerous maneuver, as if weather hadn\u0026rsquo;t gone as predicted, the launch could have been scrubbed down to the thirty second mark.\nThe weather was so variable in fact, that Mike Moses, Launch Integration Manager, said in the post-launch press report that the decision to fill the External Fuel Tank (ET) this morning, a six hour process that costs $500,000 to undo, was settled over a game of darts. But the calls were made. The delays, insignificant. And after over 1,000 onboard systems were a \u0026ldquo;go\u0026rdquo;, STS-135, the final shuttle of its kind, launched safely from Pad 39A this morning. But this is only the end of one era. The end of the space shuttle era. It seems Americans and the media have focused so intently on the ending of this era that they\u0026rsquo;re acting as though NASA is closing its doors for good.\nNearly one million people were present to watch Atlantis liftoff from the Kennedy Space Center this morning. That doesn\u0026rsquo;t include the tens of millions of viewers watching the stream live from all around America and the world. Certainly this was a momentous occasion—the conclusion of the near $200 billion dollar space shuttle program\u0026rsquo;s 30-year reign—but NASA has plans to return to space. They just need a new vehicle to do it in.\nThe aged space shuttles weren\u0026rsquo;t originally built to optimal safety standards (you can thank the government for NASA budget cuts on that one), so they\u0026rsquo;re being retired. Though the shuttles could continue to fly safely, NASA has brighter plans for the future. My hope is that the one million people at Cape Canaveral chanting, \u0026ldquo;U-S-A \u0026hellip; U-S-A\u0026rdquo; and \u0026ldquo;GO, GO, GO!\u0026rdquo;, as well as the cubicle-confined fans (like myself) shouting \u0026ldquo;Get \u0026lsquo;outta here!\u0026rdquo; from their desk chairs mourn only the conclusion of the shuttle generation, but not the death of NASA.\nEye on the Prize The Space Shuttle Atlantis was hauling its crew and cargo to the International Space Station, a $100 billion dollar structure in a low-Earth orbit (about 220 miles out). The Space Shuttle itself was designed primarily for this purpose even—a low-Earth orbit. But what about deep space exploration? That\u0026rsquo;s exactly what NASA said. Orion, the vehicle being built for the future of space travel, is being designed with manned deep exploration in mind. It\u0026rsquo;s slated for a completion date of 2016, and it is expected to launch that same year assuming NASA gets a contractor to build a rocket for it and assuming that rocket is also completed by 2016. The Orion space capsule follows the primitive design of the Apollo spacecraft, but with much more of a vision. Obviously, we\u0026rsquo;ve advanced quite a ways technologically since the Saturn V rockets boosted the Apollo capsule into space. The aim for Orion is that she\u0026rsquo;ll have the reliability and safety the old Apollo spacecraft with the ingenuity and technology of the future. She\u0026rsquo;s being built with the purpose of landing a man (or woman) on the surface of Mars.\nBut \u0026hellip; Why Space? It\u0026rsquo;s a Money Hog! A money hog? Because the space shuttle cost us nearly $2 billion each? For the $450 million dollar price tag per mission? Because the shuttle burns more than two million pounds of solid propellant in the two minutes after takeoff? Because a satellite can cost upwards of $300 million to launch?\nSure, NASA is expensive. We get it. But can you name me a way to advance society that doesn\u0026rsquo;t cost a pretty penny? You can debate it all you like, and you can argue that the budget for NASA is too large, or that the tax break NASA gets (that\u0026rsquo;s coming from your pocket) is too much, but the fact remains: NASA paved the way for your current way of life, and space exploration, especially through NASA, will mold the lives of our future generations.\nUnfortunately, the advantage of space exploration is currently evading our current administration. Yet in an economy continually teetering just above and below a 10% unemployment rate, I\u0026rsquo;d say the jobs created by subcontracted construction of rockets, satellites, space vehicles, space equipment, and research and development projects are nigh invaluable.\nLockheed Martin, the primary contractor for the Orion project, has published posters that boast, \u0026ldquo;Orion is being built near me!\u0026rdquo; And, as a means of spreading out the love (and keeping the primary decision to scrap the project out of the hands of the government), they\u0026rsquo;ve spread the research, development, and construction work for Orion out over twenty-six separate contractors all over the country. Not only are they stimulating jobs in the economy, but they\u0026rsquo;re also inspiring families and the job market alike with the excitement of being involved (directly or indirectly) in the future of the space age.\nDon\u0026rsquo;t Care. I Still Don\u0026rsquo;t Need NASA Perhaps you\u0026rsquo;re still not convinced. Maybe you still think you you don\u0026rsquo;t need NASA, and that NASA has done nothing to personally effect your life and loved ones. Then I\u0026rsquo;ll leave you with these thoughts: well over 1,700 technologies, many of which you use daily, were brought to you from the multi-billion dollar space program and NASA \u0026hellip;\n\u0026hellip; The fibrous material in your tire tread. Your home\u0026rsquo;s insulation. Velcro. Image processing (which gave you all the technology from a steady cam to image enhancement to HD movies to a personal video and still camera the size of your palm). Prosthetics. The GPS in your phone \u0026hellip; not to mention the satellite that your phone, television, and possibly even your internet connection talk to \u0026hellip; not to mention these satellites are now used to predict weather patterns, tornados, hurricanes, and more. Health and safety equipment from ventricular devices to help your heart pump blood to more lightweight material that firefighters can wear when entering a burning building. Cordless tools \u0026hellip;\n\u0026hellip; and much, much more.\nThanks, NASA, for all the work you\u0026rsquo;ve done not just for our country, but for the entire world. For inspiring my brother and I to investigate computers, technology, and spacecraft. For the sense of camaraderie you gave Americans with each other, the rest of the world, and the universe this morning. For the life changing technology you\u0026rsquo;ve given us. Keep shedding more light on the infinite galaxies out there left to explore.\n","permalink":"https://alexlaird.com/2011/07/the-end-of-an-era-for-nasa/","summary":"\u003ch2 id=\"sts-135-the-final-shuttle-launch\"\u003eSTS-135: The Final (Shuttle) Launch\u003c/h2\u003e\n\u003cp\u003eThis morning marked the beginning of the end of an era.  I say the beginning of the end because the era does not conclusively close until next week, when the Space Shuttle Atlantis returns safely the Earth.\u003c/p\u003e\n\u003cp\u003eThe beginning of the end happened at 11:29 A.M. EST as Atlantis\u0026rsquo; rocket engines propelled the 4.5 million pound vehicle off the pad and, in eight and a half minutes, out of the Earth\u0026rsquo;s atmosphere, into space, and up to a speed of 17,320 mph.  (For the astute reader, you\u0026rsquo;ll note that this means it must be traveling at over 4.81 miles per second as it left the Earth\u0026rsquo;s atmosphere.)\u003c/p\u003e","title":"The End of an Era for NASA"},{"content":"One-hundred-seventeen days. Almost four months. What could you build in one-hundred-seventeen days? Perhaps I should rephrase that: what could you build in one-hundred-seventeen days on a government contract? Certainly not an entire aircraft, from the ground up, from scratch-paper to rolling it out of the hanger?\nBut it has been done. The North American P-51 Mustang was ordered just one-hundred-seventeen days before the first prototype was rolled out. That’s an incredible achievement right there. Before the aircraft even got off the ground, putting all of its air superiority aside, the entire plane was designed and put together in less than four months. It was flying less than two months after that.\nHistory Why was the P-51 ordered you might ask? In the early 1940’s as World War II was ramping up, North American Aviation (NAA) realized we had no fighters that met the Royal Air Force\u0026rsquo;s (RAF) strict requirements, and we were in desperate need of an aircraft that could protect daytime bombing formations deep into Germany. So in March of 1940, 320 new P-51 aircraft were commissioned by NAA.\nIt wasn’t until 1943 that enough P-51s were available to start doing some good. Pilots found that the aircraft was an excellent long range escort fighter. Finally, it was possible for the RAF to carry out their bombing missions at night, and the United States Army Air Force (USAAF) to carry out their bombing missions in the day time with P-51 escort.\nAs the war wrapped up, jet powered aircraft started to develop. While many of the earlier aircraft in the Allied fleet couldn’t compete against the faster jet aircraft, the P-51 could. This allowed the P-51 to be picked as the top piston powered aircraft during the end of the war.\nThe USAAF consolidated much of its P-51 fleet after the end of the war. A few upgrades were made to the plane through the 1950’s and the fighter lasted much longer than other piston powered fighter planes. While much of the world was looking to jet powered fighters, the P-51 continued to have a role even into the 1960’s. Finally, the last two military P-51s flew in 1968 as chase planes for a military helicopter. The last P-51 that was downed in military combat flew in 1965.\nThe P-51 played a vital role in winning Wold War II.\nRecord By May of 1945 the top three P-51 groups had shot down 4,950 aircraft; this amounted to half of the USAAF total kills in the entire European theater. Keep in mind that was only the top three groups, and if you break that down by day, it amounts to over 6.75 kills per day.\nThe two top scoring aerial combat groups (which exclusively flew P-51s) had 1,229 kills just between the two of them. During the European campaign, the RAF and USAAF used the P-51 in 123,873 sorties.\nWeapons Machine guns were the dogfighting weapon in World War II. The P-51 had four 0.30 inch M1919 Browning machine guns and two 0.50 inch M2 Browning machine guns in its wings. Two more 0.50 inch M2 Browning machine guns were mounted under the engine of the aircraft and were synchronized to fire between the propeller as it rotated. This technology was developed in WWI and was known as gun synchronization gear.\nThe P-51 was capable of carrying ten 5 inch long rockets that were mounted under the wings similar to today’s missiles. It could also carry 2,000 pounds of bombs under the wings in place of the rockets. On long range missions the later models could replace the weapons with external fuel tanks to extend their range by 300 miles.\nSpecifications The P-51 Mustang was a top of the line machine for its time. Powered by the Merlin V-1650 engine, the first models boasted a top speed of 437 mph, which could keep up with the earliest jet powered aircraft. The final model, the P-51H, could hit 490 mph. The P-51 would cruise at around 275 mph and at about 41,900 feet. Its range was over 1000 miles. When the P-51D was introduced an additional 300 miles were gained with drop tanks on the wings.\nHow much did a P-51 cost? In 1945 the government paid $50,985 for each aircraft. Converting that to 2011 dollars it would cost around $628,000 to buy a P-51. After the war, the government sold many of their P-51s for civilian use, some for as little as $1,500.\nA total of 16,766 P-51 Mustangs were built. Many of them were sold to other Allied countries. It was thought of as the top long range escort fighter of its time. Many still fly today in homage of the original lead fighter of the USAAF.\nSightings Sadly, it’s not likely that you’ll be out drinking lemonade on your porch one day and see a formation of P-51s flying over anymore. You will mostly likely have to go to a museum or an airshow to see one.\nThere has been a trend over the past few years to do “heritage” flights at airshows with a WWII era plane flying along side one of today’s modern fighters. Many times the P-51 is chosen for this task. If you’ve been to a recent airshow and seen one of these “heritage” flights, then it’s possible you’ve seen a P-51.\nIt’s even harder to see a P-51 in the movies. There was only one movie made that centers around the P-51 and that was a 1957 film called Battle Hymn. There are a handful of other movies that you catch glimpses of P-51s: Empire of the Sun, Saving Private Ryan, Memphis Belle, and The Tuskegee Airmen all have a few scenes with P-51s flying.\nIf you get a chance, head over to an airshow and catch a glimpse of the one of the finest WWII era fighters built. It will be a trip worth taking.\nIf you don\u0026rsquo;t get a chance, buy your own P-51 Mustang model or remote control plane from Amazon! Just follow the links below:\nAndrew Laird (usually referred to as \u0026ldquo;The Brother\u0026rdquo;) is the sibling of Alex Laird. He shares the same love for airplanes as Alex does and is the guest author of this post.\n","permalink":"https://alexlaird.com/2011/06/north-american-p-51-mustang/","summary":"\u003cp\u003eOne-hundred-seventeen days.  Almost four months.  What could you build in one-hundred-seventeen days?  Perhaps I should rephrase that: what could you build in one-hundred-seventeen days \u003cem\u003eon a government contract\u003c/em\u003e? Certainly not an entire aircraft, from the ground up, from scratch-paper to rolling it out of the hanger?\u003c/p\u003e\n\u003cp\u003eBut it has been done.  The North American P-51 Mustang was ordered just one-hundred-seventeen days before the first prototype was rolled out.  That’s an incredible achievement right there.  Before the aircraft even got off the ground, putting all of its air superiority aside, the entire plane was designed and put together in less than four months.  It was flying less than two months after that.\u003c/p\u003e","title":"North American P-51 Mustang"},{"content":"The Fighter/Attack series is one most people are familiar with, and probably the most well-know set of aircraft the Unites States Navy and Air Force produce. Unfortunately, the understood distinctions between each aircraft are not that well known. Most commonly, all fighter aircraft are referred to as an F-16. If you don\u0026rsquo;t believe me, just look up a few YouTube videos; you\u0026rsquo;ll be able to see variances in the details of the aircraft, but most of the videos are will call the aircraft an F-16 \u0026hellip; it\u0026rsquo;s sad, really.\nBut I digress.\nLet\u0026rsquo;s talk about the second most awesome plane in the Fighter/Attack series (the most awesome being the Lockheed Martin F-22 Raptor, but this aircraft, unfortunately, will not be at the Quad City Air Show): the F/A-18. And, just to make things interesting, let\u0026rsquo;s Tarantino this post and get to the interesting stuff first!\nWhere You\u0026rsquo;ve Seen It If you recall, the Fat Albert of the Blue Angels was a C-130. Well, the most recent bread of Blue Angels themselves happen to fly F/A-18 Hornets. That\u0026rsquo;s where this post comes in as relating to the Quad City Air Show—not only will their be ground displays of a standard F/A-18, but the Blue Angels will put on a show flying their F/A-18s as well.\nThe media? F/A-18s have made appearances in the following popular Hollywood movies: Godzilla (I\u0026rsquo;d say the scene is obvious enough), The Rock as they attack Alcatraz, Independence Day (the aircraft that Will Smith is shown flying), Clear and Present Danger where an F/A-18 is shown dropping a laser-guided bomb on a vehicle, Tears of the Sun in the final battle, and the F/A-18 Super Hornet, a two-seat variant of the F/A-18 Hornet stars, in Behind Enemy Lines.\nThink you saw the F/A-18 in Transformers? You\u0026rsquo;d be right! The Transformers Decepticon, Starscream, morphs into an F-22 Raptor, and flying through the city (when Starscream smashes them down) are also F-22s. However, the fighters shown lifting off the carrier part-way through the movie are Hornets, and I actually know the pilot who was flying the F/A-18 shown taking off from the carrier!\nEver seen that video of a fighter jet flying and safely landing after losing a wing? That\u0026rsquo;s an F/A-18. The Hornet was the first aircraft of its kind to have the unique ability to be able to safely fly with up to 80% of a wing removed, thanks to some amazing thrust-control software developed by \u0026hellip; you guessed it, Rockwell Collins. I\u0026rsquo;m not 100% certain, but I believe that functionality has also been implemented in the F-22 Raptor.\nFinally, the F/A-18 is one of the most common fighter jets you see at an airshow, next to the F-16 Fighting Falcon and the F-15 Eagle, so it\u0026rsquo;s likely that if you\u0026rsquo;ve been to an air show or two, you\u0026rsquo;ve probably seen the Hornet or a variation thereof.\nSpecifications The F/A-18 is powered by two massive power plants mounted on its rear. The power plants are each F404-GE-402 afterburning engines, capable of thrusting over 18,000 pounds.The weight of the F/A-18 at takeoff is 22,000 pounds. The thrust-to-weight ratio is nearly 1-to-1, which lends to the aircraft\u0026rsquo;s amazing maneuverability.\nThe fighter can hold over 11,000 pounds of fuel in its internal tank and nearly 7,000 pounds in its external fuel tank. On takeoff, the aircraft will be loaded with different amounts of fuel depending on its roll during flight. For instance, if it is performing an attack mission, the external fuel tank will not be filled. However, if is performing a longer-range attack mission, the external fuel tank will be filled, and the plane may weigh up to 52,000 pounds on takeoff.\nThe Hornet is 56 feet in length, only 15 feet in height, and has a wingspan of 40 feet—again, its very close length-to-width ratio lends to amazing maneuverability during combat. When loaded with fuel and missiles, the fighter can fly just over 1,000 miles non-stop.\nIt\u0026rsquo;s hard to talk about a fighter jet without touching its speeds. You ready for this? The F/A-18 has a top speed of mach 1.8—that\u0026rsquo;s 1,370 mph. That\u0026rsquo;s less than two hours to fly coast-to-coast in the United States at its widest point (excluding Alaska, of course).\nOn the Carrier And while we\u0026rsquo;re on the subject of dimensions and speed, we should probably talk about the planes use on aircraft carriers, since it was designed with that storage in mind. Certain later F/A-18 models (E and F) have collapsible wings for better storage on an aircraft carrier, but the standard models (A-D) do not. This isn\u0026rsquo;t a huge issue, however, since their wingspan is only 40 feet. Carriers range in size, but depending on the mixture of aircraft its holding and whether they have collapsible wings or not, a carrier can usually hold anywhere from 85 to 140 fighter planes.\nFighter jets, though extremely powerful, do not have enough thrust to get their aircraft up to liftoff speed before the end of the very short carrier runway, usually around 300 yards or less. By comparison, United States air regulations require commercial landing strips to be a minimum of 4,033 yards. So you can see that the fighters are working with a lot less runway here. So how do they get up to speed? Four continuous catapults.\nA plane cannot lift off the ground until the proper amount of air is moving over the wings to generate lift. The amount of air needed to generate lift depends on the weight and dimensions of the aircraft, but the catapults on an aircraft carrier, which are entirely steam driven, help lung fighters up to their necessary speed (about 170 mph) before the end of the runway. It takes that catapults only two seconds to do this. Usually, they planes don\u0026rsquo;t quite make it to their necessary speed, which is why you\u0026rsquo;ll see the heavier fighter jets dip toward the sea just after takeoff of an aircraft carrier. But don\u0026rsquo;t worry. There\u0026rsquo;s still 240 feet between the flight deck and the thrashing sea, which is plenty of room for the plane to gather the necessary airspeed to gain altitude.\nOf course, all of this is just for takeoff. How does a plane land on such a short runway? Oh, and you know how a flight deck may be up to 300 yards long for takeoff? Landing planes come in at a different angle, and they usually only have about 166 yards. When they lower their landing gear, they also lower a tail hook. The tail hook is just what it sounds like—a hook that protrudes down from the fighter jet and grabs the arresting wires that are stretched across the carrier\u0026rsquo;s landing deck. These wires are pulled tight and screech the aircraft to a halt on the flight deck.\nBut what if the pilot misses the wires? Landing on an aircraft carrier is one of the most difficult things a fighter pilot may ever do, so there\u0026rsquo;s a good chance he may miss the wires. This means he has to immediately takeoff, fly a loop, and try landing again. This also means that fighters land on an aircraft carrier at a very high rate of speed compared to a normal runway. Which also means that as soon as the pilot hits the flight deck, rather than pulling his engines back or slamming on the breaks, he throws the engines to full throttle. Why? Because the moment he is signaled that he missed the arresting wires, he needs to be above his 180 mph to take off the other end of the carrier again. When an aircraft misses the arrest wire, it is known as a \u0026ldquo;bolter\u0026rdquo;. The landing deck of an aircraft carrier is slanting upward at a 14 degree angle from the rest of the aircraft so it can assist bolters in quickly getting back up to a safe altitude after missing the arresting wires.\nArmaments Unfortunately, the F/A-18 has no weapon systems \u0026hellip; I\u0026rsquo;m just kidding. But seriously. The Hornet comes equipped with a nose-mounted 20 mm M61 Vulcan gatling gun that houses nearly 600 rounds.\nThe F/A-18 can hold up to nine missiles: two on the wingtips, four under the wing, and three under the external fuel tank. If you see an equipped F/A-18, it may be carrying Hydra 70 or Zuni rockets, or it may be equipped with AIM-9, AIM-132, IRIS-T, or AIM-120, AIM-7 or AIM-120 air-to-air missiles. There are also five types of air-to-surface heat-seeking missiles that the Hornet may be carrying, or a few AGM-84 Harpoon anti-ship missile.\nYou think that\u0026rsquo;s all? Of course not. The Hornet can also be used as a bomber. The F/A-18 can carry up to eight different types of bombs, including Paveway laser-guided bombs, cluster bombs, JDAM precision-guided bombs, B61/Mk57 nuclear bombs, and more.\nHistory and Cost Boy, after starting with all the cool stuff, the history of the aircraft seems kinda bland, doesn\u0026rsquo;t it? If you answered \u0026ldquo;yes\u0026rdquo; to that, I question why you\u0026rsquo;re even reading blogs about airplanes \u0026hellip; after all, without aircraft history, we wouldn\u0026rsquo;t be making bigger, better, faster, and more agile aircraft every decade.\nMcDonnell Douglas developed the F/A-18 Hornet after gaining the contract from the United States Navy\u0026rsquo;s Naval Fighter-Attack Experimental program. The goal of this program was simple: create an agile aircraft that could replace the Skyhawk, Corsair II, and Phantom II, performing better in every respect than its fighter-series predecessors. Both the Navy and the Air Force needed a short-takeoff aircraft that was versatile enough to be used on a land-based air base or stored on and launched from an aircraft carrier.\nThe Navy proposed a design for the aircraft that illustrated a single-man aircraft that could be easily used for bombing and could then defend itself from attacks while it returned to Home Base. The F/A-18 certainly meets that goal with its superior dog-fighting capabilities, and it proved this ability in Operation Desert Storm, when one aircraft would dog-fight its way to its target, bomb the area, and return to base without a scratch.\nThe F/A-18 was first tested in 1978 and entered the service in 1983. The F/A-18 Super Hornet, a two-seater variant of the Hornet developed by Boeing, was introduced in the early 1990s after the Navy retired the F-14 Tomcat, A-6 Intruder, and EA-6 Prowler all at once \u0026hellip; without first considering an alternative (oops).\nA single F/A-18 Hornet costs just under $40 million. The F/A-18 Super Hornet costs nearly $60 million. The fleet size of the F/A-18 family is nearly 3,000 aircraft.\nFinally, let\u0026rsquo;s talk about the cockpit of the aircraft. Like previous military aircraft I\u0026rsquo;ve covered, the radio communications and control panel were developed by none other than Rockwell Collins (though, again, we never get credit for this on any of the Wikipedia pages). Last, but certainly not least, in the late 1990s, Rockwell Collins developed a technology that would automatically adjust engine thrusts in the case of a serious malfunction of aircraft damage. Originally, the functionality was intended to provide a safe landing for a fighter aircraft if it lost up to 60% of its wing, but the final program allows the F/A-18 to lose up to 80% of one wing and land safely! Now that\u0026rsquo;s impressive for an aircraft that may weigh up to 51,000 pounds when filled.\nOh, and here\u0026rsquo;s a fun fact: though you may think of the F/A-18 as a \u0026ldquo;heavy\u0026rdquo; aircraft due to its many pounds by comparison to, say, you\u0026rsquo;re car, it\u0026rsquo;s actually classified as a light-weight fighter. In fact, when the Navy bid the program in the first place, a light-weight fighter was one of their requirements.\nThink the F/A-18 Hornet is one of McDonnel Douglas\u0026rsquo; finest creations? Buy your own model or remote control version by following the Amazon links below:\nOr, if you\u0026rsquo;re really ambitious, save up a bit for an even bigger scale model:\n","permalink":"https://alexlaird.com/2011/06/mcdonnel-douglas-f/a-18-hornet/","summary":"\u003cp\u003eThe Fighter/Attack series is one most people are familiar with, and probably the most well-know set of aircraft the Unites States Navy and Air Force produce.  Unfortunately, the understood distinctions between each aircraft are not that well known.  Most commonly, all fighter aircraft are referred to as an F-16.  If you don\u0026rsquo;t believe me, just look up a few YouTube videos; you\u0026rsquo;ll be able to see variances in the details of the aircraft, but most of the videos are  will call the aircraft an F-16 \u0026hellip; it\u0026rsquo;s sad, really.\u003c/p\u003e","title":"McDonnel Douglas F/A-18 Hornet"},{"content":"Has there ever been a moment in your life in which you\u0026rsquo;ve seen something and your thought has been, \u0026ldquo;This is it \u0026hellip; I\u0026rsquo;m about to die.\u0026rdquo; Perhaps you\u0026rsquo;ve been out hiking and you\u0026rsquo;ve seen some form of wildlife. Maybe it\u0026rsquo;s been when you stood on the edge of a massive cliff (I felt this way when I went to the Grand Canyon). If you\u0026rsquo;re like Jess, it\u0026rsquo;s probably been when you\u0026rsquo;ve seen a spider.\nBut I don\u0026rsquo;t think anything could really prepare you for a real life confrontation with today\u0026rsquo;s aircraft: the Boeing AH-64 Apache helicopter.\nThe Lockheed AH-56 Cheyenne Think of the Cheyenne as the Apache\u0026rsquo;s older, fatter brother that ended up being a major disappointment, dropping out of college after the first month. When hope in the family business was lost with Big Brother Cheyenne, the parents turned to Boeing to save the day with brother Apache.\nIn 1966, the United States Army was in the market for a jet-assisted attack helicopter that, as a secondary goal beyond defensive escorts, could also dash ahead (up to 244mph) for an offensive front. Lockheed\u0026rsquo;s AH-56 was meant to be that helicopter. Unfortunately, after exceeding the budget, the weight, procuring too many technical difficulties for the Army\u0026rsquo;s taste, and more than one fatality during test flights, the Army cancelled their contract with Lockheed. Ten Cheyenne helicopters were completed during production—only four survived testing, three of which are on display at various museums.\nThe Apache Concept Unfortunately, the Army still needed a jet-assisted helicopter for armored air transportation. Solutions had been found to many of the technical difficulties the Cheyenne had experienced, but the program was already so over budget that Lockheed was not given the chance to embrace the fixes themselves. In a new bid, Boeing won production rights to a dual-engine attack helicopter; the dual engines resolved most of the stability issues the Cheyenne had. A more compact design (due partially in part to the dual engines) led to a lighter aircraft, which fulfilled the Army\u0026rsquo;s maximum weight requirements.\nWhat the Army really wanted was an aircraft like British Aerospace\u0026rsquo;s Harrier Jump Jet. Unfortunately, the Key West Agreement denies the Army the rights to own or produce its own fixed-wing aircraft. This may seem like a strange policy for a division of the Department of Defense to agree to, but it essentially separates the various types of aircraft owned by each division of the United States Military. The Air Force controls most of the fixed-wing aircraft, the National Guard and the Army own primarily helicopters, etc; it helps maintain division of roles. Anyway, their solution to a Harrier-like aircraft without mounting wings was a jet-assisted helicopter.\nThe Production and The Cost In 1976, four years after the Cheyenne program was cancelled, the concept for the AH-64 was approved. Two more units were produced, surpassing the Army\u0026rsquo;s desires for the aircraft, and in 1982, the AH-64 was approved for full production.\nThe initial production model was known as the AH-64A, a unit that cost $20 million to produce. In March of 1997, an upgraded version of the AH-64 was developed and called the AH-64D. This model featured improved sensory systems and enemy detection, superior armor plating, and a safer glass cockpit. With the improved sensory systems on the AH-64D comes the dome you see on the very top of some of the aircraft. This dome features advanced targeting technology and radar for targeting. The dome is elevated so far above the rest of the aircraft so the aircraft can be hiding behind a hill, but the radar targeting system can still lock onto an enemy and fire.\nThe unit cost of an AH-64D Apache today is about $18 million. At this time, nearly all AH-64As in existence have been upgraded to AH-64Ds. To this day, over 1,100 Apache attack helicopters have been developed and are used in action.\nOne cost the AH-64 Apache did not incur that the Cheyenne did was fatalities in testing. From the beginning, the Apache helicopter was always a much more stable and controlled design.\nThe Presence and The Sightings You\u0026rsquo;ll know when you see the AH-64 Apache. Most likely because you\u0026rsquo;ll suddenly find that your pants have been soiled and your legs are shaking involuntarily. Don\u0026rsquo;t believe me? After the AH-64As huge success in non-confrontational combat, the AH-64D was developed with a primary goal of taking advantage of the Apache\u0026rsquo;s terrifying facade and making it that much more so. During the Gulf War, only five years after the public release of the new attack helicopter, three Apache helicopters were deployed on a particular mission to help eradicate Iraqi troops. The moment the Apache helicopters arrived, as they rose over the horizon and came into the enemy troops\u0026rsquo; vision, 10,000 Iraqi troops threw down their weapons, fell to their knees, and lifted their arms in surrender; the helicopters never fired a single shot. Since only two crew members reside in each Apache helicopter, that means six soldiers successfully overthrew 10,000 hostile troops.\nOther ways to identify it are by its unusual length for a helicopter—or the fact that it\u0026rsquo;s a helicopter with twin jet engines, one mounted on either side. The Apache measures 58 feet in length, 16 feet in height, and has a 17 ft. \u0026ldquo;wing\u0026rdquo; span. The diameter of the rotors is 48 feet, making the rotor disc area 1,809 sq. ft. When loaded with an average capacity, the Apache weighs a little over 15,000 pounds. They can have up to two fuel tanks—one internal, one external— totaling over 8,000 pounds of fuel on takeoff. However, if the AH-64 is on a short-range attack mission, the external fuel tank can be swapped out for 16 Hellfire air-to-surface missiles or 76 70 mm rocket pods.\nWhich reminds me, an attack helicopter wouldn\u0026rsquo;t be very complete without its armaments. Boeing\u0026rsquo;s AH-64 is always equipped with one 30 mm chain cannon, which may host up to 1,200 rounds. Though this helicopter has no bombing capabilities, it can have any combination of the following air-to-surface missiles: AGM-114 Hellfire, AGM-122 Sidearm, or BGM-71 TOW. If an Apache confronts you, it may also be loaded with AIM-9 Sidewinder or AIM-92 Stinger air-to-air heat-seeking missiles. Finally, the AH-64 Apache can also carry 70 mm rocket pods, as mentioned above, as well as 127 mm rockets.\nOther than seeing an Apache attack helicopter at an air show, you may have seen a few make an appearance in the movie Fire Birds, a 1990 film starring Nicolas Cage as an Apache pilot. Transformers fan? The \u0026ldquo;Spinster\u0026rdquo; Transformer character morphs into an Apache attack helicopter. The AH-64 also makes appearances in the 1991 movie Toy Soldiers.\nThink the AH-64 is the sweetest helicopter around (like me)? Buy your own model or remote control version by following the Amazon links below:\n","permalink":"https://alexlaird.com/2011/06/boeing-ah-64-apache/","summary":"\u003cp\u003eHas there ever been a moment in your life in which you\u0026rsquo;ve seen something and your thought has been, \u0026ldquo;This is it \u0026hellip; I\u0026rsquo;m about to die.\u0026rdquo;  Perhaps you\u0026rsquo;ve been out hiking and you\u0026rsquo;ve seen some form of wildlife.  Maybe it\u0026rsquo;s been when you stood on the edge of a massive cliff (I felt this way when I went to the Grand Canyon).  If you\u0026rsquo;re like Jess, it\u0026rsquo;s probably been when you\u0026rsquo;ve seen a spider.\u003c/p\u003e","title":"Boeing AH-64 Apache"},{"content":"My brother and I have always had an obsession with airplanes, spacecraft, and NASA that borders on the unhealthy. Our obsessive endeavors have taken us annually to the Quad City Air Show, where we have drooled at our magnificent dreams hovering just before our eyes.\nThis year’s edition of the Quad City Air Show is just around the corner—June 18-19. And as a tribute to those momentous dates, I have decided to release a special on each of the aircraft that will (cross your fingers) be present or performing at the Quad City Air Show this year. Today\u0026rsquo;s installment is the Lockheed C-130 Hercules, an enormous transport aircraft built for the United States Air Force during the Korean War.\nThe Bid In the post-World War II era, The Korean War shed light on the fact that the current military transport aircraft were simply insufficient; their advancements simply hadn’t kept up with the aircraft and crew they were transporting. So in 1951, the United States Air Force put out a new General Operation Requirement for leading manufacturers to bid on.\nThe aircraft needed to be able to host any of the following: 92 passengers, 72 combat troops, or 64 paratroopers. It also needed five crew members to be operable. It had a requirement to be able house cargo in excess of 400 sq. ft. And it would be the first transport aircraft to host a rear-entry ramp—a ramp big enough to fit even the biggest military vehicles—a ramp that could be used for air drops.\nIn the running for the bid were the usual big-name airliners: Boeing, Douglas, Fairchild, Lockheed, and Northrop, just to name a few. Lockheed won the design bid and, ultimately, the contract to develop the plane, with their 130-page proposal for a quad-turboprop beast designed specifically for heavy cargo, long-range transportation, short-strip takeoffs from unprepared runways, and the amazing ability to still maintain altitude with one engine down.\nAfter being awarded the winning bid, but before signing the paperwork to accept the contract, a Lockheed engineer remarked to the project leads, “If you sign that letter, you will destroy the Lockheed Company.” The program was seen as a trivial pursuit for the Lockheed Company as the C-130 would be a defenseless transport aircraft and Lockheed was known for its more combatant pursuits. Even still, the contract was signed, and Lockheed promptly put 2,000 more units of its prototype into production.\nBecause I\u0026rsquo;m a fan of shameless plugs, though Lockheed was the primary contractor on the aircraft and built most of the visible components, the Heads Up Display (HUD), which is the majority of the control panel and radio communications within the cockpit of the aircraft, was developed by Rockwell Collins.\nThe Crew and The Payload The original C-130, as there have been many editions of the aircraft since then, required five crew members for flight operations: two pilots, one navigator, one flight engineer, and one loadmaster. The modern C-130 only requires three crew members.\nThe maximum possible weight of the C-130 is 42,000 pounds. An average payload during its lifetime is 36,000 pounds. The cargo of a C-130 may simply consist of palettes full of military or civilian supplies, or it may be carrying vehicles. For example, its cargo bay could carry up to three Humvees, or two M113 tanks (it could probably carry more space-wise, but each of these tanks weighs in at about 12 tons).\nThough the standard C-130 Hercules was bid primarily as a non-combatant cargo aircraft, it has been practically used for offensive attacks by means of its payload ramp. For instance, a low-altitude flyover with the payload ramp let out can easily lend to the dropping of an M551, a “light” tank (weighing in at 15 tons) designed with an air-drop in mind. The Hercules has also been used on some occasions to drop “daisy clutter” bombs from its easily accessible payload.\nThe Power The C-130 can be the host of 21 tons of cargo. It can drop a 15-ton tank directly out of its payload. It can hold enough fuel for not only itself, but also for an aircraft it may be meeting to refuel. And under this stress, how does the Hercules itself fair? Quite well, actually.\nWith an average payload weight, the Hercules can still travel just over 1,200 nautical miles. That’s nearly halfway across the United States. On the one hand, that may not seem very far considering it’s a cargo aircraft. On the other hand, it can make that trip in only a little over three hours, and it does it while carrying 21 tons of cargo, not including its own weight, which is itself nearly 38 tons. Think about that. That means that, at takeoff, the plain is lifting 77 tons, or 155,000 pounds, off the ground. To put that into perspective, the United States Department of Transportation does not allow a semi to weigh more than 40 tons. And the C-130 is doing nearly twice that. In the air.\nThe maximum speed of a fully loaded C-130 is 345-417mph, depending on the model. The aircraft has a 132 ft. wingspan, is 97 feet long, and stands nearly four stories (38 feet) high. The plane’s ceiling is safely at 28,000 feet, and the aircraft requires 3,290 feet of runway to takeoff and an absolute minimum of 1,500 feet to land. Carrying an average load, the plane can slow to the surprising speed of 115mph before stalling.\nThe Cost It’s really the reason you’ve been reading this long, isn’t it? You want to know what a plane like this costs. It depends on the model built. The C-130E cost $11.9 million to build, the H-series cost $30.1 million, and the C-130J costs $48.5 million, to name a few. Of all types, a total of 2,300 C-130s have been produced. If you’re like me, you’ll want to know what the cost of the entire fleet is. Unfortunately, there’s no simple calculation of these numbers that will lend to an accurate portrayal of that cost. Economic variances since the C-130 was first developed will lend to errors in this calculation. So we’ll just have to be satisfied to know that the biggest, most powerful, and most expensive C-130J costs something close to $50 million per unit.\nThe Sightings Ever been to an air show? More than one? Then you’ve probably seen the Blue Angels and their chubby companion, Fat Albert. Fat Albert is probably one of the most well-known C-130s, and he’s known most for his weight. At nearly every show, he lifts off using Jet-engine Assisted TakeOff, or JATO, to help him lift his overweight body off the ground.\nThe Lockheed C-130 Hercules is also seen in the movies The Green Berets (John Wayne fans?) and The Perfect Storm. In fact, the footage shown in The Perfect Storm is actually real life footage of National Guard HC-130P refueling a distressed HH-60 helicopter. And, of course, the plane that takes out that ugly scorpion at the beginning of Transformers was an AC-130, the combatant relative to the C-130.\nIf you live near an Air Force base, you’ve likely seen one of these freighters lifting into the sky. They’re easily identified by their immense presence, four five/six-blade propellers, elongated underbelly, huge tail fin, wings along the top of the plane (rather than through the mid-section), and slow maneuvering. As far as size goes, the Hercules is single most impressive aircraft in the world (save the Boeing C-17 of course).\n","permalink":"https://alexlaird.com/2011/06/lockheed-c-130-hercules/","summary":"\u003cp\u003eMy brother and I have always had an obsession with airplanes, spacecraft, and NASA that borders on the unhealthy.  Our obsessive endeavors have taken us annually to the Quad City Air Show, where we have drooled at our magnificent dreams hovering just before our eyes.\u003c/p\u003e\n\u003cp\u003eThis year’s edition of the Quad City Air Show is just around the corner—June 18-19.  And as a tribute to those momentous dates, I have decided to release a special on each of the aircraft that will (cross your fingers) be present or performing at the Quad City Air Show this year.  Today\u0026rsquo;s installment is the Lockheed C-130 Hercules, an enormous transport aircraft built for the United States Air Force during the Korean War.\u003c/p\u003e","title":"Lockheed C-130 Hercules"},{"content":"\nMusic, as defined by Webster, is \u0026ldquo;the science or art of ordering tones or sounds in succession, in combination, and in temporal relationships to produce a composition having unity and continuity.\u0026rdquo; This has come to be the generally accepted definition of music. However, Webster also defines music as, \u0026ldquo;An agreeable sound.\u0026rdquo; Sound, by its second definition, is \u0026ldquo;the sensation perceived by the sense of hearing.\u0026rdquo; To hear is to \u0026ldquo;Perceive or apprehend by ear,\u0026rdquo; or to \u0026ldquo;Gain knowledge by hearing.\u0026rdquo; Hearing is defined as, \u0026ldquo;The process, function, or power of perceiving sound.\u0026rdquo; The definition seems a bit circular when you look at it, but essentially music is what your ear perceives as a pleasant sound.\nIn a post modern sort of way, The Question of Music, Meaning, and Life Project aims to provide the listener with a deep, philosophical sound, or lack-thereof, with which they can meditate on the deeper philosophical questions of life.\nGet It! I have since lost the audio files for this project, but it\u0026rsquo;s worth reiterating they were a joke. All tracks files were either complete silence or static, and the real journey was meant to be the track descriptions left below.\nIt is imperative that you read the description of each track to fully understand and appreciate each song on the album.\nWhite Noise - 2:15 The Hows and Whys of What Led to Us - 3:31 Greenpeace - 2:51 I Made the Tree Fall in the Forest - 2:39 Song of the Deaf - 5:24 I’m the Reason Your Nose is Itching - 4:17 We Miss You, Pluto - 4:59 Triangle Sandwiches Taste Better Than Square Ones - 3:03 The Ultimate Answer to Life, the Universe, and Everything - 0:42 What Was the Best thing Before Sliced Bread? - 4:22 Dark Matter - 3:54 Male Thought Patterns - 0:01 Untitled - 3:13 [Hidden Track] - 10:50 Thank you for your support!\nThe Tracks White Noise - 2:15 Potentially one of the most controversial tracks on the album, White Noise refuses to live up to its name. The complete lack of artificial noise of any kind renders the possibility of white noise on the track impossible.\nCritics have argued that this track is not really worthy of the name White Noise, but the song was written deliberately to shatter the preconceptions of the avid listener. Alone, they will be sitting in their room, ready to hear a track full of White Noise, and they will be completely flabbergasted at the notion that there is no white noise on this track!\nIndeed, it seems that the sibling track to White Noise would have to be [Hidden Track], the only track on the entire album which actually articulates some sort of waveform. [Hidden Track] portrays the components that White Noise is lacking, but the average listener will never hear it.\nBack to top\nThe Hows and Whys of What Led to Us - 3:31 In each relationship there is a beginning and an end. The beginning is beautiful, the end is painful and there are peaks and falls all throughout. It is impossible for those who once loved each other to articulate, once the relationship has ended, exactly what drew them to their former partner in the first place. Hurt feelings, raw emotions and healing hearts require just one thing:\nSilence.\nBack to top\nGreenpeace - 2:51 Green.\nPeace.\nBack to top\nI Made the Tree Fall in the Forest - 2:39 This is no laughing matter. If a tree falls in the forest, and there is no one there to hear it, does it make a sound?\nPresumably no, by the definition of sound. For a sound is the vibration of matter as perceived by hearing. If there is no one there to hear it, no sound can be made, because hearing is part of the definition of a sound. However, hearing is not only done by humans. Hearing is done by animals and all other creatures of creation as well. The chances of there being absolutely nothing around to apprehend the noise vibrations is extremely unlikely.\nHowever the question does suggest that there is no one present to hear it. Since the definition of hearing is circular, perceiving sound through the ear, we can be most certain that a sound is not actually made by the tree falling in the forest with no one around to heart it.\nThis track was written in loving memory of the numerous trees who have given their lives to prove this point.\nBack to top\nSong of the Deaf - 5:24 Many people misunderstand this track, assuming it’s silent because deaf people can’t talk. What these people fail to realize is that deaf people actually may be able to talk, they just certainly can’t hear. Dumb people, or their more appeasing title of mute people, are the ones who are unable to speak.\nThis track is meant to speak directly to deaf people, moving their very soul. Written and performed with the utmost concern for them, this track shows empathy towards them, understanding their inability to hear by intentionally giving them nothing to hear at all. Rather than smacking them in the face with audible sounds and vibrations as if to say, \u0026ldquo;Ha! You can’t hear this!\u0026rdquo; the artist chooses to recognize them and give them what they can hear.\nSilence.\nBack to top\nI’m the Reason Your Nose is Itching - 4:17 There\u0026rsquo;s the old urban legend that if your nose is itching, someone is thinking about you. Is your nose itching right now? It should be. But have you ever stopped to think about the screaming silence of an itch? An itch invokes the sense of feeling and, if from an open sore, potentially even the sense of smelling. It’s likely one could look at the area in need of scratching, by crossing your eyes in the case of your nose, and you could even lick an itch, if you really wanted to. But there’s absolutely no way to hear an itch.\nThink about it. It’s an emotional attachment to the one who loves you; an understanding simply through the sense of feeling, but they aren’t even present to be touching you. It takes a true, deep love to be able to affect someone so deeply through the senses without even being present.\nThis track is a dedication to that love; a silent love that can only be understood by the one who’s nose is itching, silently.\nBack to top\nWe Miss You, Pluto - 4:59 Poor Pluto has been the victim of much criticism, simply due to its small stature. Pluto was discovered and considered a planet up until the year 2006, at which point so much controversy was stirred over the planet that scientists finally created an entirely new subset of planets known as dwarf planets. Officially, Pluto was placed in this category, but we still think of Pluto as a planet.\nBy far the most saddening and even disturbing fact of all this is that people seem to be forgetting that planets have feelings too. Calling Pluto a dwarf planet may permanently damage its self image! Did anyone ever stop to think about that?\nSo, Pluto, here’s to you … A moment of silence in commemoration of when you were a planet. We still think of you as a planet.\nBack to top\nTriangle Sandwiches Taste Better Than Square Ones - 3:03 The mindset that all sandwiches are created equal is a fallacy of life that far too many people are sucked into.\nYou say that a sandwich is a sandwich, no matter which way it is cut, but that is simply untrue. For, in fact, the taste of a sandwich may be perceived by one as better if it is cut differently. One of the definitions of taste being \u0026ldquo;to appreciate or enjoy,\u0026rdquo; one may appreciate or enjoy a sandwich more if it is cut triangularly, thus rending the sandwich a better tasting one than had it been cut squarely.\nIn fact, this is most commonly the case, as numerous accounts of triangularly cut sandwiches tasting better then squarely cut ones have emerged all over the globe. While it may be a matter of your taste as to whether or not the triangle sandwich is better or not, it is more likely that you simply are one of those who wishes to go against the trends of everyone, therefore your mind is refusing to allow you to enjoy the superior taste of the triangularly cut sandwich. We pray for you.\nThis track is dedicated to all the triangle sandwiches that are eaten by people who refuse to admit they taste better. Don’t worry, Sandwich. You do.\nBack to top\nThe Ultimate Answer to Life, the Universe, and Everything - 0:42 The track doesn\u0026rsquo;t lie. It does, in fact, hold the answer to life, the Universe, and everything within it, though the amateur listener may not notice. (At least, according to The Hitchhiker\u0026rsquo;s Guide to the Galaxy.)\nThe track length is forty-two seconds. Digitally, the hexadecimal representation of the background for the Track Artwork is #2A2A2A. The hexadecimal color was chosen purposefully setting RGB to (42, 42, 42), which resulted in the aforementioned hexadecimal color.\nThere was much debate about whether it was more appropriate to start with RGB: (42, 42, 42) and convert to the hexadecimal representation, which is HEX: #2A2A2A, or whether the hexadecimal color should be set to #424242 to be converted to RGB, which is RGB: (66, 66, 66). After lengthy meetings and phone conferences that no one wanted to attend, the decision was finally made to start with the RGB color and convert to hexadecimal. The final decision was made due to a convincing argument pointing out that the RGB representation of #424242 was a string of sixes, which is frowned upon in most cultures due to its close association with the anti-Christ.\nBack to top\nWhat Was the Best Thing Before Sliced Bread? - 4:22 Or, more specifically, when was sliced bread invented, and by whom?\nThe story is very near and dear to the artist\u0026rsquo;s heart. Sliced bread was essentially invented by Otto Frederick Rohwedder of Davenport, IA. Alex Laird is also from Iowa and enjoys freshly sliced bread each morning. Rohwedder built a prototype for the first bread slicer in 1917, thus rending bread now sliceable. The prototype was destroyed in a supposedly accidental fire.\nWhat many people don\u0026rsquo;t know is the controversies that have been had over whether slicing bread should be legal or not. In the mid-1900s, street riots broke out frequently simply as a result of arguments of bread slicing, how it should be done, and whether it was ethical. In fact, in 1943, the U.S. put a ban on sliced bread for a short period of time, but the response to this ban was so great that it was soon lifted. This is why the fire destroying Rohwedder\u0026rsquo;s bread slicer is frequently considered intentional. It wasn\u0026rsquo;t until the 60s, when peace and love were spreading rampantly, that Americans decided bread should be able to be sliced if people wanted to slice it.\nThis track contrasts the violent and noisy acts of bread-slicing lovers throughout the years who have fought to keep the slicing legal and remembers their courageous actions.\nBack to top\nDark Matter - 3:54 Perhaps one of the most profoundly titled tracks on the album, Dark Matter dares to attempt to give us a glimpse at dark matter itself. (The dark matter being the things in the universe that cannot be seen but their presence can be felt under given circumstances.) Scientists estimate that about 90% of all matter within a given galaxy is dark matter.\nWhy is this song called Dark Matter? Listen to its silence, absorbing everything around you, meditating specifically on the infiniteness of the universe and the eternity of life after death. Are the hairs on the back of your neck standing up? Is your heart suddenly getting all flippy and floaty? Those are the forces of the universe around you that remain unseen, and this track caused it.\nBack to top\nMale Thought Patterns - 0:01 Males don\u0026rsquo;t need to be diagnosed with ADHD, because they all already have it. A male’s thought patterns are disjointed from one another, rarely flowing in a fluid manner. Short and to the point, just like the length and message of this track.\nBack to top\nUntitled - 3:13 In view of the popular cultures, which currently seems to be craving untitled tracks that precede hidden tracks, the artist includes this track as a nod toward his fellow artists who seem to have slumped into the kitsch of music and sound.\nBack to top\n[Hidden Track] - 10:50 By far the most moving piece on The Question of Music, Meaning, and Life, [Hidden Track] is the only track to actually feature audible waveforms. Specifically, white noise. In fact, [Hidden Track] is the sibling track to White Noise, a controversial silent track that offers no white noise.\nWhile the general theme of The Question of Music, Meaning, and Life is to contradict all musical norms by going against what is expected, the artist chose to close off the album by following two stereotypes of a mainstream album: firstly, a track which is simply titled Untitled, and secondly, a hidden track which plays after several minutes of silence.\nMost shockingly, [Hidden Track] is the only track on the album that actually delivers noise to the listener. This was done intentionally as a final emotional movement to the album in which, after pulling moving the listener emotionally for all the previous, the artist finally gives them what their heart is so longing for: a sound.\nBack to top\n","permalink":"https://alexlaird.com/2011/05/the-question-project/","summary":"\u003cp\u003e\u003cspan id=\"top\"\u003e\u003c/span\u003e\u003c/p\u003e\n\u003cp\u003eMusic, as defined by Webster, is \u0026ldquo;the science or art of ordering tones or sounds in succession, in combination, and in temporal relationships to produce a composition having unity and continuity.\u0026rdquo; This has come to be the generally accepted definition of music. However, Webster also defines music as, \u0026ldquo;An agreeable sound.\u0026rdquo; Sound, by its second definition, is \u0026ldquo;the sensation perceived by the sense of hearing.\u0026rdquo; To hear is to \u0026ldquo;Perceive or apprehend by ear,\u0026rdquo; or to \u0026ldquo;Gain knowledge by hearing.\u0026rdquo; Hearing is defined as, \u0026ldquo;The process, function, or power of perceiving sound.\u0026rdquo; The definition seems a bit circular when you look at it, but essentially music is what your ear perceives as a pleasant sound.\u003c/p\u003e","title":"The Question Project"},{"content":"For as long as I\u0026rsquo;ve been developing in Java, its lack of native support for OS X has always bothered me. This is more than likely an issue with Apple\u0026rsquo;s proprietary interface rather than Java, but, for the sake of being loyal to my Master, we\u0026rsquo;ll pretend the fault is on Java.\nI don\u0026rsquo;t want the default Java icon\u0026ndash;I want my applications icon to appear in the dock! And why does setTitle not actually change the name of my program in the menu bar? It still remains the name of the Java package that the main () method is contained within. I don\u0026rsquo;t want people to know the package layout of my software.\nOf course, Apple\u0026rsquo;s \u0026ldquo;solution\u0026rdquo; to this is contained within Xcode \u0026hellip; Just make an .app wrapper for your application! Native dock icon, native dock name. But then that\u0026rsquo;s just the problem\u0026ndash;the application now appears to be native and is no longer portable. There has to a better solution \u0026hellip;\nWell, there isn\u0026rsquo;t. There\u0026rsquo;s no real solution to this problem, but I can offer you a slight hack that works for the dock icon and name, at least. Unfortunately, it only works for the dock icon, and the actual application icon in Finder will still remain the Java default.\nFirst, we\u0026rsquo;ll look at the snippet of code that allows you to change the dock icon \u0026hellip;\ncom.apple.eawt.Application macApp = com.apple.eawt.Application.getApplication(); macApp.setDockIconImage (new ImageIcon (getClass (). getResource (\u0026#34;/path/to/package/icon.png\u0026#34;)). getImage ()); You\u0026rsquo;ll find that there are actually quite a few cool things you can do to the dock from inside the Application class. Unfortunately, none of them are changing the dock name of your Java application. You\u0026rsquo;ll also notice that, while your program now compiles and runs beautifully on OS X, it is broken everywhere else \u0026hellip; Apparently com.apple.eawt is a missing package on anything but OS X. What happened to portability?\nNever fear. Apple has been kind enough to give us stubs that can still be called (and ignored) from platforms other than OS X. You\u0026rsquo;ll need to include the stubs JAR in your project for your application to be able to compile and run on other platforms again.\nDownload AppleJavaExtensions\nOkay, so what about the OS X dock name then? Sadly, there\u0026rsquo;s no good solution to that. Here\u0026rsquo;s the best work-around that I\u0026rsquo;ve found\u0026ndash;put your main () in a class by itself in your applications default package. I know, the default package is evil \u0026hellip; That\u0026rsquo;s why the first and only thing you\u0026rsquo;ll do is call JFrame.setVisible () from within this function.\nThis does mean that, as far as the menu bar is concerned, your application title cannot have any spaces. It will be the exact name of the class your main function is in, so, for instance, Get Organized shows up as GetOrganized. My GetOrganized class immediately launches MainFrame from deeper within the package system, but the average user no longer has to see the package layout.\nA lousy work-around? Definitely. But it\u0026rsquo;s all they\u0026rsquo;re giving us. And considering Apple seems to hate Java as of late, I doubt they\u0026rsquo;ll ever give us anything more.\n","permalink":"https://alexlaird.com/2011/02/java-os-x-dock-icon-and-name/","summary":"\u003cp\u003eFor as long as I\u0026rsquo;ve been developing in Java, its lack of native support for OS X has always bothered me. This is more than likely an issue with Apple\u0026rsquo;s proprietary interface rather than Java, but, for the sake of being loyal to my Master, we\u0026rsquo;ll pretend the fault is on Java.\u003c/p\u003e\n\u003cp\u003eI don\u0026rsquo;t want the default Java icon\u0026ndash;I want my applications icon to appear in the dock! And why does setTitle not actually change the name of my program in the menu bar? It still remains the name of the Java package that the main () method is contained within. I don\u0026rsquo;t want people to know the package layout of my software.\u003c/p\u003e","title":"Java: OS X Dock Icon and Name"},{"content":"After hours of frustration and failure, I finally set up a USB bootable Linux distribution that worked on both a BIOS-based PC or EFI-based Apple system. Ten minutes later, I repeated the process with a second distribution.\nI’ve been perusing this fine internet of hours all day, reviewing and attempting to complete step-by-step tutorials that were supposed to allow me to do this. Unfortunately, none of them would actually work on my MacBook Pro, as they promised they would. After finally acquiring a resolution, I decided to post my own step-by-step set of instructions that also claimed to work for a BIOS system or an EFI system. Hopefully it actually works for you as it did for me :).\nMy System, My Recommendation, and My Disclaimer The systems I was trying to get this work was in conjunction with my out dated, 2008, 2 GHz Intel Core Duo MacBook Pro with a measly 2GB of 667 MHz DDR2 SDRAM. I dual boot between OS X Leopard and Windows 7 using Boot Camp. I plug into a 24” Samsung display and use a Bluetooth Logitech MX 5500 keyboard and mouse set at my desk. Using Slax, all of this was compatible and immediately recognized!! I had absolutely no problems with hardware, so I highly recommend using Slax as your portable Linux distribution. I had success with DSL after initial frustrations (the track pad is not recognized, so I was forced to plug a USB mouse in), and it’s simply not as clean or power of a system as Slax is.\nDoing all of this in no way effected positively or negatively the booting, reliability or functionality of OS X Leopard or Windows 7 on my system or Windows XP on any of the BIOS-based systems I ran this on. However, as always, proceed at your own risk.\nI recommend the 4GB flash drive from Amazon below, as it is cheap and reliable. Though you don\u0026rsquo;t need a full 4GB flash drive, if you ever want to throw a larger distribution of Linux onto the flash drive at any time, or if you\u0026rsquo;d like to use the drive for other storage at a later date, this is a good size and a great price. Also \u0026hellip; it\u0026rsquo;s hard to find a smaller drive than 4GB these days!\nSetting Up an EFI System Boot into Mac OS and follow these steps:\nDownload and install rEFIt. Restart your computer. Complicated, huh? The initial restart after installing rEFIt will not show a boot loader, but all following restarts will display a boot loader if multiple bootable systems are attached to your Apple computer or other EFI-based system.\nrEFIt will essentially overtake Boot Camp. Before installing rEFIt on my system, when I wanted to boot into Windows 7 I had to hold down the Alt-Option key when booting. Once rEFIt is installed, the boot menu is shown whenever the computer is booted. After a given number of seconds, it will boot into the default operating system, which is usually OS X.\nSetting Up a BIOS System Your BIOS must support the ability to boot from a USB drive. Follow these instructions on a BIOS-based (any standard Windows-based) computer:\nRestart your computer. At some point your computer will inform you that you can press some key to enter the BIOS setup (probably some key like F8, F12, or Del). Hold that key down. If you miss it, restart and try again. Unfortunately, every computer is different in the BIOS menu setup. Do not change anything you are unfamiliar. You may need to enable the ability to boot from a USB drive. You will most likely need to change the boot sequence, moving your USB drive higher than your standard HDD. Make sure that you save your changes to the BIOS before restarting. Setting Up Your USB Drive NOTE: Generally speaking, the instructions given on a portable Linux distribution’s website will tell you to run some bootinst.bat file that will configure your USB drive to boot properly. This will work for most BIOS-based systems, and may work with some distributions on some EFI systems, but it generally would not work for me. The solution given below, theoretically, works on all systems.\nIn a Windows environment (it’s just easiest that way, trust me), follow these steps:\nDownload and extract Syslinux. Since we’re in Windows, it’d be most beneficial to download the zip file. Extract it to a convenient location like C:\\Syslinux. Download your favorite portable Linux distribution. It has been verified that this works with DSL (I can’t spell it out \u0026hellip; My Mom reads this!), DSL-N, and Slax. Plug your USB drive into your computer. Backup any data on the USB drive you wish to keep! Right-click on the USB drive and select “Format.” Format the drive to either FAT-16 or FAT-32. I recommend FAT-32. A quick format will be fine. Extract the contents of your favorite portable Linux distribution onto your USB drive using your favorite decompression program. In Windows XP, click Start then Run, type “cmd,” then press Enter. In Windows Vista or Windows 7, click Start and simply type “cmd.” Click on the Command Prompt icon to launch it. From the Command Prompt, navigate to the win32 folder of where you extracted Syslinux. So, in my case, type “cd C:\\Syslinux\\win32\\”. From the win32 folder of Syslinux, type “syslinux.exe -ma :” where is replaced with the drive letter of your USB drive. Most commonly this will be E or F (it does need to be followed by a colon), but you can verify this by checking in My Computer. Assuming you don’t receive any errors, your USB drive should now be set up for booting. Conclusion In theory, you should now be able restart your system and it will notice that you have a bootable USB drive in the computer (assuming, of course, that you do). If rEFIt opens, use the arrow keys to navigate to your USB drive and press Enter. If your on a BIOS system, you may need to press a key (if it tells you to press a key for the boot menu), but most likely it will pop up with a message telling you to press any key to boot Linux. If you don’t press any key, it may continue into your standard operating system, so you’ll want to strike that Enter key.\nI hope this works as well for all of you as it did for me! It’s always handy to have a portable, friendly, and compatible version of Linux in your slacks that you can whip out and use anytime, on any computer.\n","permalink":"https://alexlaird.com/2009/09/booting-linux-from-a-usb-drive-on-apple-hardware/","summary":"\u003cp\u003eAfter hours of frustration and failure, I finally set up a USB bootable Linux distribution that worked on both a BIOS-based PC or EFI-based Apple system. Ten minutes later, I repeated the process with a second distribution.\u003c/p\u003e\n\u003cp\u003eI’ve been perusing this fine internet of hours all day, reviewing and attempting to complete step-by-step tutorials that were supposed to allow me to do this. Unfortunately, none of them would actually work on my MacBook Pro, as they promised they would. After finally acquiring a resolution, I decided to post my own step-by-step set of instructions that also claimed to work for a BIOS system or an EFI system. Hopefully it actually works for you as it did for me :).\u003c/p\u003e","title":"Booting Linux from a USB Drive on Apple Hardware"},{"content":"Joe Kmetz and I were on our way to Krista’s house over Turkey Break and I had designated Joe as the DJ for the trip. At some point during the drive we ended up listening to “Hotel California,” probably the best song the Eagles ever wrote and performed. This spawned a discussion as to the meaning of the song. Unfortunately, neither of us knew for sure, but I promised Joe I would investigate the song as soon as I had time.\nThough you can play “Hotel California” on Guitar Hero by yourself and sound surprisingly similar to the original track, there’s nothing realistic about that. On the Hell Freezes Over album, the Eagles used eight guitars to perform this song. In the original studio mix, only five were used. Still, this should give you some measure of the caliber of this song. It is an amazing piece for guitar, and I never tire of listening to it.\nMusical melodies aside, the lyrics of the song span quite a bit of controversies. The interpretations of this song range from the drug use, cannibalism, Hotel California being another name for the Camarillo State Hospital (a psychiatric hospital), to devil worship and the Church of Satan.\nI’m going to have to go ahead and debunk all the most popular rumors, as none of them are even remotely close to being true (except possibly the drug use one, though indirectly). Let’s lay out the most popular rumors and look at why they aren’t true. For your convenience, you can find the lyrics to the song here and you can listen to the song here.\nBackground on the Eagles The Eagles are one of the most successful American rock bands of the 1970s. The Eagles were founded in the early 70s in Los Angeles, California, by Glenn Frey (singer, guitarist, songwriter), Don Henley (singer, guitarist, drummer, songwriter), Randy Meisner (singer, bassist, songwriter), and Bernie Leadon (singer, guitarist). It’s also worth mentioning the former member Don Felder (singer, guitarist, songwriter), as he helped write “Hotel California” and performed part of the guitar solo. The band has five number-one singles and six number-one albums so far. Their fifth album was Hotel California.\n“Hotel California” is a song by the Eagles on the rock album of the same name, Hotel California, released in 1976. The theme of the whole album is essentially that of Manifest Destiny and the American Dream and the rise and falls in-thereof. The album isn’t exactly a rock opera, but it does seem to follow a common theme: it starts with “Hotel California” and comes to a culmination with “The Last Resort,” a song that narrates the demise of society as the conclusive warning to the theme of the album.\nAfter its release, Hotel California received a Grammy for Record of the Year in 1978, the song has been considered by Rolling Stone to be the 49th greatest song of all time, and Guitar World Magazine ranked the guitar solo as the 8th greatest of all time. “Hotel California” reached 20th on the Billboard Top 100 in 1977.\nIt’s a Real Hotel It turns out there’s a real hotel in California! A few of them, actually. Unfortunately, there is no hotel in California that goes under the name of Hotel California. There is, however, a hotel in Todos Santos, Mexico, just across the border, that goes by the name of Hotel California. The hotel also went under the name of The Hotel Mission (“I heard the Mission bell”). The name of the hotel changed several times after the popularity of the song grew so as to attract tourists. The problem is the Eagles never actually stayed there, and that location is not what the song is referring to.\nIt’s an Insane Asylum “Next thing I remember / I was running for the door / I had to find the passage back / To the place I was before / “Relax,” said the night man / “We are programmed to receive / You can check out any time you like / But you can never leave.”\nPeople who believe this rumor may simply be getting confused by the fact that the Eagles’s record company for the album before Hotel California was Asylum Records. The song isn’t actually about an insane asylum; there is no asylum anywhere in California or even the entire United States by the name of Hotel California.\nSome still insist that the Hotel California is a nickname for the Camarillo State Hospital in Camarillo, California. But since the Eagles said in an interview in 1995 that it wasn’t in reference to a particular location, and since it wouldn’t really make much sense to take the pictures for the album artwork at the Beverly Hills Hotel if the song were really about the Camarillo State Hospital, the song probably isn’t in reference to an insane asylum. Though the imagery in the song does seem to describe states of insanity at times.\nIt’s a Hospital Still, people insist that the Hotel California must be a real building somewhere, so they conjecture that perhaps it is a hospital somewhere. The rumor further claims that the song is actually about cancer.\n“My head grew heavy and my site grew dim.” It could be a reference to the pains of the cancer that is evidently killing the body. “There she stood in the doorway” is alleged to be a reference to a nurse, and “And she showed me the way / There were voices down the corridor” is the nurse leading him down the hallways of the hospital, other cancer patients calling out to the narrator as he walks by. “They stab it with their Steely knives / But they just can’t kill the beast” could be a reference to repeated attempts to kill the cancer.\nThe song could be a metaphor for cancer, if you chose to interpret that way, but that wasn’t the intention when it was written.\nIt’s About Steely Dan The line “They stab it with their Steely knives / But they just can’t kill the beast” is a reference to Steely Dan, an American rock band that had a healthy competition with the Eagles around the time Hotel California came out.\nThe Eagles were apparently impressed by the fact that Steely Dan didn’t require any rhyme or reason to the meaning in the lyrics of their song. The Eagles decided it would be pretty sweet to mention Steely Dan in their song, even though the rest of the song has absolutely nothing to do with them. Steely Dan had previously mention the Eagles in their song Everything You Did with the line “Turn up the Eagles the neighbors are listening” in 1976.\nIt’s About Cannibalism Apparently the references to a secluded hotel with corridors and hallways that were an endless maze that entrapped anyone who entered reminded too many people of H. H. Holmes and the Murder Castle. I guess he didn’t eat his guests, but his story probably set people up for paranoia.\nOne theory that got spread around via chain mail muses that the reason “You can check out anytime you like / But you can never leave” is because the only way to truly leave is to be stabbed by those “Steely knives!” Apparently the hotel in the distance enticed you only to serve you up for dinner the following day. There’s really not much evidence of this in the song, and the band members have denied it.\nIt’s About the Church of Satan Probably the most well known (and most misunderstood) meaning for the song says that it is a reference to devil worship and the Church of Satan. Such lines as “I was thinking to myself / This could be Heaven or this could be Hell,” “We haven’t had that spirit here / Since nineteen sixty-nine,” “\u0026hellip; they just can’t kill the beast,” and “You can check out anytime you like / But you can never leave” apparently solidify this claim. Additionally, the album artwork has a bit of an eerie feel, and people claim that the photographs were taken at the same place where the Satanic Bible was written. “The Beast” referred to in the song is alleged to be Satan.\nAnton LeVay finished the Satanic Bible in 1969, three years after founding his church. Supposedly ever since the bible was finished the Holy Spirit hasn’t been present at the Satanic Church (as if he was before?) and that’s what the line in the song is referencing. This claim falls short when you recognize that the line directly before this clarifies a reference to the spirit of wine, not the Holy Spirit. Additionally, once you join the occult you are apparently unable to get out. Considering the previous claims fall short, I’m going to entertain the thought that “the beast” must be a metaphorical character referring to something other than Satan.\nThe artwork for the album was actually shot at the Beverly Hills Hotel in Beverly Hills. The Eagles say that the reason for the shadowy figures is due to poor lighting and a poor camera. The ghostly figure in the window who many claim is supposed to be either Satan himself or Anton LaVey is actually a publicity guy from Asylum Records. Any physical similarities to LaVey or the Devil himself are purely coincidental.\nFurther claims state that the Hotel California is a reference to a hotel on California St. in San Francisco which the Church of Satan purchased and converted into their headquarters. The building in question was called The Black House and was actually an old Victorian mansion, not a hotel. It was the headquarters for the Church of Satan used by Anton LaVey in 1966 until his death in 1997. The Satanic Church lost custody of the house after LaVey’s death, and it was torn down in 2001.\nIt is also rumored that the Eagles were members of the Church of Satan and that they were disciples of LeVay. While a very unreliable source claims that the Waco Tribune-Herald interview Larry Salter, the Eagle’s manager, and he admitted that the Eagle’s were involved with the Church of Satan, the interview was apparently back in 1982 and the original can’t be found \u0026hellip;\nThen there’s that whole bit about playing the song backward to hear a satanic message. That’s a bit of a stretch. Especially considering sites like that try to say the same thing about Metallica, Megadeath, and Kiss songs and, let’s be honest, you don’t need to play those songs backward to hear a Satanic message. Anyway, if you listen to the entire song backward yourself, you’ll find that it’s quite bogus.\nSome have said that the Church of Satan is registered in California under the name “Hotel California,” but there is absolutely no evidence to support this claim.\nIt’s about Sex and Drugs “Warm smell of Colitas / Rising up through the air” “I saw a shimmering light” “There she stood in the doorway / I heard the mission bell / I was thinking to myself / This could be Heaven or this could be Hell. / Then she lit up a candle / And she showed me the way” “She got a lot of pretty, pretty boys / That she calls friends / How they dance in the courtyard / Sweet summer sweat / Some dance to remember / Some dance to forget” “And still the voices are calling from far away / Wake you up in the middle of the night” “Mirrors on the ceiling / Pink champagne on ice / And she said, ‘We are all just prisoners here / Of our own device’” “You can check out anytime you like / But you can never leave”\nThis theory has the most overwhelming amount of evidence straight out of the song, and it’s also closest to the true meaning.\nProbably the most explicit reference in the song is that of Colitas, a Spanish term meaning “little tails,” which could be a reference to the Cannabis plant (marijuana). The rest of the imagery in the song is a very strong implication that the narrator may not be entirely sane (or lucid) while he’s telling us his tale. A shimmering light and a vision of a hotel? Voices echoing down the hallways? Mirrors on the ceiling (seeing many things from many angles, which would happen when you hallucinate)?\nIt’s usually said that the song is warning against the use of drugs, given it’s generally negative view towards the subject, especially considering the narrators regret that he can’t seem to get out of the lifestyle he has become trapped in.\nSo What’s it Really About? And now we come to the true meaning of this song, which is only slightly disappointing after reading all the wild previous possibilities!\nWell, Henley and Frey claim that Colitas is a desert flower that smells good. Well, it may very well be a desert flower, but it’s still most likely slang for Cannabis. In their defense, I did read somewhere that a Mexican translated the words “little bud” to “Colitas” for them, neglecting to mention the marijuana reference, so they may not have completely understood what they were saying.\nThat being said, they explained in an interview in 1995 that the song is about the dangers of hedonism and greed, specifically as it applies to the American Dream and their own achieving fame and fortune in the worlds eyes. They wanted to warn not only California of this, but the entire nation. Unfortunately, due to a poor choice in the title of both the song and the album, it’s most commonly only associated with the Californian mindset.\nIt’s not a reference to any type of building, it’s not about cannibalism, and it’s not about the Church of Satan. The Steely Dan reference was, in fact, true. The song was the Eagles’ look back at their own lives, realizing how they had become caught up in the famous lifestyle (“Her mind is Tiffany-twisted / She got a Mercedes-Benz”), a lifestyle which has trapped them and isn’t turning out to be everything they had wanted (“We are all just prisoners here / Of our own device,” “You can check out anytime you like / But you can never leave”).\nIt makes sense if you consider that the song is the first on the album that addresses the issues of drugs, temptation, fame, relationships, and the American Dream.\nThere you have it! That’s the true meaning of the song Hotel California. I’m glad we had this discussion. I was sick of hearing comparisons to the Church of Satan.\n","permalink":"https://alexlaird.com/2008/12/hotel-california/","summary":"\u003cp\u003eJoe Kmetz and I were on our way to Krista’s house over Turkey Break and I had designated Joe as the DJ for the trip. At some point during the drive we ended up listening to “Hotel California,” probably the best song the Eagles ever wrote and performed. This spawned a discussion as to the meaning of the song. Unfortunately, neither of us knew for sure, but I promised Joe I would investigate the song as soon as I had time.\u003c/p\u003e","title":"Hotel California"},{"content":"After viewing a few John Cage videos on YouTube (like this one, this one, and possibly this one), I thought to myself, “What the heck \u0026hellip; I could write this crap.” And so, using his song 4’33” as my deepest inspiration, I proceeded to do just that. In fact, I made an entire album, with philosophical song explanations and artwork to go along with it.\nIf you’re going to download the album, just realize that it probably won’t actually make much sense unless you read the liner notes (which are only provided on the website at the link below). If you don’t read those, you will basically miss the point of this project.\nPeople make money off this stuff. I just do it for fun. I apologize if you actually like John Cage, but that is not music. The following is meant for satirical purposes and not meant to be taken seriously \u0026hellip; At all.\nThe Question of Music, Meaning, and Life Project ","permalink":"https://alexlaird.com/2008/11/the-question-of-music-meaning-and-life-project/","summary":"\u003cp\u003eAfter viewing a few John Cage videos on YouTube (like \u003ca href=\"http://www.youtube.com/watch?v=hUJagb7hL0E\" title=\"John Cage - 4'33\u0026quot;\"\u003ethis one\u003c/a\u003e, \u003ca href=\"http://www.youtube.com/watch?v=VYsx5Di3bso\" title=\"John Cage - Sonata V\"\u003ethis one\u003c/a\u003e, and possibly \u003ca href=\"http://www.youtube.com/watch?v=CVN_mxVntXk\" title=\"John Cage - Imaginary Landscape No. 1\"\u003ethis one\u003c/a\u003e), I thought to myself, “What the heck \u0026hellip; \u003cem\u003eI\u003c/em\u003e could write this crap.” And so, using his song 4’33” as my deepest inspiration, I proceeded to do just that. In fact, I made an entire album, with philosophical song explanations and artwork to go along with it.\u003c/p\u003e","title":"The Question of Music, Meaning, and Life Project"},{"content":"I was never really good at Chemistry. Better at it than at Biology, but still not exceptional. Granted, I earned an A when I took Chemistry in college, but this was from Kirkwood, which doesn’t have the highest academic prestige, so the A was easily achieved without completely understanding the material. The same goes for Biology. That being said, I may not have the fullest understanding of acids and bases and things breaking down. (In fact, if the previous sentence really makes no sense, that’s probably why. I was just trying to throw the words out to sound intelligent.)\nI’m also the type of person that, if you tell me to do something (you don’t even have to dare me, really) and it’s not against my morals and is unlikely to cause a fatality, I’ll probably do it. I’m always up for checking off experiences from my “Things To Do Before I Die” list. That certainly explains my black nails right now.\nLast night, we celebrated the Finnish holiday of Pyhäinpäivä (PUH-HAH-IN-PIE-VAH). The American equivalent would be All Saints’ Day, but while All Saints’ Day is always on November 1st, Pyhäinpäivä is on the first Saturday between October 31st and November 6th. Now, I know what you’re thinking. Last night wasn’t Saturday. That\u0026rsquo;s very perceptive of you. We just realized this morning that Griffin actually gave us the wrong day to celebrated the beloved holiday of our ancestors, but we will try to forgive him. At any rate, since we didn’t get to celebrate Pyhäinpäivä last Saturday, we decided to celebrate it last night, the 6th, by watching The Office and performing several Finnish traditions with a large group of people.\nIt was a fantastic turnout. We had seventeen people show up to a celebration that they had never even heard of. During the commercial breaks of The Office, we muted the volume and partook together in the completely made up Finnish festivities that Dave, Gabe, and myself had thought up and planned just an hour before the party started. Such festivities included, but were not limited to the following:\nAs is custom, the host must advise all invited guests to bring their own eggs. At the celebration of Pyhäinpäivä, all guests must laugh at anyone who actually brings their own eggs. This ceremony is in commemoration of King Albert’s (of Mecklenburg) practice of sending out edicts via carrier chicken. The oldest male must eat a cotton ball in memory of our ancestors that, in the Finnish blight of 1728, had to ingest their bedding and pillows to survive. All guests must pass the flaming grease cup. This symbolizes the flame of unity and also reminds us of an old Finnish legend in which a crew of sailors were caught at sea during a long December. The crew was forced to burn their stores of bacon and butter for warmth to survive and was able to outlast the winter. The cup of grease must be passed counterclockwise, each person saying to the person to their right what they would give them for Christmas, if they could give them anything. One volunteer, or victim chosen at random if no one should volunteer, must perform the traditional Finnish dance to keep the spirits at bay for the coming year. Since the traditional Finnish dance has long since been forgotten, the volunteer must improvise interpretively. The person must volunteer without knowing what they are agreeing to do, thus symbolizing the stark bravery of Finnish dancers. A song must be sung to commemorate the coronation of King Valdemar of the house of Bjelbo. The original melody has long since been forgotten, so any song that is well known, radio-worthy, and at least nine years old may be sung. And, in light of King Valdemar’s decree regarding the Great Minstrel Hunt of 1264, the song must be sung a capella by all guests present. There was a chicken virus that went around in Finland in 1355. At that time, whenever someone ate anything made out of eggs, they weren’t sure if the egg had been infected or not. The chance taken in eating things made with eggs is represented by a game of chance referred to as “Never Have I Ever” or, in Finnish, “Koskaan Olen Koskaan.” All guests must form a circle, placing an egg on the ground in front of them. One person says something that they have never done, and anyone in the circle who has done that thing must spin their egg. If the egg stops spinning while it is pointing at the person who spun it, they are officially out of the game. The last person remaining collects all the eggs at the end of the game. The Finnish are known especially for two things: Their love of unity and friendship, and their exceptional hip-grabbing ability. To celebrate, all members present must participate in an impromptu conga line from the party’s locale to the nearest seller of overpriced goods, through their place of business, and back to the party. I offered Ryan a rolly-polly baby Panda for Christmas, Shannon performed the interpretive dance, we sang Fresh Prince of Bel-Air in memory of King Valdemar, and I happened to be the oldest male present. So I ate a cotton ball. Not just any cotton ball, mind you, but probably the largest one in the bag; it was dark and I just reached in and grabbed one, but it happened to be enormous. After mustering up all my gumption, I stuck the cotton ball in my mouth and started salivating to get it wet enough to slide down my throat. It took me quite a while, but finally I tried swallowing. It got stuck half way. I grabbed the nearest cup of Mountain Dew and forced the cotton ball the remainder of the way into my stomach. There was much rejoicing, and I took my seat again as The Office came back on.\nHad I paid closer attention in my aforementioned Community College classes, I might have known that the acids in your stomach can’t actually break down cotton for some reason (which leaves me thoroughly unimpressed with my own stomach), and I may have been more wary of eating a cotton ball. As it was, I simply thought it would digest and there would be no problems.\nThis morning I woke up with horrendous cramps (on top of an already very upset stomach) and a terrible headache. I tried sitting up in bed, but that seemed to hurt too much, so I just laid there for a very long time, eventually skipping my first class.\nSo let this be a lesson to all of you! I know Buddy eats cotton balls in Elf, and it looks like fun and that he doesn’t suffer any consequences from his actions. But. Trust me. He does! Your stomach, intestines, and basically any part of your digestive tract don’t get along well with cotton balls.\nSee what you missed out on last night, Jon McGill?\n","permalink":"https://alexlaird.com/2008/11/cotton-balls-and-cramps/","summary":"\u003cp\u003eI was never really good at Chemistry. Better at it than at Biology, but still not exceptional. Granted, I earned an A when I took Chemistry in college, but this was from Kirkwood, which doesn’t have the highest academic prestige, so the A was easily achieved without completely understanding the material. The same goes for Biology. That being said, I may not have the fullest understanding of acids and bases and things breaking down. (In fact, if the previous sentence really makes no sense, that’s probably why. I was just trying to throw the words out to sound intelligent.)\u003c/p\u003e","title":"Cotton Balls and Cramps"},{"content":"After Al Gore invented the internet for us, we realized we needed a way to walk around the thousands upon thousands (and now billions upon billions) of sites that were out there. Meet the browser. To the best of my knowledge, Al Gore has never claimed part in inventing the browser, but I wouldn’t put it past him.\nJust for fun, and before we start to really rip apart the benchmarks of Google Chrome, let\u0026rsquo;s look at some old, failed browsers so we can scoff at them (by order of appearance).\nWorldWideWeb (1991-1994) - I actually can\u0026rsquo;t call this pioneer a failure. After all, it was the world\u0026rsquo;s first web browser. By the way, it was only released for NeXTSTEP OS. The operating system created by NeXT Computer, a company that was founded by none other than Steve Jobs. The NeXTSTEP OS was quite literally the parent of Mac OS X, and it was also the very first object-oriented and multi-task-ready operating system. (Boy, it\u0026rsquo;s amazing what that Steve Jobs can do \u0026hellip;) However, in 1993 the developers released the source code, thus making the program freeware and allowing for the development of it\u0026rsquo;s children, ViolaWWW, MidasWWW, MacWWW, and their big brother Mosaic.\nNetscape Navigator (1994-2007) - Mosaic/Netscape rose to power and popularity much faster than Internet Explorer did, and since it was owned by Netscape Communications, a successful company that was pivotal in getting internet readily accessible in every home, the browser had plenty of funding. However, Microsoft was simply a bigger, more powerful company, and the beneficial wars between Netscape Navigator and Internet Explorer were eventually won by Internet Explorer. While Netscape failed miserably by allowing their poorly coded browser to get disgustingly bloated with features, their ultimate failure was in 1999 when they allowed America Online to buy then. Who cares if they offered you ten billion dollars! Immediately following Netscape\u0026rsquo;s acquisition by AOL, they lost over 30% of their market share in less than one year.\nHotJava (1994-1999) - A very customizable, extensible browser that was built around Java in order to easily execute Applets. The ingenuity of HotJava is that it\u0026rsquo;s a browser coded entirely in Java, thus making it extremely portable. The downside to HotJava is that it\u0026rsquo;s coded entirely in Java, thus limiting it to the JRE and leaving it a fairly slow memory hog, and with the presence of Java so readily incorporated into more recent browsers and the growing popularity of Macromedia\u0026rsquo;s Flash, the project was terminated.\nInternet Explorer (1995-Present) - It doesn\u0026rsquo;t need much introduction or explanation. But Internet Explorer has always been interested in integrating (not outsourcing to extensions) functionality at the expense of ease-of-use, security, and speed. And, let\u0026rsquo;s be honest, it\u0026rsquo;s Microsoft \u0026hellip; Therefore, a failure.\nOmniWeb (1995-Present) - Wouldn\u0026rsquo;t you know it, it\u0026rsquo;s another NeXTSTEP OS browser! That being the case, it graduated, along with it\u0026rsquo;s OS, to Mac OS X, and that is where it resides today. Unfortunately, this is a limit for it. While it was a good browser in the area of speed, and very minimalistic, it lacked key functionality and compatibility with some of the most recent web innovations, so it falls short.\nInternet Explorer for Mac (1996-2005) - Wow. It was simply horrible. Probably the worst maintained browser of all time. It went through three updates in one year, went silent for three years, released it\u0026rsquo;s fourth update in 2000, then was untouched until it\u0026rsquo;s termination in 2005. It was incompatible, buggy, crashed more than anything, and incredibly slow!\nOpera (1996-Present) - I\u0026rsquo;ve always felt that Opera failed when it came to honesty in advertising. They used to claim to be the “fastest browser” ever made. Well, they’ve since revoked that claim \u0026hellip; It claims it’s “faster” on their website now. Faster than what? I’m not sure, because until the most recent release (9.5) I’ve never been pleased with the speed of the browser. Though, even with 9.5, I still think Firefox is faster, and you can’t argue with the speed I get from Safari. Around version 7, Opera bloated the browser beyond belief, thus slowing it to a crawl. They’ve since revamped the interface and it the newest release it’s actually quite efficient. However, compatibility has always been an issue with it.\nGzilla (1997-1999) - The developer was last heard from on August 16, 1999, pleading for help on his very own site. Apparently he could get his browser to compile on anything other than Linux/x86, so he was begging for outside help. It\u0026rsquo;s rumored the browser emerged a few months later as as Dillo, but that\u0026rsquo;s just probably not true. I\u0026rsquo;m guessing Mozilla felt threatened by the last five letters of his browser\u0026rsquo;s name, so they took him out.\nMyIE/Maxthon (2000-Present) - Maxthon’s clincher is that it’s extremely customizable. It advertises itself as an adaptable alternative to Internet Explorer. The negative clincher is it’s only for Windows. On top of that, it crashes too frequently. It’s not slow, but reliability is a big factor when writing a browser, and if your browser crashes on me too often, I’m not going to use it.\nFirefox (2002-Present) - The most successful browser to incorporate extensions. Since Netscape completely fell of the face of the planet somewhere around 2003, Firefox has been the most used cross-platform web browser. It boasts speed, elegance, and integrated functionality. Even better, you can add basically any functionality you desire through extensions; this is what has made Firefox so well known. Unfortunately, Firefox loses a lot of security when they allow third-party extensions. More than that, extensions are impossible for the creators of Firefox to maintain, so when the browser is updated, there’s always the risk (and it very frequently happens) of losing compatibility with extensions. Not very convenient for the extension programmers or their users.\nAOL Explorer (2005-Present?) - It’s AOL \u0026hellip; We already know why it fails: Overpriced, slow, inefficient, and unstable. Apparently the browser is still around, but it’s now a part of the AIM package.\nFlock (2005-Present) - Flock’s biggest asset is that it’s multi-platform. On top of that, much like Maxthon, it boasts customizability! It integrates beautifully with many popular websites, including Facebook, iGoogle, Flickr, Digg, Twitter, etc. On top of that, it does allow extensions. It has a main page that keeps all of your favorites and information organized and easily accessible. Unfortunately, it still is rather buggy, and speed is also a bit of an issue with it. It enjoys freezing on it’s users.\n","permalink":"https://alexlaird.com/2008/09/browser-reviews-a-brief-history/","summary":"\u003cp\u003eAfter Al Gore invented the internet for us, we realized we needed a way to walk around the thousands upon thousands (and now billions upon billions) of sites that were out there. Meet the browser. To the best of my knowledge, Al Gore has never claimed part in inventing the browser, but I wouldn’t put it past him.\u003c/p\u003e\n\u003cp\u003eJust for fun, and before we start to really rip apart the benchmarks of Google Chrome, let\u0026rsquo;s look at some old, failed browsers so we can scoff at them (by order of appearance).\u003c/p\u003e","title":"Browser Reviews: A Brief History"},{"content":" 2009 Update Some of you insist on believing (or so it seems) that this post was written yesterday. It wasn’t. It was written three years ago, though it still gets more hits than most other pages on my site. Understand that some of my opinions have changed, some of the facts have changed, and my writing style has improved immensely since I wrote this. There’s no need to post harsh comments or email me to inform me of how I wrong I am. I am well aware of the recent changes and improvements in technology.\n2007 Update Some have express that they feel all of my so-called \u0026ldquo;facts\u0026rdquo; are Mac biased. First of all, facts are facts; if they have a bias, whatever they\u0026rsquo;re biased towards is superior because they\u0026rsquo;re facts, and therefore indisputable. Yes, a few of my facts are Mac biased, and a few of my facts are Microsoft biased, but you wouldn’t go to an Apple news sites to get information on when the new Microsoft Zune is coming out, you\u0026rsquo;d go to a site that covers Microsoft technology information for that. Finally, what source of information doesn\u0026rsquo;t have a bias? Give me one. Even the supposedly unbiased National Public Radio, paid for with your tax dollars, has a severely liberal bias.\nDISCLAIMER Before reading this post, please lighten up and relax. This is meant to be satirical and light, as any opinionated discussion on technology should be. A member of the Facebook group “I don’t hate Macs - I hate arrogant mac users” decided to post a rebuttal to Apple’s fourteen promotional points in order to show them all false. Since a lot of his \u0026ldquo;facts\u0026rdquo; were merely opinions stated as facts, I felt compelled to shed some more light on the situation from the point of view of someone who has used and owned numerous operating systems and computers and is open to all options. I use a Mac and PC at home and a PC at work, and the rest of my family also uses PC. I understand there are pros and cons to both platforms, but my personal preference depends on the job I’m performing. I boot Windows XP and Ubuntu Linux through Boot Camp for programming purposes. Before you fall out of your chair and shake your fist in furry at anything I’ve said below, remember that most of this is my opinion. You don\u0026rsquo;t need to scream and swear at me back in a comment. There\u0026rsquo;s no need for harsh words or name calling \u0026hellip;\nNow sit back, open your mind, and smile, because this is meant for fun, not to start a nuclear (or verbal) war.\nAlright, that\u0026rsquo;s all for the disclaimer. Below I have listed the fourteen taglines Mac gives for its computers. Below those are Creston’s responses to those taglines. Below that is my opinion from my experience using both a Mac and a PC. Below that are links to some sites that will provide facts to prove my opinions (if possible). Enjoy!\n#1—It just works Hmm … Just about every PC in the world works fine out of the box too. This may have been a point back 26 years ago when PCs were kits, but now, it’s standard. As it turns out, the Windows kernel is very reliable, all Windows crashes are caused by people installing bad software. The same thing will happen to a Mac, for the record.\nOpinions Well, that actually depends on what you plan on doing with your system. Personally, when I used Windows previous, as soon as I ever bought a brand new machine, straight out of the box I always did a fresh format. Especially if you ordered your PC from Dell or some such company. It\u0026rsquo;s just sick how much extra crap comes loaded on the machine. A few extra programs come with a Mac too, however, unlike a Windows PC, all of the programs that come pre-installed on any Mac OS are made by Apple. On top of that, the software that comes on a Mac is actually the full version of the program, not an annoying 30 day trial. You know that if you don\u0026rsquo;t do a fresh format of you\u0026rsquo;re PC as soon as you get it, you probably never will. That 30 day trial will run out and the program will just stay on your PC. Obviously, you can\u0026rsquo;t use it without pay the $150 to get a license, but taking the 5 minutes out of your day to uninstall it is just too much work! Thanks to Apple\u0026rsquo;s integrated apps, however, if you don\u0026rsquo;t want that program on there (GarageBand for instance), all you have to do is drag and drop it into the recycling bin. It\u0026rsquo;s gone in less than 5 seconds. If you think there\u0026rsquo;s still fragments of that program left somewhere on your hard drive, you can install AppZapper and confidently uninstall all yours apps\u0026hellip; but you really don\u0026rsquo;t need to.\nYou\u0026rsquo;re way out in left field in stating that \u0026ldquo;all Windows crashes are caused by people installing bad software.\u0026rdquo; If there was one thing I learned in Economics class, it\u0026rsquo;s that if event A precedes even B and C, even A may or may not have caused events B and C. Not enough information is provided. You can\u0026rsquo;t drop a statement like that and blame every single crash on the Windows OS from this point forward on the user. Granted, I think a great deal of crashes and errors and lock-ups on a computer are user related, but I\u0026rsquo;m not taking all of the blame off of the OS. You have no idea how many times my Windows programs would crash in the middle of my work, for no apparent reason. All I was doing was typing! Or maybe you do have an idea\u0026hellip; I\u0026rsquo;m sure it\u0026rsquo;s happened to you too! A friend said to me the other day after hearing I had switched to Mac, \u0026ldquo;Is it true that Safari is really unreliable and crashes all the time? I\u0026rsquo;ve heard that about Macs.\u0026rdquo; I said, \u0026ldquo;Safari has crashed on me once since I got my Mac. It was mostly my fault too. Mac apps crash on occasion, true enough, but I wouldn\u0026rsquo;t say that they crash \u0026lsquo;all the time,\u0026rsquo; or that they crash anymore than Windows programs. How many times do you see \u0026lsquo;The program has closed unexpectedly. Would you like to send Microsoft and error report?\u0026rsquo; in a day? Too many for me, that\u0026rsquo;s why I switched to Mac.\u0026rdquo; So, to state it properly, you should probably say \u0026ldquo;most Windows crashes are caused by people installing bad software.\u0026rdquo; But what would a world be like if that bad software didn\u0026rsquo;t exist in the first place for us to accidentally (or intentionally) download? Welcome to Mac OS! False advertising is against the law; Apple speaks the truth!\nFacts InfoWorld.com - It Just Works\nMacNN.com - Consumer Reports for Mac\n#2—You can make amazing stuff This advertises iLife ’06, Apple’s suite of software. Most venders will include similar software, if not more powerful applications. Many new PCs include Nero, Pinnacle, photo editing apps, and various other applications that do much of the same tasks as iLife ’06. Windows Vista has all of the functionality of iLife ’06 included in the Premium versions.\nOpinions You can do amazing stuff! iLife \u0026lsquo;06 is a beautiful package that comes standard with any current version of Mac OS. Most vendors will include similar software, if not more powerful. Unfortunately, they only include a 30 day trial. It\u0026rsquo;s also 3rd party software. iLife is made by Apple, so you know it\u0026rsquo;s good. It\u0026rsquo;s all a full version for FREE! I can\u0026rsquo;t speak for Windows Vista, I haven\u0026rsquo;t seen it yet because\u0026hellip; oh, right, it\u0026rsquo;s not out yet. So it\u0026rsquo;s really not fair to compare an unreleased OSs features to the features of an OS from last year, is it?\nFacts I don\u0026rsquo;t need facts on this one. Go onto your Windows machine and open any of the software that came with your OS. It will say \u0026ldquo;you have 0 out of 30 days remaining on this trial period.\u0026rdquo; Point and fact.\n#3—Design that turns heads Apple computers have interesting designs. However, these designs have major shortcomings. Apple notebooks use soldered processors, preventing upgrades. Socket based CPUs have been the norm since the P4 came out in late 2000. Also, Apple hardware like the iMac have limited space for upgrades and integrated components are more likely to fail compared to independent subsystems. Apple’s design can be compared to some car designs—such as the DeLorean DMC-1 (the famous car from the Back to the Future Trilogy). This car had an amazing exterior design, but the car was an ultimate failure due to it’s lackluster performance and high performance to price ratio. Anyone without unlimited funds would chose something more utilitarian than a Mac.\nOpinions Are we even talking about the internals right now? I was aware this statement was talking about the beauty of the externals on the machines. Even someone who hates the Mac OS and hardware that comes inside the machine will admit that they look beautiful. Anyone who appreciates computers can appreciate the beauty of the sleek, rounded design of the apple laptops and desktops. The perfect white, black, or even silver now.\nIf you wish to talk about internals, OK, I can do that too. It\u0026rsquo;s true, Mac\u0026rsquo;s aren\u0026rsquo;t as customizable as PCs. Choose your arguments though. Some people claim they just want a computer that will do simple school-related tasks for them and get on the internet. Then they say they don\u0026rsquo;t want a Mac because it\u0026rsquo;s not possible to upgrade the hardware. Well, that\u0026rsquo;s simply not true in the first place. It is more difficult to upgrade a Mac, but it is hardly impossible\u0026ndash;especially on the Mac Pro\u0026rsquo;s. I like to put it this way: \u0026ldquo;A PC is like a Yugo you can soup-up with lots of extra add-on parts. A Mac is like a Porsche that comes loaded from the factory.\u0026rdquo; Who doesn\u0026rsquo;t want a Porsche? If you want to know more about the design of any Apple machine, the bullet proof material they\u0026rsquo;re made of, the genius thought put into the exterior and interior design of them, click on the link to the Apple site below. I would like to point out that a downfall to all laptops, Apple or not, is that they are highly integrated. The Mac Pro is quite a different story. As luck would have it, PCs have limited space as well\u0026ndash;5 PCI slots\u0026hellip;\nIntegrated components aren\u0026rsquo;t actually more likely to fail, they\u0026rsquo;re just harder to replace if they do fail. So I guess that\u0026rsquo;s where Murphy\u0026rsquo;s Law\u0026rsquo;s could come in, right? \u0026ldquo;Anything that can go wrong, will go wrong.\u0026rdquo; I haven\u0026rsquo;t had anything go wrong with my Mac yet though\u0026hellip;\nFacts MacOSXHints.com - Quote\nApple.com - Design that Turns Heads Murphys-Laws.com\n#4—114,000 viruses? Not on a Mac This argument is flawed. The reason there are few viruses on Macs has to do with issues of user share. Less than 2% of people use mac compared to over 90% for Windows. This is a matter of logistics rather than security. Systematic, a leading computer security provider, states that OS X is less secure than Windows XP. Apple gives its users a false sense of security. Apple users often neglect basic security practices, such as running a firewall, using caution when opening emails, and running antivirus software. Apple computers ship with the built-in firewall disabled, while Windows XP ships with it on by default. Windows also advises users to run security software. As the Apple user share grows, there will be more and more threats and Mac users will not be prepared.\nOpinions The statistic has actually risen to 5% of the world using the Mac OS, and predicted to rise more in the near future due to the release of the Mac Pro. In fact, according to Steve Jobs in his Keynote Address at WWDC in 2006, Apple laptop sales have had a 50% increase this year! I did a search but couldn\u0026rsquo;t find that statement by Systematic anywhere. To be perfectly honest, there are viruses for Mac just as there are for PC. They\u0026rsquo;re different viruses, but they still exist. I\u0026rsquo;ve never actually run into any, and most people using a Mac probably never will, but they\u0026rsquo;re out there! So to say \u0026ldquo;there aren\u0026rsquo;t viruses for a Mac\u0026rdquo; would be a lie. But the ad clearly states \u0026ldquo;Mac\u0026rsquo;s don\u0026rsquo;t get viruses.\u0026rdquo; So, obviously, while they are there, you just don\u0026rsquo;t get them unless you do something completely ridiculous\u0026hellip; which I can\u0026rsquo;t think of anything right now. As the Apple user share grows, there will be more and more threats to Mac users. Thank goodness they do make Norton for Mac. I don\u0026rsquo;t use it, but maybe someday I\u0026rsquo;ll actually need to! Right now I\u0026rsquo;m free to run my OS without an antivirus programming hogging all my memory running in the background!\nFacts TheRegister.co.uk - 90% Windows, 5% Mac, 5% Other\nMacNewsWorld.com - Allure of Mac Pro May Move Windows Fans to Convert\nApple.com - Apple WWDC 2006\nTheAppleBlog.com - Hardly Any Viruses on a Mac\n#5—Next year’s OS today I cannot help but laugh at Apple’s argument here. First off, their widgets are stolen from an application known as Konfabulator, which is available for both Windows and Mac. An RSS reader? IE7 has this as does Mozilla Firefox. Apple did not invent RSS either. Tabbed browsing? IE7. Video conferencing? AIM or Windows Messenger. Parental Controls? I don’t support that kind of software but there are plenty of applications around and Windows Vista will have it included. Easy DIY scripting with Automator? Windows Scripting Host is much more powerful and has been included since Windows ’98. Mail with built-in spam blocking? Outlook Express has this as well. So all of Apple’s “innovations” are just rip-offs of other applications.\nOpinions Konfabulator (now called Yahoo! Widgets) was a program invented in 2000 by Arlo Rose. Ironically, it was originally invented for Macintosh (hmm\u0026hellip; ). Later, a Windows version was created. First off, I don\u0026rsquo;t even know why you brought this up. Mac did not claim to be the original creator of this idea. As a fact, Mac simply popularized it. More importantly, Mac actually integrated it into the OS, that way it wouldn\u0026rsquo;t be a memory hog running in the background constantly. (It does run in the background constantly, but it\u0026rsquo;s not a memory hog. So I guess that\u0026rsquo;s a contradiction\u0026hellip; ) If you want to play that game though, what are these Gadgets I hear about that are apparently coming with Windows Vista?\nYou\u0026rsquo;re correct in stating IE7 supports RSS, just like Apple\u0026rsquo;s Safari. But let\u0026rsquo;s go back to the original statement. \u0026ldquo;Next year\u0026rsquo;s OS today.\u0026rdquo; Right. Well, IE7 was released on\u0026hellip; oh wait, it actually hasn\u0026rsquo;t been released yet. Just a Release Candidate. That was released on January 31st, 2006. Safari 2.0, the first version to include the RSS feature, was released on April 29th, 2005. Well, not quite a year, but close. The final release of IE7 is expected by the end of 2007. Mozilla Firefox? Well, Mozilla isn\u0026rsquo;t owned by Windows or Apple, so it\u0026rsquo;s really not fair to compare 3rd party software when we\u0026rsquo;re talking about the OS right now. Firefox is made for both Apple and Windows. Nice try though. So if Apple had it first\u0026hellip; who\u0026rsquo;s ripping who off?\n(Fun fact: People can argue about whether it was Mozilla or Opera who had the first tabbed browsing system, but it was neither. It was a no-name browser (Netscaptor) who first put the idea onto the web in 1997. Mozilla supported the capabilities in 2000, I believe, and Opera didn\u0026rsquo;t get around to it until 2001. Safari released their tabbed browser in early 2003, and IE7, finally released in late 2006, has tabbing capabilities. Interesting that, once again, Apple released theirs 3 years prior to Microsoft. So, yes, even though Apple and Microsoft have the same features NOW, Apple released it first (but they in no way claim to be the original creators). That\u0026rsquo;s another reason Reason #5 makes sense.)\nFunny that you should bring up NetMeeting. That program is so frustrating! It\u0026rsquo;s hideous and lacking in features. Not only that, it\u0026rsquo;s a video client\u0026hellip; that\u0026rsquo;s all! It isn\u0026rsquo;t meant to be a chat client, so don\u0026rsquo;t compare it to one. iChat includes the features of an audio/video/chat client. It\u0026rsquo;s very reliable and user friendly. You\u0026rsquo;re right, Windows Messenger also includes these features. I can run both Windows Messenger and Microsoft Messenger on my Mac though, so I\u0026rsquo;m at no disadvantage there. AIM is made for Mac too, but I despise AIM, and it\u0026rsquo;s even crappier on Mac than it is on PC.\nIf you do a little bit of research you\u0026rsquo;ll learn that Apple Mail evolved from a program called NeXTMail. This program ran on the NEXTSTEP OS. NeXT Computers, Inc. was owned by Steve Jobs at the time. Sound familiar? In 1992, Steve Jobs announced the release of NeXTMail. Microsoft release Outlook Express with the release of Windows 95. You do the math, that\u0026rsquo;s 3 years after NeXTMail. NeXTMail became Apple Mail in 1997 when Apple purchased NeXT Computers, Inc. and also won Steve Jobs as their CEO in the deal.\nAs you may have noticed, Windows is trying to imitate Apple\u0026rsquo;s slick design of Tiger OS with Windows Vista. They\u0026rsquo;re doing a pretty decent job too. It only took them 5 years to release it.\nFacts Yahoo.com - Yahoo! Widgets Apple.com - Dashboard (Widgets)\nWikipedia.org - IE7\nWikipedia.org - Safari\nWordPress.com - Steve Jobs Shows off NeXTMail\nWikipedia.org - NEXTSTEP\nWikipedia.org - Outlook Express\n#6—The latest Intel chips WHAT? Core Duo is hardly Apple only. Every major vender carries it. Nice try, Apple.\nOpinions True, but Apple didn\u0026rsquo;t claim to be the only company with Intel chips, did it? No, it claimed to be the company with the latest Intel chips. You must recall back to 2005 when Apple was the first company in history to release a Intel Core Duo processor. Apple had a deal with Intel. Windows machines didn\u0026rsquo;t come out with the Intel Core Duo chipset until after Apple had released theirs. Of course, now Core Duo\u0026rsquo;s come standard with almost any machine. The point is, Apple started the trend. That\u0026rsquo;s where that little word latest comes in. But I see where you were coming from.\nFacts Wikipedia.org - Intel Core\nWikipedia.org - Processor Architecture\nWikipedia.org - Apple Intel Transition\nIntel.com - Intel Duo Core Processors\n#7—Instant Video Chats iChat AV isn’t the only application that allows video conferencing. It’s not the first either. Windows has had NetMeeting, a video conferencing app since Windows 98SE (1999) and Windows Messenger has this functionality as well. Many notebooks have built in webcams. Apple forces people to buy a webcam though, even if one is not desired. Users should have the choice if they would like to have one.\nOpinions I already said this, but I\u0026rsquo;ll just say it again.\nFunny that you should bring up NetMeeting. That program is so frustrating! It\u0026rsquo;s hideous and lacking in features. Not only that, it\u0026rsquo;s a video client\u0026hellip; that\u0026rsquo;s all! It isn\u0026rsquo;t meant to be a chat client, so don\u0026rsquo;t compare it to one. iChat includes the features of an audio/video/chat client. It\u0026rsquo;s very reliable and user friendly. You\u0026rsquo;re right, Windows Messenger also includes these features. I can run both Windows Messenger and Microsoft Messenger on my Mac though, so I\u0026rsquo;m at no disadvantage there. AIM is made for Mac too, but I despise AIM, and it\u0026rsquo;s even crappier on Mac than it is on PC.\nMany notebooks do have webcams\u0026hellip; ALL Mac laptops have webcams built it! I do agree about the choice, however. It\u0026rsquo;d be nice to have that customizable. You might save $50 or something. But I wanted one, so I don\u0026rsquo;t mind.\nFacts None needed for this one.\n#8—More fun with Photos iPhoto is the application being advertised in this point. Again, many venders chose to include this type of software, so Apple is hardly alone in this. One can also download Adobe Photoshop Album for free. Also, a cross platform program is available called the GIMP, which is many times more powerful than iPhoto or Adobe Photoshop. Again, much of the functionality of iPhoto is included in Windows Vista.\nOpinions iPhoto is far superior to Adobe Photoshop Album, but it is far inferior to Picasa (unfortunately only made for Windows currently). I don\u0026rsquo;t use iPhoto, I just open up my Pictures folder when I want to browse my pictures, but it is a decent program. Considering it\u0026rsquo;s free and if you don\u0026rsquo;t want it you just drag it to the recycling bin, it\u0026rsquo;s not that big of a deal. It\u0026rsquo;s worth nothing that Adobe Photoshop Album retails at $89.99.\nAgain, many vendors include this type of free software as a 30 day trial version. After those 30 days all the software does is hog your disk space\u0026ndash;not that big of a deal with today\u0026rsquo;s hard drives, but it clutters the start menu.\nFacts Adobe.com - Adobe Photoshop Album\nApple.com - iPhoto\nGoogle.com - Picasa\n#9—One Click Websites Computers running Microsoft Office, which nearly every Windows user owns a copy of, include both Microsoft Word and Microsoft Frontpage. These powerful WYSIWYG applications are vastly superior to the included Apple apps. Popular blogging sites such as blog.com and livejournal.com have web-based tools to accomplish the same tasks. All webcams come with easy to use software that records the video to a standard file which can be uploaded. Sorry, Apple. If you need additional functionality over the online blogging tools, then you are an advanced user and likely do your own coding and wouldn’t desire an HTML generator.\nOpinions Actually, this is talking about iWeb, but you wouldn\u0026rsquo;t know that if you didn\u0026rsquo;t use a Mac, and I presume you don\u0026rsquo;t and haven\u0026rsquo;t. Microsoft Frontpage is evil and hardly powerful. Go with Macromedia Dreamweaver, a cross-platform WYSIWYG editor. iWeb is alright, but you have to have a .Mac account to use it and I didn\u0026rsquo;t want to pay for that. I did a drag and drop and uninstalled it from my machine\u0026hellip; that was easy! iWeb\u0026rsquo;s source code is rather hideous, much like Microsoft Frontpage, so I don\u0026rsquo;t recommend it.\nI\u0026rsquo;m not sure why you decided to compare a blog to a website, but there is a difference. This is a blog. A website is like Microsoft.com\u0026hellip; content, not opinions and journals. If you\u0026rsquo;re using Microsoft Frontpage to create a blog you might want to ask for you money back :). It was also a bad choice to compare iWeb to Microsoft Frontpage, but that\u0026rsquo;s ok, you didn\u0026rsquo;t know. Check your facts before you report :).\nFacts Apple.com - iWeb\nMicrosoft.com - Microsoft Frontpage\nBusinessLogs.com - iWeb Generated Source Code is Awful\n#10—Amazing Podcasts Apple is flaunting their GarageBand program, which is cool, but utterly pointless to the average user. This is a classic case of “Bloatware”—pre-installed software which only slows down your computer. Windows comes with a much smaller application, Sound Recorder, which allows for simple recording. A free alternative is Audacity, again available to many platforms.\nOpinions I don\u0026rsquo;t use GarageBand \u0026hellip; I went into my apps and moved it to the Trash. It took me a grand total of 5 seconds to erase it from my hard drive. If you forget to erase it, it\u0026rsquo;s only 100mb, it\u0026rsquo;s not that big of a deal with today\u0026rsquo;s hard drives. All that crappy trial software that comes with Windows should be something to worry you if you\u0026rsquo;re worried about GarageBand. At least GarageBand is a full version of the software that comes with the OS. You want to talk about \u0026ldquo;bloatware\u0026rdquo;? Go turn on an eMachine or a Dell and open up the start menu. There\u0026rsquo;s your bloatware. How much of that pre-installed software are you actually going to use? How much of it do you uninstall as soon as you get the PC in the mail? Most of it.\nAudacity is a beautiful program. It\u0026rsquo;s open source and cross-platform. I use it on my Mac. Sound Recorder is one of the crappiest programs of all time. It has no functionality what-so-ever! You should get on that, Microsoft. If we\u0026rsquo;re categorizing, GarageBand and Sound Recorder are not even close to being in the same category \u0026hellip; No comparison, buddy. But here\u0026rsquo;s something Windows has one-upped Mac on: Mac doesn\u0026rsquo;t even come with a sound editor built in to the OS! As terrible as Sound Recorder is, Microsoft would have saved a little face if they didn’t include it at all.\nFacts Apple.com - GarageBand\nSourceForget.net - Audacity\n#11—Rock star tunemaking Is tunemaking a word? Again, this is about the GarageBand program, which also allows mixing of various loops. A much more powerful (and easier) application is Cakewalk Kinetic, which retails for approx $20. Again, this application would not be used by most people, so including it serves very few.\nOpinions Apparently you couldn\u0026rsquo;t find much wrong with this one since you had to go after the grammatical aspect. Sometimes we as Americans do that. As you may have noticed, Toys R Us does not use the word \u0026ldquo;are,\u0026rdquo; but instead puts the letter R on the sign, backwards! It makes things a little bit more fun :).\nAgain, I don\u0026rsquo;t really use GarageBand too often, so I don\u0026rsquo;t relate to this reason for wanting a Mac. Once again though, GarageBand comes with the OS and is a full functional version. Cakewalk\u0026rsquo;s Kinetic 2 retails at $79.00. I can tell you which one I\u0026rsquo;d rather have.\nFacts Cakewalk.com - Cakewalk Kinetic\n#12—Hollywood style movies iMovie is the application being discussed in this area. A very similar application, Windows Movie Maker, has been included in Windows XP since 2001. Free upgrades have been released over the years, making WMM into a very useful application for the novice. With the Apple solution, as one moves up in skill and desires more features, they are forced to buy Final Cut Express, a powerful, but difficult to use application for the hefty sum of $299. Software venders developed many video editing applications for Windows ranging in price from $20 to upwards of $10^5! Many applications in the $50-$100 range are very powerful and much more intuitive than FCE.\nOpinions Actually, they\u0026rsquo;re probably referring to Final Cut Studio, which costs $1,299 for the fully functional, fully licensed version. iMovie is great for home movies, but it doesn\u0026rsquo;t even start to compare to Final Cut Studio. iMovie is far superior to Windows MovieMaker! As one moves in skill and desires more features, I promise you, Windows MovieMaker won\u0026rsquo;t provide! There are no programs that compare to Final Cut Studio for Windows. It is the supreme software for video editing. There are several programs for Windows that compare to iMovie, and they range from $30-$150. (Final Cut Express HD can be purchased for $299.)\nFacts Apple.com - Final Cut Studio\nApple.com - Final Cut Express\n#13—No hunting for drivers Both Windows and Mac come with a large driver database, but there are far more drivers available for Windows. Both platforms use PnP technology, allowing for automatic installation and configuration of the drivers. What Apple fails to state is that many devices simply do not work with Mac. A large number of printers, scanners, and modems will not be recognized by Mac, and Mac needs to have Apple firmware on a disc burner in order for it to function. Only the Airport Extreme card works with Macs, other PCI cards will not, so if one needs 802.11a, they would need to buy a (very) costly Ethernet adapter. The process of manually installing drivers can be rather tedious for the average user, but most manufactures will include an installer program to simplify the process. Yes, there is no hunting for drivers on a Mac, simply because there are no drivers for a Mac! Which is the bigger trade off?\nOpinions What you fail to state is that most devices do work with a Mac. What devices don\u0026rsquo;t? Most things these days are Plug \u0026lsquo;N\u0026rsquo; Play! Most things that you plug into a Mac will be recognized, just as they are on a PC. The \u0026ldquo;No hunting for drivers\u0026rdquo; comes in as soon as you plug it in! When you plug anything into a PC, a little dialogue pops up and tells you a new device has been found, it tells you it\u0026rsquo;s looking for the device, looking for a driver, installing the driver, then finally the device is ready for use. This usually takes 30 to 60 seconds. When you plug anything into a Mac, you never even realize it searches. A new device appears on your desktop and is all ready for use! The process of manually installing drivers is rarely tedious because I have yet to confront it. I\u0026rsquo;ve never had to install a driver on my Mac. If a driver somehow cannot be found it will use a generic drive for the device so the device is still at least functional. These are the facts of life. It\u0026rsquo;s no more difficult on a Mac than on a PC. In fact, it\u0026rsquo;s easier.\nSadly, you are correct about the Airport Extreme card. However, 802.11a, b, and g cards are expensive for Windows AND Mac\u0026ndash;they just come with (most) Windows machines. Furthermore, I\u0026rsquo;ve never needed an 802.11 card\u0026hellip; I\u0026rsquo;m happy with my Airport Extreme.\nFacts None needed for this one.\n#14—Awesome out of the box Read the previous 13 points. Any newly purchased system works perfectly out of the box.\nOpinions I agree. Check out my previous 13 rebuttals and I\u0026rsquo;m pretty sure you\u0026rsquo;ll be sold on Mac! I am!! After using a PC for 17 years of my life, I haven\u0026rsquo;t regretted adding Mac to the OS list one bit!\nFacts None needed for this one.\nIn closing, I hope there are no hard feelings. This was all just fun and games anyways, right? I had a lot of fun compiling this list.\nI did find it interesting to note that even Microsoft uses a few Mac\u0026rsquo;s. Check it out!\nI\u0026rsquo;ll leave you with a few more sources of interesting information about Mac vs PC, or just general information on Apple.\nAn article from back in 2000 by Eric DeStefano comparing Mac machines to Windows based PCs. Written with a bias towards Mac, but from the viewpoint of a previous PC user, much like myself. (LowEndMac.com) A very interesting site chuck-full of comparison charts and tables. No bias, just raw facts. (SystemShoutOuts.org) An interview-type article that takes several key areas of computer use and compares Windows efficiency with Mac efficiency. The interview seems to switch back and forth between favoring Mac or PC. (TechBuilder.org) A very useful article that disproves the myth that Macs are more expensive. Overall, yes, they are. But when you consider the efficiency of software and hardware products you\u0026rsquo;re getting with your money, you\u0026rsquo;ll very easily realize you\u0026rsquo;re getting a better deal. (TechNewsWorld.com) An article written in 2006 to persuade that everyone should use a Mac. (KenRockwell.com) A site filled with information on the Intel chipset in all Mac computers now. (MacOnIntel.com)\nFinally, a quote I liked a lot from a forum on MacOSXHints.com.\n\u0026ldquo;People usually work on PCs because they have to. People work on Macs because they want to.\u0026rdquo;\nI’d tend to agree with that. In all honesty, anyone willing to limit themselves to one operating system is clearly just a fanboy and guilty of the same arrogant fanaticism they berate Mac users for. Prefer what you will, but be versatile and don’t be ignorant.\n","permalink":"https://alexlaird.com/2006/10/i-beg-to-differ-a-response-for-apple/","summary":"\u003cdiv class=\"admonition important\"\u003e\n\u003ch3 id=\"2009-update\"\u003e2009 Update\u003c/h3\u003e\n\u003cp\u003eSome of you insist on believing (or so it seems) that this post was written yesterday. It wasn’t. It was written three years ago, though it still gets more hits than most other pages on my site. Understand that some of my opinions have changed, some of the facts have changed, and my writing style has improved immensely since I wrote this. There’s no need to post harsh comments or email me to inform me of how I wrong I am. I am well aware of the recent changes and improvements in technology.\u003c/p\u003e","title":"I Beg to Differ - A Response for Apple"}]