| 
View
 

Falcon

Page history last edited by Tantek 10 years, 3 months ago

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)
    • discoverable Atom + Activity Streams feed with support for
      • object-types: note, article
      • verbs: post (implied) 
  5. discoverable update notifications via PubSubHubbub (PuSH).
  6. ... (placeholder) ...
  7. content-type-specific syndication to specific sites
    • text notes
      • 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.
    • blog posts (live as of 2010-231)
      • full content PuSHed realtime with Activity Streams to Google Buzz 
      • title + permashortlink syndicated (via API) to Twitter 
  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.

  • 2012-084 search published content. search box/button implemented via simple HTML5 form to Google site-specific search, on home page and post permalink template. good enough for now. a built-in site search would both be more "indie" and afford the chance to improve search results UI beyond that provided by Google, e.g. show posts in time sequence order, paginate by bim or year, etc.
  • ...  

 

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.)
    • additional Activity Streams support:
      • object-types: comment, status
      • verbs: update 
  5. ... 
  6. personalized PuSH hub.
  7. content-type-specific syndication to specific sites
    • text notes
      • to Identi.ca (awaiting Identi.ca discovery of PuSH hub from personal profile URL, and [ ] remote subscribe to personal updates option - requested 2010-200 in-person during lunch at Bijou Cafe, Portland)
    • status/profile updates
      • relationship update (see related ActivityStreams wiki pages: heart, status, update)
        • to Twitter (e.g. prefix with  icon, form update into a sentence)

        • to Facebook (somehow using their API?)
        • ... does anything else provide any special UI for relationship updates?  
    • geo checkins to Foursquare, Brightkite, Gowalla
    • photos to Flickr
    • events to Plancast, Upcoming
  8. reverse syndication of comments+tags+notes
    • from potentially any site via accepting Salmon slaps
      • e.g. supposedly Buzz, Cliqset, Identi.ca, Status.net send slaps
    • from said specific sites
      • poll and filter Twitter @-replies (so noisy)
      • poll FriendFeed all comments on items feed (if there is such a thing)
      • parse Facebook comment emails, or poll Facebook all comments on items feed (if there is such a thing)
  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. 

  • simple archives navigation links
  • built-in search published content. search published content without having to navigate to an external site and back. built-in site search would both be more "indie" and afford the chance to improve search results UI beyond that provided by Google, e.g. show posts in time sequence order, paginate by bim or year, etc.
    • iteration of (and replacement for) : search published content 
    • requested by: Erin Jo Richey, ...
  • ...

 

 

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) 
    • HTML5+hAtom storage files are time sharded by bim (NewCalendar) for O(1) lookup of entries from dated permalinks and simple sequential reads for time ordered aggregations such as recent/feed view, all entries for a given day, etc.
  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

Comments (0)

You don't have permission to comment on this page.