Updated version of Cider is out. This release is mostly to address the build issues in the Windows version.
Other updates include:
- Added a settings panel in the editor to manage tab stop and highlight mode.
- Better error handling around file permissions.
- Checks for binary files in the file manager.
- Checks for large files in the file manager.
- File manager layout fixes.
Cider Downloads
Cider is a web-based IDE that I have been working on and using to do 95% of my coding over the past year or so (after I spent about a month trying to use nothing but a Chromebook). I have had the project hosted here on GitHub.
https://github.com/jordoncm/cider
I just realized that I have never posted about it here. Anyway the new version sports the following new changes:
- New UI layout based on Bootstrap.
- Groovy language syntax highlighting.
- Fixed bugs around window focus and hotkey capturing for save, searching, etc.
- Added better find UI and functionality in the editor.
- Packaged as a native Mac application.
- Packaged as a native Windows application.
Please try it out and send feedback.
Cider Downloads
The future roadmap includes collaborative editing, Linux builds (deb) and daemon support, more.
I have been really into making App Engine sites lately and one of the developer itches I have had for a while was being able to just grab a valid OAuth2 token for Google Data APIs so I can use it in plugins like Rest Client or just on the URL bar in order to preview data. So I wrote a quick site to do it.
https://oauth2helper.appspot.com/
A sample use would be to get an XML feed of all of your Google Docs.
Scopes:
https://docs.google.com/feeds/
https://docs.googleusercontent.com/
https://spreadsheets.google.com/feeds/
URL to hit:
https://docs.google.com/feeds/default/private/full?v=3&access_token=[put your token here]
I used a CSS layout template called YAML to give the site a simple yet more elegant design.
http://www.yaml.de/
After working with mobile application development for a few years I have finally made the time to publish an of my own into the marketplace.
It is a pregnancy support app that I wrote for myself. It is designed to allow you to organize all of the information you need to gather your things and make it to the hospital once labor begins. It includes hospital information, doctor contact information, a checklist of the items to gather and bring and a list of contacts to keep in close touch with.
You can download the application from the Android Market at: Hospital Plan

This is the hospital information page. You can put in the name, address and phone number of the hospital and with one click either get directions or call the hospital.

This is the hospital bag checklist page. Gives you a central list of things to remember to grab before you head out the door.

This is the contacts page it lets you centralize all the people you need to keep in touch with, without having to sort through your whole list of contacts.

I used Sencha Touch and PhoneGap in hopes to make it easy to publish the application into multiple markets.
I will soon hopefully have an iOS version too.
Due to a number of requests I have cleaned up and decided to release the code for FT2JSON under the Apache license so others can make use of the software for specific applications.
The code can be found here:
https://github.com/jordoncm/ft2json
The main app engine site will of course always be hosted:
http://ft2json.appspot.com/
I have been messing around with Google Fusion Tables a lot over the past few months and I really like the service. However it really bothered me that the only format that the response data came in was CSV. I also wanted to be able to work with Fusion Tables query data entirely on the browser/client side. So I spent part of the weekend writing an application that proxies Fusion Tables API queries and transforms them from CSV into JSON. I also added a simple Javascript that you can embed on your page and then make Fusion Table queries directly from Javascript.
I posted the application on App Engine and you can find it here: http://ft2json.appspot.com
I wrote it in Python and used Tornado Web Server to help parse requests. Tornado works quite well within App Engine.
I am playing with CouchDB a bit this weekend and I am trying to put together a basic application written in HTML and Javascript.
I wanted to use the XMLHttpRequest object to interact with CouchDB; this meant I had to host the code using the web server that is built into CouchDB (to avoid cross domain issues in the browser). However when I first moved the code over from my normal Apache server into the CouchDB server I tried to access the code with my browser at http://localhost:5984/_utils/myapplication and none of my external CSS or Javascript files would load (at least in Firefox).
What I noticed was that since I was using relative paths in the href and src attributes (i.e. <script scr="./file.js" ...) of the link and script tags, the trailing slash on the URL was required for the files to be included properly. I figured this out because when I accessed the same code at http://localhost:5984/_utils/myapplication/, everything worked as expected.
Typically web servers add that slash automatically for you, but for some reason CouchDB does not. To get around this I wrote a quick Javascript that I placed inline, just below the head tag to look for this case and correct it. The script is below.
if(String(window.location).substring((String(window.location).length - 1), String(window.location).length) != '/') {
window.location = String(window.location) + '/';
}
Seems odd that CouchDB does not account for this.
I have been working some with the Gadget Spec and developing gadgets for use on closed networks. I have been using Shindig to render my gadgets and it is really big on caching gadgets for performance. This is quite annoying when you are developing and tweaking a particular gadget because your changes don't get shown like they should when you refresh the browser.
Anyway, it turns out there is a simple fix for this. Normally you call a URL similar to this to render you gadget in Shindig.
http://your-shindig-server/gadgets/ifr?url=http://url/to/your/gadget.xml
To get Shindig to bypass its cache and pull the latest gadget code all you have to do is add a bpc=1 to the URL query string.
http://your-shindig-server/gadgets/ifr?bpc=1&url=http://url/to/your/gadget.xml
This makes working on a gadget a lot less painful.
Here is a Javascript function that I threw together the other day that will take the default format of a MySQL DATETIME or TIMESTAMP field (YYYY-MM-DD HH:MM:SS) and convert it into a Date object in Javascript.
function parse_date(string) {
var date = new Date();
var parts = String(string).split(/[- :]/);
date.setFullYear(parts[0]);
date.setMonth(parts[1] - 1);
date.setDate(parts[2]);
date.setHours(parts[3]);
date.setMinutes(parts[4]);
date.setSeconds(parts[5]);
date.setMilliseconds(0);
return date;
}
Here is a couple of query string parsing functions I put together in Javascript today. This first one will parse the current query string and return an object with properties for each of the arguments in the query string.
function parse_args() {
var args = new Object();
var query = window.location.search.substr(1).split('&');
var tmp = null;
for(var i = 0; i < query.length; i++) {
tmp = query.split('=');
args[tmp[0]] = tmp[1];
}
return args;
}
This second function will find an argument in the query string by name and then return the value, if it exists. If the argument is not found it will return false.
function find_arg_value(name) {
var query = window.location.search.substr(1).split('&');
var tmp = null;
for(var i = 0; i < query.length; i++) {
tmp = query[i].split('=');
if(tmp[0] == name) {
return tmp[1];
}
}
return false;
}