<?xml version="1.0" ?>
<rss version="2.0">
<channel>
<title>Dee Mon's blog</title>
<link>http://www.infognition.com/blog/</link>
<description>Mostly programming languages and video processing</description>
<language>en-us</language>
<pubDate>Sat, 25 Nov 2017 15:55:55 GMT</pubDate>
<item>
<title>A video codec in JavaScript</title>
<link>http://www.infognition.com/blog/2017/video-codec-in-javascript.html</link>
<description>
Recently we released a pure JavaScript implementation of in-browser player for our lossless video codec 
&lt;a href="http://www.infognition.com/ScreenPressor/"&gt;ScreenPressor&lt;/a&gt;. It supersedes our old player
made with Flash. Here's some anecdotal evidence of how fast current JavaScript interpreters in browsers are.
The chart shows Frames Per Second: 
&lt;p&gt;
&lt;img src="http://data.infognition.com/ScreenPressor/decoding_fps.png"&gt;
&lt;p&gt;
Here we took a screen recordin...</description>
<pubDate>Sat, 25 Nov 2017 15:55:55 GMT</pubDate>
</item>
<item>
<title>We're in good company</title>
<link>http://www.infognition.com/blog/2016/good-company.html</link>
<description>
Just noticed our company listed on the page 
&lt;a href="http://dlang.org/orgs-using-d.html"&gt;Organizations using the D Language&lt;/a&gt;, right under eBay and Facebook. Really nice to find oneself in such a good company!
&lt;p&gt;
&lt;img src="http://www.infognition.com/blog/2016/good_company.png"&gt;
&lt;p&gt;
Indeed, &lt;a href="/VideoEnhancer/"&gt;Video Enhancer&lt;/a&gt;, BlogSort, Undup and AutoVideoEnhance are all written in D programming language. As well as some minor inte...</description>
<pubDate>Tue, 30 Aug 2016 15:55:55 GMT</pubDate>
</item>
<item>
<title>Information theory and video upscaling</title>
<link>http://www.infognition.com/blog/2016/information-theory-and-video-upscaling.html</link>
<description>
Often when people first hear about Video Enhancer and its main feature, super resolution video resizing, they say "No way, it cannot work! If information is lost in downsizing you cannot get it back." And when we're talking about total information in a video they are absolutely right. However when looking at particular frames... Here's an experiment for you. I captured a couple of phrases with my two revolutionary ASCII video cameras that capture text, unfortunately one camera has low...</description>
<pubDate>Sat, 30 Jul 2016 15:55:55 GMT</pubDate>
</item>
<item>
<title>Error-checking smart pointer</title>
<link>http://www.infognition.com/blog/2016/error_checking_smart_pointer.html</link>
<description>
As you might know, in the world of Windows programming COM is still actively used, alive and kicking after all these years. It must be usable from plain C so for error handling they use return codes: most functions return HRESULT, an integer that is zero if all went well, negative in case of error and positive if it went "okay but...". Return codes should not be ignored or forgotten, they need to be handled, and in practice it is often the case that all local handling logic reduces to...</description>
<pubDate>Wed, 27 Apr 2016 15:55:55 GMT</pubDate>
</item>
<item>
<title>Static introspection for message passing</title>
<link>http://www.infognition.com/blog/2016/static_introspection_for_message_passing.html</link>
<description>
There is a famous in PLT community paper on free theorems, giving praise to generics and parametricity allowing you to infer a lot about some generic function behavior just from its type, because since such generic function does not know anything about the type of value it gets, it cannot really do much with this value: mostly just pass it around, store somewhere or throw away. On the other end of generics spectrum (call it "paid theorems" if you will) we have languages like D where a...</description>
<pubDate>Sat, 23 Apr 2016 15:55:55 GMT</pubDate>
</item>
<item>
<title>One-pass deshaker</title>
<link>http://www.infognition.com/blog/2015/deshaker.html</link>
<description>
This autumn, by request of our client, we developed a video deshaking method that
works in a single pass, in streaming mode. I know there is a very nice Deshaker filter
for VirtualDub but it works in two passes: first it collects motion data, then plans
for whole movie and in the second pass performs actual changes to the video. When
your video processing pipeline is quite heavy, loaded with many filters or something
computationally expensive, doing the work twice or saving it into a ...</description>
<pubDate>Wed, 25 Nov 2015 15:55:55 GMT</pubDate>
</item>
<item>
<title>Dependent types in half of D</title>
<link>http://www.infognition.com/blog/2015/dependent_types_in_d.html</link>
<description>
Recently I saw a talk by one of active Idris contributors: 
 &lt;a href="https://www.youtube.com/watch?v=AWeT_G04a0A"&gt;David Christiansen - Coding for Types: The Universe Pattern in Idris&lt;/a&gt; where he shows some uses of dependent types. I'd like to use some of those examples to demonstrate
 that we actually have dependent types in D, or, really, in part of it. First let me show some original examples in Idris, a full blown depentently typed language, and then we'll translate t...</description>
