Falcon



Falcon

 

See https://indiewebcamp.com/Falcon for the latest description and what I'm working on next for Falcon.

 

 

Falcon is a personal publishing (tweeting, blogging, realtime syndicating) web application.  There is an instance of Falcon running at tantek.com and serving/syndicating blog and tweet content.

 

Try the tweeting-only minimal alpha Falcon interface at http://tantek.com/falcon/

 

Download the open source portion of Falcon as part of the CassisProject: https://github.com/tantek/cassis (follow @cassisjs for code updates)

 

Follow @falcon for updates.

 

current support

Per my stated outline for DiSo 2.0 , Falcon currently supports:

  1. personal site+shortlink domain integration
  2. algorithmic URL shortener (Whistle).
  3. hAtom store.
  4. hAtom + h-entry output (+ h-as-note & h-as-article extensions for ActivityStreams object types in HTML)
  5. discoverable update notifications via PubSubHubbub (PuSH).
  6. ... (placeholder) ...
  7. content-type-specific syndication to specific sites
      • to Twitter (distributed from there to Facebook, Cliqset (stopped working 2010-11-22), Friendfeed (stopped working ~2013-07))
      • to Google Buzz via standard rel-me discovery/claiming and PuSH + Atom feed.
  8. ... (placeholder) ...
  9. update authorization via RelMeAuth (OAuth + rel-me)
  10. ... (placeholder) ...

 

additional features

I've had some feature requests from users/readers of the current Falcon install on tantek.com that I've considered and implemented accordingly. reverse chronologically sorted by date deployed live on tantek.com.

 

to be implemented

To be implemented from Diso2 outline (not necessarily in this order)

  1. ... 
  2. ... 
  3. ... 
  4. Activity Streams semantics in hAtom (brainstorm: classnames 'as-note' 'as-article' etc.)
  5. ... 
  6. personalized PuSH hub.
  7. content-type-specific syndication to specific sites
  8. reverse syndication of comments+tags+notes
  9. authoring/editing/comment authorization via RelMeAuth (OAuth + rel-me).
  10. personal OAuth endpoint.  

 

feature requests

These are external feature requests for Falcon (i.e. as deployed on tantek.com) in rough priority order. Feel free to add a feature request (with your name), or add your name to the "requested by" list on an existing feature request if it's something you think is important and like to see me implement in Falcon and deploy on tantek.com. 

 

 

necessary inventions

Summary of inventions/conventions I felt I had to create+build+refine (so far) to start tweeting from my own site:

  1. multi-content-type permalink URL design
  2. algorithmically reversible shortlink URL design and shortener (Whistle).
  3. print-safe NewBase60 encoding
  4. ISO8601 ordinal date (and NewCalendar) library functions
  5. CASSIS JS/PHP client-server hybrid progamming model and library (already opensourced: CassisProject)
  6. HTML5+hAtom storage system (no MySQL, no DBA tax/overhead/struggles) 
  7. "smart" ellipsing function (prefer whole words, punctuation rules, avoid misleading ellipses)
  8. syndication discoverable permashortlinks (indicated in-band at end of content)
  9. item time sequential navigation (Flickr inspired buttons, Facebook photo-album inspired arrow-key keyboard shortcuts)
  10. item shortlink/permalink easy copy/re-use (YouTube inspired).

 

 

interviews

 

FAQ

What is in a Falcon permalink URL

Falcon permalinks are all of the form /YYYY/DDD/CN/{keywords} where YYYY and DDD are from the ISO8601 ordinal date the post was published, C is the content type code (see http://tantek.com/w/Whistle#design for a list of codes), N is the ordinal number of that type of post for that day, and {keywords} are optional dash separated keywords from the post (AKA a post "slug"), in the order they occur in the post.

 

What does the HTML5 hAtom store look like

There is one HTML5+hAtom storage flat file per bim, named with the bim number (1-6), followed by a lowercase 's' and placed into its respective YYYY year directory. Here is an example of of the HTML5+hAtom storage flat file:

Inside each HTML5+hAtom storage flat file is a reverse chronological ordered list of posts encapsulated in hAtom hentry elements, each with an 'id' attribute of the form "dDDDCN" where DDD is the ISO8601 ordinal date the post was published, C is content type code, and N is the ordinal number of that type of post for that day. E.g. id="d240t1". The remainder of the post structure uses the hAtom hentry microformat and respective properties. The post "slug" is stored in-place inside the year-relative permalink URL (the hyperlink with rel="bookmark") - see "What is in a Falcon permalink URL" above for how to find the post "slug" from the permalink URL. I've only added one POSH class name extension so far: "using" for app name used to author/write the post. Links to syndicated copies of posts are represented with visible rel="alternate" links.

 

How is a permalink URL retrieved from storage

  1. The DDD from the permalink URL is converted to a bim number B (using a CassisProject function)
  2. The HTML5+hAtom storage file /YYYY/Bs.html is loaded using PHP DomDocument
  3. The permalink hentry element is retrieved with PHP DomDocument GetElementById by id dDDDCN from the DDD/CN in the permalink URL.

Return to MyNextStartup \ FrontPage