Wednesday, January 2, 2019

Qip

Quiky is great, but it's forte is more in articles. Much more often I need only snippets with notes or memos – programming, cooking and such. Short texts with tags for rapid searches.

It crossed my mind it might be nice to show multiple snippets at once for given intersection of searched tags, and also tag files - particularly photos.

I was once again on a quest for a short name, starting with “Q” and also which wouldn't collide with names of other products.


Qip logo, resembling a swift rocket.

I settled for “Qip”, which is Latin for... nothing :-) Actually, there's no latin word starting with “qi”, but “qui” means “which?” and “quip” allegedly means “a witty remark”, which is both quite suitable.

Wednesday, January 16, 2019

QuacFeeds

RSS, RDF, Atom easily, not inventing wheel. It's similar to each other, so I used XDocument for that with ease.

Every feed item holds a “feed” object, containing basic info about the feed, because in one timeline there are multiple feeds.

As a storage I used serialization, until it became unbearable and I'll do it properly using SQLite database.

Wednesday, January 30, 2019

QuacTweetsRead

Register as Dev on Twitter website.

For starters I used a nice tutorial by Danny Tuppeny for simple Twitter posting and it really worked right away. But I abandoned his solution for one based on TinyTwitter, which I still had to modify heavily.

For example, it's quite old and therefore doesn't support 280 char tweets. I had to add tweet_mode=extended to API call and then in JSON response use full_text instead of text.

Speaking of JSON, for Qip I used heavily modified custom JSON library, even there's the popular Json.NET from Newtonsoft. It's based on per-character loop and I don't think there's much faster approach how to parse it.

I customized it to accept comments and commas after the last element or property (in a JSON5 manner). For viewing I used open source JSON Viewer by Eyal Post.

Problem datetime created_at thanks to solution:

```

DateTime createdAt = DateTime.ParseExact(tweet["created_at"], 

"ddd MMM dd HH:mm:ss +ffff yyyy", new System.Globalization.CultureInfo("en-US"));

```

asdf

Wednesday, January 23, 2019

QuacIcons

…asdf IconsDownload

RSS or favicon

Bitmap as PNG or ICO to PNG

Quac icon as dynamic bitmap.

Custom Quac icons, that gives users a freedom to use whatever icon they please.

Wednesday, January 9, 2019

QuacForms

Start

Everything by hand, designer not working. It was long, but on the other hand the Designer looked “magic”, while it's (obviously) just a code generator.

asdf

Removed ContextMenu, replaced by ContextMenuStrip. Fortunately it was painless.

I spent about a day in total trying to figure out, how to get window's true visibility. I want a shortcut to hide it when it's visible and show it when it's not, regardless of why – it could be minimized, but also obscured by another window.

I wasn't able to find a working solution using either PointToScreen, WindowFromPoint, GetUpdateRect, PointToClient or GetChildAtPoint methods, so ultimately I ended up using GetForegroundWindow.

The core functionality was finished in a roughly 3 days, that's about 24 hrs of programming (read as “looking for solutions” :-) Adding features and polishing took much more time, about another 7 to 10 days. But it's hard to tell, I was adding a few things here and there over time.

It was a big hassle to tweak stuff in my current Twitter client as a browser extension, so it was terrific I was able to do it effortlessly for Quac. Shortly after that I found myself enjoying using Quac and actually preferring it over my current clients. This was a huge relief for me, because I was worried the transition will be difficult and I'd struggle to ditch them for Quac.

It also helped that I used the same keyboard shortcuts (duh... :-), but as a global hotkey, so it always shows Quac and not those extensions. I'm quite conservative, but it took me just a week to be confident enough to switch to latest Firefox Quantum as my main browser for good.

I have to admit, Quac makes me feel warm inside and proud. I can only hope everything will stay the same for years to come and I'm speaking mostly about Twitter API for third-parties.