<pubDate>Thu, 30 Jul 2015 15:55:55 GMT</pubDate>
</item>
<item>
<title>From native code to browser: Flash, Haxe, Dart or asm.js?</title>
<link>http://www.infognition.com/blog/2014/comparing_flash_haxe_dart_asmjs_and_cpp.html</link>
<description>
If you developed your own video codec and wanted to watch the video in a browser
what would you do? That is a question we faced a few years ago with
&lt;a href="/ScreenPressor/"&gt;ScreenPressor&lt;/a&gt; and at that time
the answer was Flash. It was cross-platform, cross-browser, widely available
and pretty fast if you use the right programming language, i.e. Haxe instead of ActionScript.
So we implemented &lt;a href="http://www.infognition.com/ScreenPressor/web_player.html"&gt;a dec...</description>
<pubDate>Mon, 17 Nov 2014 15:55:55 GMT</pubDate>
</item>
<item>
<title>Optimizations in a multicore pipeline</title>
<link>http://www.infognition.com/blog/2014/optimizations_in_multicore_pipeline.html</link>
<description>
This is a story that happened during the development of 
&lt;a href="/VideoEnhancer/"&gt;Video Enhancer&lt;/a&gt; a few minor versions ago.
It is a video processing application that, when doing its work, shows two
images: "before" and "after", i.e. part of original video frame and the same part
after processing.
&lt;p&gt;
&lt;img src="/blog/2014/ve_before_after.jpg"&gt;
&lt;p&gt;
It uses DirectShow and has a graph where vertices (called filters) are things like
file reader, audio/vide...</description>
<pubDate>Thu, 06 Nov 2014 15:55:55 GMT</pubDate>
</item>
<item>
<title>The real problem with GC in D</title>
<link>http://www.infognition.com/blog/2014/the_real_problem_with_gc_in_d.html</link>
<description>
About a year ago one blog post titled
&lt;a href="http://sealedabstract.com/rants/why-mobile-web-apps-are-slow/"&gt;"Why mobile web apps are slow"&lt;/a&gt;
made a lot of fuss in the internets. In the section about garbage collection it showed one
interesting chart taken from a 2005 
&lt;a href="http://www-cs.canisius.edu/~hertzm/gcmalloc-oopsla-2005.pdf"&gt;paper&lt;/a&gt; 
"Quantifying the Performance of Garbage Collection vs. Explicit Memory Management":
&lt;p&gt;
&lt;img src="http...</description>
<pubDate>Mon, 29 Sep 2014 15:55:55 GMT</pubDate>
</item>
<item>
<title>Why D?</title>
<link>http://www.infognition.com/blog/2014/why_d.html</link>
<description>
If you look at stuff on this site you'll notice a trend: newer apps tend to be written in D 
programming language. There's a &lt;a href="/blogsort/"&gt;photo editing app&lt;/a&gt;, 
&lt;a href="/undup/"&gt;disk space visualizer and analyzer&lt;/a&gt;,
a tool for &lt;a href="/VideoEnhancer/autovideoenhance.html"&gt;automatic video processing&lt;/a&gt;,
a tool for &lt;a href="/blog/2012/deciphering_grf_files.html"&gt;reading DirectShow graph files&lt;/a&gt; as text,
all in D (and all fr...</description>
<pubDate>Fri, 19 Sep 2014 15:55:55 GMT</pubDate>
</item>
<item>
<title>Recursive algebraic types in D</title>
<link>http://www.infognition.com/blog/2014/recursive_algebraic_types_in_d.html</link>
<description>
One of the things D programming language seemingly lacks is support for algebraic data types
and pattern matching on them. This is a very convenient kind of types which most functional
languages have built-in (as well as modern imperative ones like Rust or Haxe). There were 
some attempts at making algebraic types on the library level in D (such as Algebraic template
in std.variant module of D's stdlib) however they totally failed their name: they don't support
recursion and hence are...</description>
<pubDate>Mon, 15 Sep 2014 15:55:55 GMT</pubDate>
</item>
<item>
<title>On Robin Hood hashing</title>
<link>http://www.infognition.com/blog/2014/on_robin_hood_hashing.html</link>
<description>
Recently I played a bit with Robin Hood hashing, a variant of open addressing
hash table. Open addressing means we store all data (key-value pairs) in one big
array, no linked lists involved. To find a value by key we calculate hash for the key,
map it onto the array index range, and from this initial position we start to wander.
In the simplest case called Linear Probing we just walk right from the initial position
until we find our key or an empty slot which means this key is absent...</description>
<pubDate>Sat, 13 Sep 2014 15:55:55 GMT</pubDate>
</item>
<item>
<title>D as a scripting language</title>
<link>http://www.infognition.com/blog/2014/d_as_scripting_language.html</link>
<description>
Many of us encounter small tasks involving some file operations, text processing and
running other processes. These are usually solved using either shell or glue
languages (often called scripting languages because of this) like Python, Perl
or Ruby. Compiled statically typed languages are rarely used in such cases
because popular ones usually require too much effort to write and run a simple
script. However some static languages can actually be used here easily instead
of scripting on...</description>
<pubDate>Fri, 12 Sep 2014 15:55:55 GMT</pubDate>
</item>
<item>
<title>Special treatment for Deshaker</title>
<link>http://www.infognition.com/blog/2014/deshaker.html</link>
<description>
There is a nice filter for VirtualDub (supported by Video Enhancer) called Deshaker
by Gunnar Thalin which can stabilize shaky video. This filter is different from the others
because it works in two passes: first it needs to see the whole video and analyze it
(without producing a meaningful video result yet), and on the second pass it uses collected
data to actually fix the video. The data collected in first pass is stored in a file
which can be specified in filter's options. If you s...</description>
<pubDate>Tue, 27 May 2014 15:55:55 GMT</pubDate>
</item>
</channel>
</rss> 