<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Software on kimoto</title><link>https://new.kymt.me/en/projects/</link><description>Recent content in Software on kimoto</description><generator>Hugo</generator><language>en</language><atom:link href="https://new.kymt.me/en/projects/index.xml" rel="self" type="application/rss+xml"/><item><title>dice</title><link>https://new.kymt.me/en/projects/dice/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/dice/</guid><description>&lt;p&gt;A dice-rolling app.&lt;/p&gt;
&lt;p&gt;→ &lt;a href="http://kymt.me/app/dice"&gt;http://kymt.me/app/dice&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Gauss</title><link>https://new.kymt.me/en/projects/gauss/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/gauss/</guid><description>&lt;p&gt;Software for changing your screen brightness.
It is aimed mainly at FPS gamers; adjusting the setting makes dark areas easier to see, as shown in the images below.
Strictly speaking it does not change the brightness itself: it remaps only the dark color range of the screen to brighter colors, making relatively dark areas more visible without changing the monitor&amp;rsquo;s brightness at all (this is called gamma adjustment).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://new.kymt.me/projects/gauss/sample_gamma1.png" alt="Sample before gamma adjustment"&gt;
&lt;img src="https://new.kymt.me/projects/gauss/sample_gamma2.png" alt="Sample after gamma adjustment"&gt;&lt;/p&gt;</description></item><item><title>GetFriendAvators</title><link>https://new.kymt.me/en/projects/getfriendavators/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/getfriendavators/</guid><description>&lt;p&gt;A tool that fetches the profile icons (the larger versions) of all your Steam friends and saves them in one batch (it can also fetch the default ? icon for anyone who has it).&lt;/p&gt;
&lt;p&gt;I built it as a practice project with Open Steamworks + Windows .NET. It crashes with an error unless Steam is running when you launch it.&lt;/p&gt;
&lt;h2 id="download"&gt;Download&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://assets.kymt.me/gaming/misc/GetFriendAvators_20110524.zip"&gt;GetFriendAvators(2011/05/24)&lt;/a&gt; (&lt;a href="https://assets.kymt.me/gaming/misc/getfriendavators_ss.png"&gt;screenshot&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;→ &lt;a href="https://gist.github.com/986866"&gt;Source code (gist)&lt;/a&gt;&lt;/p&gt;</description></item><item><title>GSD_crosshair</title><link>https://new.kymt.me/en/projects/gsd-crosshair/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/gsd-crosshair/</guid><description>&lt;p&gt;Software that keeps a crosshair (aiming mark) of any image you like displayed at the center of the game screen. It works with software that uses DirectX (32-bit). It is built on GSD, a DirectX hooking library.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://new.kymt.me/projects/gsd-crosshair/crosshair_sample1.png" alt="Crosshair sample 1"&gt;
&lt;img src="https://new.kymt.me/projects/gsd-crosshair/crosshair_sample2.png" alt="Crosshair sample 2"&gt;
&lt;img src="https://new.kymt.me/projects/gsd-crosshair/crosshair_sample3.png" alt="Crosshair sample 3"&gt;&lt;/p&gt;
&lt;h2 id="download"&gt;Download&lt;/h2&gt;
&lt;p&gt;Windows 7 (32/64-bit): &lt;a href="https://assets.kymt.me/files/GSD_crosshair/GSD_crosshair%2820110701%29.zip"&gt;GSD_crosshair(20110701).zip&lt;/a&gt; (&lt;a href="https://assets.kymt.me/files/GSD_crosshair/GSD_crosshair%2820110701%29.zip.asc"&gt;PGP&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;It appears unable to draw over DirectX 10/11 or 64-bit software.
I have not tested other environments, but it might work.&lt;/p&gt;</description></item><item><title>gtasks</title><link>https://new.kymt.me/en/projects/gtasks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/gtasks/</guid><description>&lt;p&gt;A command-line client (Ruby gem) for managing Google Tasks from the terminal. It can list, add, complete, and delete tasks, and clear all completed tasks at once; complete and delete accept a task number or, alternatively, a regular expression matched against task names for batch processing.&lt;/p&gt;
&lt;p&gt;Google&amp;rsquo;s OAuth2 authentication is handled entirely within the command: on first run it starts a small local WEBrick server to receive the callback, then saves the obtained token to a file for reuse.&lt;/p&gt;</description></item><item><title>GyazoIM</title><link>https://new.kymt.me/en/projects/gyazoim/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/gyazoim/</guid><description>&lt;p&gt;A tool that sits in the Windows task tray, takes screenshots, and uploads them to &lt;a href="https://gyazo.com/"&gt;gyazo.com&lt;/a&gt; (or just opens them locally). It takes the plain Gyazo client (gyazowin at the time) and adds keyboard shortcuts, per-window capture, and a carefully built region-selection overlay.&lt;/p&gt;
&lt;h2 id="region-selection-demo"&gt;Region selection demo&lt;/h2&gt;
&lt;p&gt;The selection UI was first built as a standalone prototype and then integrated into GyazoIM. This video shows that prototype (&lt;a href="https://github.com/kimoto/selector"&gt;kimoto/selector&lt;/a&gt;) in action: a translucent overlay covers the whole screen, and the dragged region&amp;rsquo;s size is displayed in real time.&lt;/p&gt;</description></item><item><title>kaiwa</title><link>https://new.kymt.me/en/projects/kaiwa/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/kaiwa/</guid><description>&lt;p&gt;A conversation generator app for drinking parties and the like.&lt;/p&gt;
&lt;p&gt;→ &lt;a href="http://kymt.me/app/kaiwa"&gt;http://kymt.me/app/kaiwa&lt;/a&gt;&lt;/p&gt;</description></item><item><title>kimotter</title><link>https://new.kymt.me/en/projects/kimotter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/kimotter/</guid><description>&lt;p&gt;A Ruby client for posting tweets from the command line. Instead of using the Twitter API directly, it posts by driving the mala API (a web posting form that lived at &lt;code&gt;http://api.ma.la/twitter/&lt;/code&gt;) with &lt;a href="https://github.com/sparklemotion/mechanize"&gt;Mechanize&lt;/a&gt;. It was published as a gem.&lt;/p&gt;
&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;
&lt;p&gt;Requires Ruby 1.9 plus nokogiri and mechanize (per the README).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gem install kimotter
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kimotter &lt;span class="s2"&gt;&amp;#34;ツイート本文&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Before posting, you are asked to agree to a confirmation message extracted from the page. Example run from the README.&lt;/p&gt;</description></item><item><title>l4d2.kymt.me</title><link>https://new.kymt.me/en/projects/l4d2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/l4d2/</guid><description>&lt;p&gt;A server browser for HalfLife2-engine-compatible games (L4D2 edition).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://assets.kymt.me/projects/l4d2-serverbrowser-qm-live.png" alt="L4D2 ServerBrowser - QuickMatch"&gt;&lt;/p&gt;
&lt;p&gt;The same app still lives at &lt;a href="https://game.kymt.me/qm/"&gt;game.kymt.me/qm&lt;/a&gt;, and the screenshot above is of that (the server list&amp;rsquo;s data is frozen as of 2017). As the blurb at the top of the page explains, you double-click the row of the server you want to join and log straight in.&lt;/p&gt;
&lt;p&gt;→ &lt;a href="http://l4d2.kymt.me/"&gt;http://l4d2.kymt.me/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>matchdata-highlight</title><link>https://new.kymt.me/en/projects/matchdata-highlight/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/matchdata-highlight/</guid><description>&lt;p&gt;A small gem that adds a &lt;code&gt;highlight&lt;/code&gt; method to regex match results (Ruby&amp;rsquo;s &lt;code&gt;MatchData&lt;/code&gt;). It returns a string with marker strings inserted around the matched portion. If you omit the markers, ANSI escape sequences from &lt;a href="https://github.com/flori/term-ansicolor"&gt;term/ansicolor&lt;/a&gt; are used, so the match shows up in red in the terminal.&lt;/p&gt;
&lt;p&gt;The library itself is a single file of about 40 lines, with usage examples left as comments at the end of the source.&lt;/p&gt;</description></item><item><title>mizuho_bank</title><link>https://new.kymt.me/en/projects/mizuho_bank/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/mizuho_bank/</guid><description>&lt;p&gt;A library for accessing Mizuho Direct (Mizuho Bank&amp;rsquo;s internet banking) from Ruby. It automates the login page flow (customer number → security questions → password) with &lt;a href="https://github.com/sparklemotion/mechanize"&gt;Mechanize&lt;/a&gt;, letting you pull account balances and transaction statements out as Ruby objects.&lt;/p&gt;
&lt;p&gt;It was published as a gem at the time. In an era with no API, it was a scraper for handling your own account data programmatically.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gem install mizuho_bank
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Usage looks like this (from the README). It is designed to load credentials from &lt;a href="https://github.com/cho45/pit"&gt;Pit&lt;/a&gt;, an account-information manager, rather than hard-coding them.&lt;/p&gt;</description></item><item><title>MouseEPS</title><link>https://new.kymt.me/en/projects/mouseeps/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/mouseeps/</guid><description>&lt;p&gt;Software that displays how many WM_MOUSEMOVE messages an application can receive per second.&lt;/p&gt;
&lt;p&gt;Normally it&amp;rsquo;s around 127, but if you tweak the USB driver&amp;rsquo;s polling frequency (Hz), it goes up accordingly: about 127 at 120Hz and about 507 at 500Hz. I have no idea why it comes out +7 above the Hz value (there doesn&amp;rsquo;t seem to be a bug in the program, but it&amp;rsquo;s a mystery).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://new.kymt.me/images/projects/mouseeps-about-recon.png" alt="MouseEPS’s About dialog (reconstructed from the distributed exe’s resource definitions)"&gt;&lt;/p&gt;</description></item><item><title>mwheel++</title><link>https://new.kymt.me/en/projects/mwheel-plus/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/mwheel-plus/</guid><description>&lt;p&gt;Lets mouse wheel events be delivered to windows that are not active.
A simple program, but very handy (it makes scrolling behave like Mac OSX or GNOME on Linux).&lt;/p&gt;
&lt;h2 id="details"&gt;Details&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;You can temporarily disable it by double-clicking the task tray icon. (Double-click again to re-enable.)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="download"&gt;Download&lt;/h2&gt;
&lt;p&gt;Windows7 (32/64bit): &lt;a href="https://assets.kymt.me/files/wheel&amp;#43;&amp;#43;/wheel&amp;#43;&amp;#43;%2820110701%29.zip"&gt;mwheel_plus(20110701).zip&lt;/a&gt; (&lt;a href="https://assets.kymt.me/files/wheel&amp;#43;&amp;#43;/wheel&amp;#43;&amp;#43;%2820110701%29.zip.asc"&gt;PGP&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;I haven&amp;rsquo;t tested it on other environments, but it might work.&lt;/p&gt;</description></item><item><title>net-irc-mala</title><link>https://new.kymt.me/en/projects/net-irc-mala/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/net-irc-mala/</guid><description>&lt;p&gt;A gateway for reading mala&amp;rsquo;s timeline over IRC. It runs locally as a small IRC server; connect with an IRC client and posts stream into the &lt;code&gt;#malastream&lt;/code&gt; channel in real time.&lt;/p&gt;
&lt;p&gt;As far as the code shows, the upstream is a streaming API at &lt;code&gt;http://api.ma.la/home_timeline/stream&lt;/code&gt;, which delivers JSON containing a body (&lt;code&gt;text&lt;/code&gt;) and an author (&lt;code&gt;user.screen_name&lt;/code&gt;) — a microblog-style timeline.&lt;/p&gt;
&lt;h2 id="internals"&gt;Internals&lt;/h2&gt;
&lt;p&gt;The flow between the IRC client and the streaming API.&lt;/p&gt;</description></item><item><title>pi.kymt.me</title><link>https://new.kymt.me/en/projects/pi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/pi/</guid><description>&lt;p&gt;jpg.to, but for Amazon product images.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://new.kymt.me/images/projects/pi-kymt-me-2012-rerender.png" alt="Top page of pi.kymt.me (December 2012)"&gt;&lt;/p&gt;
&lt;p&gt;The top page consisted of nothing but a single line of usage instructions (from the December 2012 Wayback snapshot). Build a URL like &lt;code&gt;pi.kymt.me/○○.jpg&lt;/code&gt; and it searches Amazon for the ○○ part and returns a huge image of the matching product.&lt;/p&gt;</description></item><item><title>PokemonFlash</title><link>https://new.kymt.me/en/projects/pokemonflash/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/pokemonflash/</guid><description/></item><item><title>retry-handler</title><link>https://new.kymt.me/en/projects/retry-handler/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/retry-handler/</guid><description>&lt;p&gt;A Ruby library that makes it easy to write &amp;ldquo;retry up to N times on failure&amp;rdquo; logic. It adds a &lt;code&gt;retry&lt;/code&gt; method to &lt;code&gt;Proc&lt;/code&gt;, so you just wrap the code you want to retry in a block and can specify the maximum attempts, wait time, and target exceptions.&lt;/p&gt;
&lt;p&gt;It is published as a gem and works on Ruby 1.8/1.9.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gem install retry-handler
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;
&lt;p&gt;When an exception is raised inside the &lt;code&gt;Proc&lt;/code&gt;&amp;rsquo;s block, it automatically retries up to the specified number of times.&lt;/p&gt;</description></item><item><title>ruby-qstat</title><link>https://new.kymt.me/en/projects/ruby-qstat/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/ruby-qstat/</guid><description>&lt;p&gt;A wrapper gem for using &lt;a href="http://qstat.sourceforge.net/"&gt;QStat&lt;/a&gt;, a game server statistics tool, from Ruby. It launches the qstat command and returns the results — server lists fetched from master servers and status queries against individual game servers — as Ruby objects.&lt;/p&gt;
&lt;p&gt;The requirements stated in the README are Ruby 1.9 and QStat 2.12.&lt;/p&gt;
&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gem install ruby-qstat
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Examples from the README.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# マスターサーバーからサーバー一覧を取得&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="no"&gt;QStat&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;query_serverlist&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;hl2master.steampowered.com:27011&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;stm&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;left4dead2&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;maxping&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 個別サーバーの状態を取得&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="no"&gt;QStat&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;xxx.yyy.zzz.qqq&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;a2s&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 個別サーバーの状態を取得(サーバー情報のみ)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="no"&gt;QStat&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;query_serverinfo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;xxx.yyy.zzz.qqq&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;a2s&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="internals"&gt;Internals&lt;/h2&gt;
&lt;p&gt;The library itself is a single file, &lt;code&gt;lib/ruby-qstat.rb&lt;/code&gt;, and the API is provided as class methods on the &lt;code&gt;QStat&lt;/code&gt; class (it cannot be instantiated). Launching the qstat command is centralized in a shared &lt;code&gt;exec_cmd&lt;/code&gt;, and parsing splits into two paths depending on the output format.&lt;/p&gt;</description></item><item><title>SoundTest</title><link>https://new.kymt.me/en/projects/soundtest/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/soundtest/</guid><description>&lt;p&gt;A tool for testing sound localization. Uses OpenAL.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://new.kymt.me/images/projects/soundtest-window-recon.png" alt="SoundTest window (reconstructed from the resource definitions in the distributed exe)"&gt;&lt;/p&gt;
&lt;p&gt;Assuming a person standing at the center, it plays a sound at the position of the button you press, letting you diagnose localization in 8 directions — front, back, left, right, and the diagonals (the description text inside the window is the original wording from back then).&lt;/p&gt;
&lt;p&gt;No screenshot from the time survived, so this image is a restoration that re-renders the dialog definitions embedded in the distributed exe (buttons, text, coordinates) as-is.&lt;/p&gt;</description></item><item><title>spraymaker</title><link>https://new.kymt.me/en/projects/spraymaker/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/spraymaker/</guid><description>&lt;p&gt;A tool for easily creating sprays for Valve&amp;rsquo;s Source engine.
Just drag and drop an image file to convert it.&lt;/p&gt;
&lt;h2 id="details"&gt;Details&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Generates 256x256 sprays&lt;/li&gt;
&lt;li&gt;Supports files with transparency&lt;/li&gt;
&lt;li&gt;Outputs in a high-quality compression format (VXT5)&lt;/li&gt;
&lt;li&gt;Automatically adds the VTF Flags for high-quality settings (NOMOD, NOLOD)&lt;/li&gt;
&lt;li&gt;Can read more than 200 image formats (anything ImageMagick can read)&lt;/li&gt;
&lt;li&gt;Preserves the aspect ratio of the source image, automatically filling the leftover space with transparent pixels&lt;/li&gt;
&lt;li&gt;When given a directory, recursively converts every file in it&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="example"&gt;Example&lt;/h2&gt;
&lt;p&gt;The part labeled (transparent) is actually transparent.&lt;/p&gt;</description></item><item><title>SQCN</title><link>https://new.kymt.me/en/projects/sqcn/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/sqcn/</guid><description>&lt;p&gt;A tool for switching your Steam username (display name) with one click (short for &lt;strong&gt;S&lt;/strong&gt;team &lt;strong&gt;Q&lt;/strong&gt;uick &lt;strong&gt;C&lt;/strong&gt;hange &lt;strong&gt;N&lt;/strong&gt;ame). You register the names you use often and apply one from the list. Built with C# / .NET Framework.&lt;/p&gt;
&lt;h2 id="features"&gt;Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Apply: changes to the selected name&lt;/li&gt;
&lt;li&gt;Apply all: for joining streamers&amp;rsquo; games as a viewer (keeps your usual name history private) — changes to every registered name once, wiping the persona history (with 10 names the history is completely erased)&lt;/li&gt;
&lt;li&gt;Clear history: overwrites the persona history with the digits 1 through 10&lt;/li&gt;
&lt;li&gt;Normally you cannot change your name while offline, but with this tool you can&lt;/li&gt;
&lt;li&gt;The standard UI does not allow single-character names (minimum 2 characters), but this tool does&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Steam must be running when you use it.&lt;/strong&gt; Also, a Steam update broke it at some point, and it has been left unmaintained since.&lt;/p&gt;</description></item><item><title>twitter.kymt.me</title><link>https://new.kymt.me/en/projects/twitter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/twitter/</guid><description>&lt;p&gt;A service that let anyone easily have &amp;ldquo;Takumi Kimoto&amp;rdquo; post from their own Twitter account. You could set a monthly API limit and NG words.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://assets.kymt.me/projects/twitter-kymt-me-2013-rerender.png" alt="Front page of twitter.kymt.me (April 2013)"&gt;&lt;/p&gt;
&lt;p&gt;The April 2013 front page preserved on the Wayback Machine (the archived HTML re-rendered with the CSS of the time). The list of registered users is also real data from back then, with the API limits maxed out into the negatives across the board.&lt;/p&gt;</description></item><item><title>uc_card</title><link>https://new.kymt.me/en/projects/uc_card/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/uc_card/</guid><description>&lt;p&gt;A Ruby library that fetches your unpaid credit card transaction history (usage statements) from the UC Card (&lt;a href="https://www.uccard.co.jp"&gt;www.uccard.co.jp&lt;/a&gt;) member site. It logs in to the member site with Mechanize, opens the statement page, parses the HTML with Nokogiri, and returns the results as Ruby objects.&lt;/p&gt;
&lt;p&gt;Published as a gem, with a command-line tool of the same name bundled in.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gem install uc_card
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uc_card &lt;span class="c1"&gt;# 未払いの取引を一覧表示(オプションは一切ない)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Sample output from the README (merchant names are masked).&lt;/p&gt;</description></item><item><title>vpk</title><link>https://new.kymt.me/en/projects/vpk/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/vpk/</guid><description>&lt;p&gt;VPK (&amp;ldquo;Valve Pak&amp;rdquo;) is the archive format used by the Source Engine, Valve&amp;rsquo;s game engine (see the &lt;a href="https://developer.valvesoftware.com/wiki/VPK"&gt;Valve Developer Wiki article&lt;/a&gt;). This vpk is a Ruby library for reading and writing those VPK files — it can both extract a VPK file and pack a directory into one.&lt;/p&gt;
&lt;p&gt;Published as a gem, with a command-line tool bundled in.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gem install vpk
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;vpk&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# VPK ファイルを展開する&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="no"&gt;VPK&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;VPKFile&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;./path_to.vpk&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;extract_to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;./&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ディレクトリを VPK にまとめる&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="no"&gt;VPK&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;VPKFile&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;archive&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;./path_to_dir&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write_to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;./archive.vpk&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;From the command line it works like this: &lt;code&gt;-c&lt;/code&gt; creates a &lt;code&gt;.vpk&lt;/code&gt; with the same name as the directory, and &lt;code&gt;-x&lt;/code&gt; extracts into the current directory.&lt;/p&gt;</description></item><item><title>vrowser</title><link>https://new.kymt.me/en/projects/vrowser/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/vrowser/</guid><description>&lt;p&gt;A Ruby library for building server browsers for HalfLife2-family (Source Engine) games such as Left 4 Dead 2 and Team Fortress 2. It wraps &lt;a href="http://qstat.sourceforge.net/"&gt;QStat&lt;/a&gt;, a game server statistics tool, and handles the whole pipeline: fetching server lists, recording them to a database, and serving them via a JSON API.&lt;/p&gt;
&lt;p&gt;Published as a gem, with a command-line tool bundled in.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gem install vrowser
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vrowser sample &lt;span class="c1"&gt;# サンプル設定ファイルを生成&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vrowser -f config.yml fetch &lt;span class="c1"&gt;# マスターサーバーからサーバー一覧を取得&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vrowser -f config.yml update &lt;span class="c1"&gt;# 登録済みサーバーの状態を更新&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vrowser -f config.yml daemon &lt;span class="c1"&gt;# 常駐デーモンとして起動&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="internals"&gt;Internals&lt;/h2&gt;
&lt;p&gt;The component layout. The central &lt;code&gt;Vrowser&lt;/code&gt; class ties together the QStat invocations and DB recording via Sequel (an ORM), so the same operations can be called from the CLI, the resident daemon, or the Sinatra app alike.&lt;/p&gt;</description></item><item><title>yp.kymt.me</title><link>https://new.kymt.me/en/projects/yp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://new.kymt.me/en/projects/yp/</guid><description>&lt;p&gt;A service that serves program listings from streaming sites like Twitch and Livetube in the Yellow Page format that PeerCast clients (pcyplite and PecaRecorder) can subscribe to. Updated every 5 minutes.&lt;/p&gt;
&lt;p&gt;The idea was a PeerCast tool that let you check programs from non-PeerCast streaming sites all in one place.&lt;/p&gt;
&lt;h2 id="lists"&gt;Lists&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Twitch&lt;/strong&gt; — program listing YP for twitch.tv (LoL, HoN, SC2, plus CS1.6, Mario64 TAs, and all sorts of things)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Own3d&lt;/strong&gt; — program listing YP for own3d.tv (almost all LoL) *the service shut down on 2013/01/31&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Livetube&lt;/strong&gt; — program listing YP for livetube.cc (stopped on 2021/05/02)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="changelog-verbatim"&gt;Changelog (verbatim)&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2021/05/02: Fix twitch cralwer and stop livetube YP
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2015/06/24: livetubeのcrawlに失敗していたので直した
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2014/10/06: /livetubeindex.txtってところへのアクセスが結構あるので対応してみた
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2014/06/20: 関連サイトのニコ生YPさんがDyndnsの問題で参照できなくなってたのでdeleteした(HTMLタグ的な意味で)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2013/02/03: own3d.tvがサービス終了したのでown3d.tvのYPは更新停止することに
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2012/11/17: Twitch.tvのサイト変更で動作しなくなっていたのをDeveloper JSON APIを利用するように変更してfix
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2012/07/12: livetube.ccサイト変更でうまく取得できてなかったのを修正
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2012/07/12: twitch.tvサイトリニューアルでうまく取得できてなかったのを修正
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2012/07/12: own3dサイトリニューアルでうまく取得できてなかったのを修正
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2011/未明: 公開
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It is also a record of ten years spent fixing the crawlers every time a target site got redesigned.&lt;/p&gt;</description></item></channel></rss>