• Stars
    star
    180
  • Rank 206,114 (Top 5 %)
  • Language
    C#
  • License
    Other
  • Created almost 14 years ago
  • Updated almost 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

MonoTouch based Twitter client
TweetStation

	TweetStation was originally a sample program that I created
	for my own use.  I was a fan of the older UI in Echofon and
	liked many of the elements of Tweetie2, but like every
	programmer, I wanted to make some changes.

	It was also a test bed for testing APIs and answering
	MonoTouch users's questions.  It is the original application
	that lead to the creation of MonoTouch.Dialog, as I figured
	that there should be a better way of constructing dialog boxes
	than creating models and delegates left and right.

	TweetStation is an open source, MIT X11 licensed twitter
	client written for MonoTouch.   See the file LICENSE for
	details.

	I setup a web site at: http://tirania.org/tweetstation as
	the oficial user-centric web site for TweetStation.

	The official description for the app is on TweetStation.txt

Building
========

	To build TweetStation, you will need a side-by-side
	MonoTouch.Dialog release, since they are co-developed,
	you will likely need the latest version.

Design Goals
============

   These design goals are just some basic principles, but like any
   other project, they change depending on my mood each day or when
   faced with harsh realities.

   The Murray Hill Style

	For years researchers from Bell Labs at Murray Hill published
	various computer books on C, Unix, compilers and design that
	were incredibly succinct.   They were amazing pieces of code
	that were short and concise.  I call this style of code the
	Murray Hill style.

	The TweetStation code was not designed to be incredibly
	extensible or reusable as-is.   I wrote this code to be succinct
	and short, if it is reusable for other projects it is an 
	unintended side effect.

	If you want to reuse code from TweetStation, you will likely
	want to alter it to suit your needs.

   Exceptions

	The code uses try/catch extensively in the code in areas that
	have to process data from twitter, I assume that the data
	might be broken or that my original assumptions or their
	documentation might be wrong.  You will notice in the code
	that all exceptions are printed out, I want to keep that this
	way for that reason.

   MonoTouch.Dialog

	Most of the UI was created with MonoTouch.Dialog and various
	custom views and Elements designed for twitter.  There is not
	a single UITableView coded in the traditional style.

   Memory Usage

	In some parts of the code I tried to minimize memory usage by
	not creating thousands of objects that would be thrown out
	(Tweet parsing for example), so I just recycle some instances
	sometimes.

	The ImageStore is also specialized for Twitter use, for instance
	the keys kept in the cache and on the file system are keyed by
	a long value and not by the URL, so we are not forced to keep
	the strings for the Urls in memory.

	A general purpose image downloader/cache would use URLs or
	something else.

   Singletons

	There are a handful of singleton classes as well, I tend to
	reset those instead of creating new instances as they would
	avoid creating expensive objects or objects that are known to
	leak in CocoaTouch anyways.

   Pending Task Queue

	I never know if a tweet has been starred or not when there is
	no network connectivity.   With TweetStation all the pending
	requests are kept in a queue and flushed at periodic intervals.

	This is used both to post tweets and favorite posts, allowing
	the settings to take place right away, even if there is no
	network connectivity

Implementation Notes
====================

	In the original TweetStation, I ended up doing a of database
	operations on the main thread, as opposed to doing it on a
	background thread.

	I am moving towards locking the Database.Main to allow the
	parsing of initial tweets to take place in the background

OAuth and xAuth
===============

	TweetStation supports both OAuth and xAuth authentication from
	twitter.   Currently the source code is hardcoded to the values
	that I obtained by registering my app at:

		http://dev.twitter.com/apps

	It uses OAuth by default and it does this by opening an embedded
	UIWebView to let the user enter their login and password and 
	granting the user authorization over at Twitter's site.

	To improve the experience, Twitter offers access to xAuth, but
	this requires application developers to request from Twitter
	special access, you can enable this for your code if you
	negotiate this.

More Repositories

1

TensorFlowSharp

TensorFlow API for .NET languages
C#
3,118
star
2

SwiftTerm

Xterm/VT100 Terminal emulator in Swift
Swift
854
star
3

SwiftGodot

New Godot bindings for Swift
Swift
758
star
4

mono-wasm

JavaScript
523
star
5

TermKit

Terminal Kit - Console UI toolkit for Swift applications
Swift
444
star
6

MonoTouch.Dialog

Tools to simplify creating dialogs with the user using MonoTouch
C#
432
star
7

WasmerSharp

.NET Bindings for the Wasmer Runtime
C#
318
star
8

SwiftTermApp

Swift
284
star
9

PlaticaBot

MacOS, iOS and watchOS ChatGPT client using your own OpenAI key
Swift
185
star
10

XtermSharp

XTerm emulator as a .NET library
C#
156
star
11

redis-sharp

A C#/.NET binding for the Redis server.
C#
152
star
12

SwiftGodotKit

Embed Godot into Swift apps
C
146
star
13

SkiaKit

Swift Bindings to the Skia 2D graphics Library
Swift
130
star
14

