the singularity of being and nothingness
Archive for July, 2010
Some More on Apologetics
Jul 31st
In my last post on the subject of apologetics, I argued the true spirit of apologetics should be focused on laying out the place of Christian beliefs within the context of the life and community of faith. Instead of trying to “convince” non-believers about the “reasonableness” of the historicity or phenomenology of some point of doctrine, I suggested that the “reasonableness” of Christian belief can only be fully realized in the articulation of these doctrines as emerging from the experience of the faithful themselves. In this way, then, beliefs about the Incarnation, resurrection, etc. are not “truths” that necessarily exist independently of the profession of faith of the community of believers, but rather find their truthfulness and meaningfulness from the mission and identity of the body of Christ within the kingdom of God in the world.
I suggest that the purpose of apologetics was never intended to be about converting others to one’s way of thinking through logic and argumentation. Rather, to recall the famous Petrine passage, Christians are to give an answer “…to everyone who asks you to give the reason for the hope that you have” (I Peter 3:15). The words in bold are important, for they frame the course More >
CFScript Alternative to CFContent
Jul 29th
Ran into this issue today. At work, data returned from CFCs have a bunch of content pre-pended. In regular tag-flow coding, this is super-simple to overcome:
<cfcontent type="text/plain" reset="true" /> <cfreturn mycontent />
Using the cfcontent tag, I can “[discard] output that precedes call to cfcontent” (from the docs :)). This strips out all the garbage that I don’t want, and returns only the awesome data that I need.
Since we’re getting ready to upgrade to CF9, however, I’ve been playing around with writing my ColdFusion components in the new 100% script-based syntax. One problem, though: there is no cfscript version of cfcontent, so I’m back to the original problem.
Fortunately, there is a solution. By tapping into the underlying Java methods that are exposed, we can easily recreate similar functionality. Here’s all it takes:
remote any function getdata() { getpagecontext().getcfoutput().clearall(); � return supersweetdata; }
Nothing to it. And for future reference, take 5 minutes to dump out getpagecontext(). You can see all the nice methods that are available…who knows, you might just find something useful 🙂
Share this:Farewell Napster, Hello MOG
Jul 22nd
For about 4 years now, I have had a premium membership with Napster (no, not the Napster that you remember from college…:)). My $15-odd dollars a month granted me access to millions of songs that I could stream over the internet, or download for quicker playback on up to 3 personal computers. Additionally, I could sync tracks to an MP3 player (up to 3 of them), allowing me to take my music on the road…it only required an annoying license-refresher-sync every month or so.
This worked pretty well for me for a long time. I was too cheap to buy an iPod, , so the 5GB (?) Creative Zen that I mooched off my little brother was the perfect fit. Then it broke (sorry Jared). And then Vista started hating the Napster software. And then all my favorite songs started showing up as only available in 30-second clips. And then I got my iPhone which, of course, isn’t compatible with most of ANYTHING that Napster does. It was time for a change.
So the other night I came across on article on Mashable about the launch of a brand-spanking-new app, a gateway app to the MOG music service.
Well, this was the first I had More >
Some Thoughts on Apologetics
Jul 21st
Recently, I’ve been visiting a variety of apologetics-focused blogs and forums (super exiting, right? :)). During my readings and interactions with the bloggers associated with these sites, I’ve started asking some hard questions about the usefulness of apologetics within the life of faith and mission or the Church.
Given my background (B.S., Pastoral Ministries, M.A. Theological Studies), I’m definitely no stranger to the “logic” of apologetics. Based on the famous Petrine passage, the ultimate purpose of apologetics, as a discipline, is to “give an answer to everyone who asks you to give the reason for the hope that you have” (I Peter 3:15). From 2nd century Justin Martyr’s Apologies, to McDowell’s famous Evidence That Demands A Verdict, to Strobel’s Case for Christ, there is a long, varied, and rich tradition of apologetics within Christian theology. While motivations and level of expertise have varied in the execution, the ultimate goal of each work has been, I think, to show the Christian faith as something “reasonable,” to defend the faith on intellectual grounds.
While this is in itself a noble goal, I think something that is far too often overlooked is the interplay of philosophy, theology and biblical interpretation that happens between the apologist More >
HTML5 Web SQL: Versions
Jul 19th
As mentioned in my last post about Web SQL databases, each Web SQL database consists of a unique name and version. Each database, however, can only have a single version at any given time, so there’s no possibility of older and newer versions running concurrently. To quote the spec, this is provided to “…allow authors to manage schema changes incrementally and non-destructively, and without running the risk of old code (e.g. in another browser window) trying to write to a database with incorrect assumptions.” In other words, instead of trying to manage the hassle of temporarily offloading data, rebuilding the data structure from scratch, and then reloading data when code changes, versioning allows for the detection of the client’s current db version, with the option of programmatically upgrading them to a different (read “new’) version of the database schema. Of course, you could conceivably also use this to detect old versions and point to different code entirely, but that would be a lot of code to manage…
My idea on this is to use the versioning as a way to push incremental database schema changes in a systematic way. For example, you could easily define a complex series of schema More >
HTML5 Web SQL
Jul 18th
A while back, I wrote up a quick post about some of the new client storage options that will be available in HTML5, particularly localStorage and sessionStorage. While they are both pretty nice alternatives to the clunkiness of managing client cookies, they are definitely limited. The biggest limitation is the data structure that each supports (they’re exactly the same, after all, except for lifetime of the data). As I pointed out, while their storage capacity is much greater than that of the old cookie, all data is still managed as key/value pairs. Of course, you can always use JSON encoding to store complex data structures as strings in these options…however, if you need to get at deeper levels of data relationships, these will quickly get VERY clunky and unusable.
Enter Web SQL databases. As the name implies, Web SQL databases are, well, client-based SQL databases (SQL Lite, to be exact) that can be levered through JavaScript. Each “origin” can have a number of databases, each of which has a unique name and version (more about this later). If you use something like the Developer Tools in Chrome, you can see these databases in action–including the databases themselves, child tables, and any data that has More >
Quick Update
Jul 17th
It’s been a few days since my last post. It’s partly because I’ve been busy at work, but also because I’ve been working on a super-sweet demo for a new post, which I hope to publish tomorrow.
While you’re waiting, why not check out the season premier of Psych?
Share this:HTML5 Server-Sent Events
Jul 12th
A common requirement in the era of Web 2.0 (and beyond) technologies is the ability to have “smart” client interfaces that are aware of changes that occur on the server (data, sessions, etc.). Most approaches include some manner of AJAX that regularly polls the server for changes. While this is easy enough to accomplish, it can be a taxing and somewhat annoying process. After all, wouldn’t it be much better if the server could communicate to the client when it has something share, rather than the client mindlessly asking over-and-over-again for the same thing?
In HTML5, this becomes a reality. Enter Server-Sent Events. In a nutshell, server-sent events “enable servers to push data to Web pages over HTTP or using dedicated server-push protocols.” This means, basically, that the client doesn’t have to keep asking for information: the server will notify the client when new information is available.
In it’s present state, server-sent events are only available for Opera and Chrome (6) dev releases. Additionally, they are currently implemented in two different ways. For Opera, the technology utilizes a DOM element (), while Chrome is entirely JS based. For this overview, I’ll be concentrating on the Chrome implementation.
For the example I worked up, More >
More Random Thoughts on Final Fantasy XIII
Jul 12th
A few days ago, I shared my *official* thoughts on Final Fantasy XIII.
Not having touched it since then, here are some additional random thoughts, in no particular order or meaningfulness 🙂
- Final Battle Blues: The final battle (was it 3 or 4 obligatory boss forms?) was WAYYYYY too easy. It could be that I simply leveled up too much in my aborted attempt to complete all of the beast “marks,” but I took out the final baddie (Orphan) without breaking a sweat. In fact, besides the necessarily non-lethal “Judgement” strike in the next-to-last form, all my character’s HP stayed well above half. Of course, that means that I had much more time for slicing and dicing, making quick work of him. Even the dreaded “doom” that was cast on my party in Orphan’s final form was no big deal whatsoever. I annihilated him so quickly that I didn’t even have to think about trying to get around certain death. Pathetic.
- The End of Big Hair?: A hallmark of FF games is big, spiky, crazy hair. From Cloud’s lethal spikes to Wakka’s cone-dome, big, flashy hair has been a certainty. And yes, although we all realize that such hair is, on the basis More >
HTML5(ish) Notifications
Jul 11th
Something that’s coming down the pike pretty soon in tandem with HTML5 is the related, but independent W3C draft of a “Notifications” interface. Basically, this new interface provides a way for the browser to send notification messages on your desktop or device. So as example, while Facebook Chat will currently use AJAX to update the content on the browser page (causing the annoying tab “flicker” when a new message arrives), using the Notifications interface will allow a browser-independent message to be displayed directly on your desktop.
As with the other items we’ve been exploring in our look at HTML5-related technologies, Notifications are really easy to work with. A word of warning, however. Right now, this is only implemented in Chrome, and the W3C spec is itself based upon a webkit-specific API. So in order to make these work right now, you have to use the Chromium API, not the W3C spec. The fundamental principles are precisely the same (since the latter is based on the former), but has some minor differences.
So now for the obligatory example–let’s get my (or someone else’s…) most recent Twitter post and display a notification.
First, let’s create a reference to the Notifications object:
var notification = window.webkitNotifications;
(Notice the “webkit” More >