TextBufferKit

Swift TextBuffer
Swift
103
star
15

CovidGraphs

Covid Graphs app
Swift
93
star
16

SwiftChatGPT

Simple ChatGPT API
Swift
72
star
17

GodotSwift

Swift bindings for the Godot Game Engine
C
56
star
18

mc

C# based curses file manager
C#
45
star
19

FuchsiaSharp

Bindings to Fuchsia
C#
36
star
20

OpenFlowSharp

Sample CoverFlow implementation for MonoTouch, based on OpenFlow
C#
33
star
21

muget

Command line front end to NuGet that is not overengineered
C#
31
star
22

monotouch-libs

Various MonoTouch bindings and libraries
C#
25
star
23

TldExtract

.NET Library to extracts the root domain, subdomain name, and top level domain from a host name using the Public Suffix List
C#
22
star
24

RealityActions

RealityActions
Swift
18
star
25

SwiftGodotBinary

SwiftGodot - binaries for ease of consumption
Swift
17
star
26

mono-wasm-libc

C
15
star
27

TurboSwift

Swift
14
star
28

mono-wasm-mono

C#
14
star
29

FluidInterfaces

Port of Nathan Gitter's Fluid Interfaces code
C#
14
star
30

MaterialSharp

Material design components for iOS applications written in C#
C#
13
star
31

NetCatNetwork

NetCat implementation using the new Apple Network framework, C# port of the C sample
C#
11
star
32

CovidExtractor

My Covid Extractor
Swift
9
star
33

SwiftGodotDocs

9
star
34

CocoaDriver

Xamarin.Mac-based Cocoa driver for Mono's System.Windows.Forms
C#
8
star
35

Darwin.CopyFile

Bindings for Darwin's CopyFile API
C#
8
star
36

MonoTouch.Bindings

Some bindings for third party libraries
6
star
37

migueldeicaza

Repository for my README
6
star
38

gtk

Fork of Gtk branch 2-24 with all Xamarin patches from github.com/mono/bockbuild applied
C
5
star
39

libgodot

Godot modified to be embeddable as a library, for use in SwiftGodotKit
C++
5
star
40

GodotSwiftLink

Binding module, temporary, while I move it to Godot.
C
4
star
41

PhotoPanner

C# version of Facebooks Photo Panner
C#
4
star
42

Mac-SceneKit-Globe-Test

Sample F# Mac app showing SceneKit in action.
F#
4
star
43

Mono.VFS

C# based Virtual File System API.
4
star
44

SimpleCollage

Simple picture collage with SkiaSharp
C#
4
star
45

til

4
star
46

KeyboardButton

Simple keyboard button in SwiftUI eventually for use in the Terminal Emulator
Swift
4
star
47

MapWrapper

SwiftUI wrapper around MapKit
Swift
4
star
48

SwiftApiExtractIssue

Shows a bug with swift-api-extract
Swift
3
star
49

RosettaMaker

Creates the Rosetta HTML page that shows the C#/Objective-C/C mappings
C#
3
star
50

KitCore.NET

.NET bindings to KitCore - the ultimate core application framework
3
star
51

NailedIt

My Google Glasses app to "Capture Moments" and "Nailed it"
Java
3
star
52

SplashView

C# Port of SplashView https://github.com/callumboddy/CBZSplashView
C#
3
star
53

FileProvider-ios-crashing

Swift
2
star
54

monotouch-samples

MonoTouch Sample Programs
2
star
55

SwiftSH.binaries

Binary for the SwiftSH framework
C
2
star
56

SkiaKit.binaries

Precompiled binaries for various platforms of the runtime used by SkiaKit (SkiaSharp)
2
star
57

CovidExtractorPM

SwiftPM version of CovidExtractor
Swift
2
star
58

paint-mono

Automatically exported from code.google.com/p/paint-mono
C#
2
star
59

ToyPathTracer

Toy path tracer for my own learning purposes
C++
2
star
60

SkiaKitPayloads

Binary payloads directory for the SkiaKit library
Shell
1
star
61

SwiftOnnxMnist

Mnist sample using OnnxRuntime in Swift
C++
1
star
62

iptoloc

IP to Location Tools
C#
1
star
63

TreemapWeb

C#
1
star
64

mlist

Gtk# Mlist widget - managed implementation of a list view (2005 era)
C#
1
star
65

mono-soc-2007

Automatically exported from code.google.com/p/mono-soc-2007
C#
1
star
66

blog-monomac

MonoMac Blog
1
star
67

SwiftDocCPlusPlusBug

Sample of how Swift Docc fails if you use the new Swift C++ interop
Swift
1
star
68

GodotSnippetEditor

A tool to edit Godot documentation code snippets
Swift
1
star
69

SwiftTermDocs

Placeholder to publish the API docs for SwiftTerm
1
star
70

esctest

Mirror from https://gitlab.freedesktop.org/terminal-wg/esctest.git
Python
1
star
71

CoreKitSharp

Bindings to the Ultimate Framework Platform
1
star