<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Atsushi Nagase</title><link>https://ngs.io/</link><description>Recent content on Atsushi Nagase</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sat, 03 Oct 2026 06:00:00 +0900</lastBuildDate><atom:link href="https://ngs.io/index.xml" rel="self" type="application/rss+xml"/><item><title>A Hanafuda Koi-Koi App for Apple Platforms</title><link>https://ngs.io/2026/10/03/koikoi-swift/</link><pubDate>Sat, 03 Oct 2026 06:00:00 +0900</pubDate><guid>https://ngs.io/2026/10/03/koikoi-swift/</guid><description>&lt;p&gt;I&amp;rsquo;ve released &lt;strong&gt;Koikoi&lt;/strong&gt;, an app for playing the hanafuda card game Koi-Koi on iPhone / iPad / Mac / Apple Vision Pro.&lt;/p&gt;
&lt;p&gt;There are no ads and no in-app purchases, and it plays offline.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://apps.apple.com/app/koikoi-japanese-card-game/id6797163218"&gt;App Store&lt;/a&gt; / &lt;a href="https://koikoiapp.ngs.io/"&gt;Website&lt;/a&gt;&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/B4I2KRWN7bU?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;</description></item><item><title>An MCP Server That Bridges a Resident Claude Code Session to Slack</title><link>https://ngs.io/2026/08/24/slack-bridge-mcp-server/</link><pubDate>Mon, 24 Aug 2026 02:00:00 +0900</pubDate><guid>https://ngs.io/2026/08/24/slack-bridge-mcp-server/</guid><description>&lt;p&gt;I released &lt;a href="https://github.com/ngs/slack-bridge-mcp-server"&gt;slack-bridge-mcp-server&lt;/a&gt;, an MCP server that bridges a resident Claude Code session on my Mac to a Slack channel.&lt;/p&gt;
&lt;p&gt;I send a message from Slack, the local session picks it up, does the work, and replies where I sent it.&lt;/p&gt;</description></item><item><title>asc-slack-notifier: App Store Connect Review Status in Slack</title><link>https://ngs.io/2026/08/14/asc-slack-notifier/</link><pubDate>Fri, 14 Aug 2026 09:00:00 +0900</pubDate><guid>https://ngs.io/2026/08/14/asc-slack-notifier/</guid><description>&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/ngs/asc-slack-notifier"&gt;asc-slack-notifier&lt;/a&gt;&lt;/strong&gt; is a server I built that receives &lt;a href="https://developer.apple.com/documentation/appstoreconnectapi/webhooks"&gt;App Store Connect webhooks&lt;/a&gt; and posts review status and build events to Slack.&lt;/p&gt;</description></item><item><title>google-mcp-server: Read and Write Google Workspace from LLMs</title><link>https://ngs.io/2026/08/12/google-mcp-server/</link><pubDate>Wed, 12 Aug 2026 09:00:00 +0900</pubDate><guid>https://ngs.io/2026/08/12/google-mcp-server/</guid><description>&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/ngs/google-mcp-server"&gt;google-mcp-server&lt;/a&gt;&lt;/strong&gt; is an MCP server I built that lets Claude and other MCP clients read and write Google Calendar, Drive, Gmail, Sheets, Docs, and Slides.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s a single Go binary, installable via Homebrew:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;brew tap ngs/tap
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;brew install google-mcp-server&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Shiomi: A Simple Tide Chart App</title><link>https://ngs.io/2026/07/28/shiomi/</link><pubDate>Tue, 28 Jul 2026 08:00:00 +0900</pubDate><guid>https://ngs.io/2026/07/28/shiomi/</guid><description>&lt;p&gt;I&amp;rsquo;ve released &lt;strong&gt;Shiomi&lt;/strong&gt;, a tide chart app that runs on iPhone / iPad / Mac / Apple Vision Pro / Apple Watch. &amp;ldquo;Shiomi&amp;rdquo; (潮見) is Japanese for &amp;ldquo;tide watching&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s free, with no ads and no in-app purchases.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://apps.apple.com/app/shiomi-simple-tide-chart/id6754582175"&gt;App Store&lt;/a&gt; / &lt;a href="https://shiomi-app.ngs.io/"&gt;Website&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="what-makes-it-different"&gt;What makes it different&lt;/h2&gt;
&lt;p&gt;Unlike most existing tide apps, Shiomi downloads the harmonic constants for a location — the parameters of the tidal constituents at that latitude and longitude — and stores them in the app. Tide predictions are then computed entirely on device, with no network requests, so it stays fast and responsive offline or out in the field with poor reception.&lt;/p&gt;</description></item><item><title>Modelmap Analyzer Update</title><link>https://ngs.io/2026/07/01/modelmap-analyzer/</link><pubDate>Wed, 01 Jul 2026 05:00:00 +0900</pubDate><guid>https://ngs.io/2026/07/01/modelmap-analyzer/</guid><description>&lt;p&gt;A long-overdue update to &lt;strong&gt;Modelmap Analyzer&lt;/strong&gt;, which I&amp;rsquo;ve been working on since 2019.&lt;/p&gt;</description></item><item><title>Color Recipes: A Simple Color-Scheme Collection</title><link>https://ngs.io/2026/06/23/color-recipes/</link><pubDate>Tue, 23 Jun 2026 09:00:00 +0900</pubDate><guid>https://ngs.io/2026/06/23/color-recipes/</guid><description>&lt;p&gt;I&amp;rsquo;ve published &lt;strong&gt;&lt;a href="https://color.recipes"&gt;color.recipes&lt;/a&gt;&lt;/strong&gt;, a color-scheme collection you can filter by tag.&lt;/p&gt;
&lt;p&gt;Schemes you like can be downloaded or copied in various formats.&lt;/p&gt;
&lt;p&gt;The schemes are managed in a public GitHub repository, so any combination that&amp;rsquo;s missing you can make yourself and add via a PR.&lt;/p&gt;</description></item><item><title>A URL Shortener on the Cloudflare Workers Free Plan, Managed with Terraform</title><link>https://ngs.io/2026/06/13/terraform-cloudflare-url-shortener/</link><pubDate>Sat, 13 Jun 2026 00:00:00 +0900</pubDate><guid>https://ngs.io/2026/06/13/terraform-cloudflare-url-shortener/</guid><description>&lt;p&gt;I&amp;rsquo;ve published &lt;a href="https://github.com/ngs/terraform-cloudflare-url-shortener"&gt;terraform-cloudflare-url-shortener&lt;/a&gt;, a Terraform module that
deploys a tiny URL shortener running entirely on the Cloudflare Workers free
plan. Short links are defined declaratively as a Terraform map and baked into
the Worker script — no KV namespace, no database, no paid features required.&lt;/p&gt;
&lt;p&gt;The module is available on the &lt;a href="https://registry.terraform.io/modules/ngs/url-shortener/cloudflare/latest"&gt;Terraform Registry&lt;/a&gt; as
&lt;code&gt;ngs/url-shortener/cloudflare&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Scrapmd - the Markdown formatted Webpage Scrapbook</title><link>https://ngs.io/2020/06/17/scrapmd/</link><pubDate>Wed, 17 Jun 2020 00:00:00 +0900</pubDate><guid>https://ngs.io/2020/06/17/scrapmd/</guid><description>&lt;p&gt;I’ve published initial version of &lt;a href="https://scrapmd.app"&gt;Scrapmd&lt;/a&gt;, an app that clips webpage content into iCloud Drive with Markdown formatted article body and embedded images.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://apps.apple.com/app/id1517295689"&gt;&lt;img src="https://ngs.io/images/appstore.svg.svg" alt="" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>CI2Go for macOS</title><link>https://ngs.io/2020/05/15/ci2go-maccatalyst/</link><pubDate>Fri, 15 May 2020 00:00:00 +0900</pubDate><guid>https://ngs.io/2020/05/15/ci2go-maccatalyst/</guid><description>&lt;p&gt;I&amp;rsquo;ve published &lt;a href="https://ci2go.app"&gt;CI2Go&lt;/a&gt; the CircleCI client for macOS by porting existing iOS app using &lt;a href="https://developer.apple.com/mac-catalyst/"&gt;Mac Catalyst&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Both iOS and macOS versions are available on App Store in same URL.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://itunes.apple.com/app/id940028427?mt=8"&gt;&lt;img src="https://ngs.io/images/appstore.svg.svg" alt="" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Product website: &lt;a href="https://ci2go.app"&gt;ci2go.app&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Go Release Binary GitHub Action</title><link>https://ngs.io/2019/02/08/go-release-action/</link><pubDate>Fri, 08 Feb 2019 21:00:00 +0900</pubDate><guid>https://ngs.io/2019/02/08/go-release-action/</guid><description>&lt;p&gt;I’ve published Go Release Binary Action on GitHub Marketplace.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/marketplace/actions/go-release-binary"&gt;Go Release Binary Action on GitHub Marketplace&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This GitHub Action builds and uploads Go build artifacts as Release Artifacts automatically when Release was created on GitHub repository.&lt;/p&gt;</description></item><item><title>Import AWS credentials.csv to 1Password using aws1pif</title><link>https://ngs.io/2019/02/07/aws1pif/</link><pubDate>Thu, 07 Feb 2019 21:00:00 +0900</pubDate><guid>https://ngs.io/2019/02/07/aws1pif/</guid><description>&lt;p&gt;&lt;img src="https://ngs.io/2019/02/07/aws1pif/desktop.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve just open-sourced &lt;strong&gt;aws1pif&lt;/strong&gt;, a command line tool that converts AWS credentials.csv to 1Password .1pif file format&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/ngs/aws1pif"&gt;ngs/aws1pif&lt;/a&gt;&lt;/p&gt;</description></item><item><title>CI2Go Today widget support</title><link>https://ngs.io/2018/07/08/ci2go/</link><pubDate>Sun, 08 Jul 2018 09:00:00 +0900</pubDate><guid>https://ngs.io/2018/07/08/ci2go/</guid><description>&lt;p&gt;I&amp;rsquo;ve just released version 2.1.0 of &lt;a href="https://itunes.apple.com/app/id940028427?mt=8"&gt;CI2Go&lt;/a&gt;, the &lt;a href="https://circleci.com"&gt;CircleCI&lt;/a&gt; client for iPhone and iPad.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://itunes.apple.com/app/id940028427?mt=8"&gt;&lt;img src="https://ngs.io/images/appstore.svg.svg" alt="" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;v2.1.0 contains the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Today widget&lt;/li&gt;
&lt;li&gt;SSH connect&lt;/li&gt;
&lt;li&gt;Delete local artifacts&lt;/li&gt;
&lt;li&gt;Open application by URL&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Coveralls plugin for fastlane</title><link>https://ngs.io/2018/07/07/fastlane-plugin-coveralls/</link><pubDate>Sat, 07 Jul 2018 23:59:00 +0900</pubDate><guid>https://ngs.io/2018/07/07/fastlane-plugin-coveralls/</guid><description>&lt;p&gt;I&amp;rsquo;ve just published a &lt;a href="https://fastlane.tools/"&gt;fastlane&lt;/a&gt; &lt;a href="https://github.com/ngs/fastlane-plugin-coveralls"&gt;plugin&lt;/a&gt; that sends Xcode code coverage to &lt;a href="https://coveralls.io/"&gt;Coveralls&lt;/a&gt; and its depending library &lt;a href="https://github.com/ngs/xccoveralls"&gt;xccoveralls&lt;/a&gt; that also works as standalone command line tool.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ngs/fastlane-plugin-coveralls"&gt;ngs/fastlane-plugin-coveralls&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ngs/xccoveralls"&gt;ngs/xccoveralls&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>CI2Go version 2</title><link>https://ngs.io/2018/07/02/ci2go-v2/</link><pubDate>Mon, 02 Jul 2018 09:20:00 +0900</pubDate><guid>https://ngs.io/2018/07/02/ci2go-v2/</guid><description>&lt;p&gt;I&amp;rsquo;ve just released major updated version 2.0.0 of &lt;a href="https://itunes.apple.com/app/id940028427?mt=8"&gt;CI2Go&lt;/a&gt;, the &lt;a href="https://circleci.com"&gt;CircleCI&lt;/a&gt; client for iPhone and iPad.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://itunes.apple.com/app/id940028427?mt=8"&gt;&lt;img src="https://ngs.io/images/appstore.svg.svg" alt="" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;V2 contains the following updates.&lt;/p&gt;</description></item><item><title>Wiplock - Protect main branch from in-progress branches</title><link>https://ngs.io/2016/09/23/wiplock/</link><pubDate>Fri, 23 Sep 2016 02:00:00 +0900</pubDate><guid>https://ngs.io/2016/09/23/wiplock/</guid><description>&lt;p&gt;&lt;img src="https://ngs.io/2016/09/23/wiplock/screen.gif" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;h2 id="tldr"&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;I released &lt;a href="https://wiplock.com"&gt;Wiplock&lt;/a&gt; that protects main branch from pull requests that contains &lt;code&gt;WIP&lt;/code&gt; in the title or incompleted tasks.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://wiplock.com"&gt;https://wiplock.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Wiplock is an OSS built with Go and React + Redux. Please take a look if you&amp;rsquo;re interested in.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/ngs/wiplock"&gt;https://github.com/ngs/wiplock&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Testing Email Delivery in Nightwatch.js End to End test</title><link>https://ngs.io/2016/09/08/nightwatch-mail-test/</link><pubDate>Thu, 08 Sep 2016 17:00:00 +0900</pubDate><guid>https://ngs.io/2016/09/08/nightwatch-mail-test/</guid><description>&lt;p&gt;&lt;img src="https://ngs.io/2016/09/08/nightwatch-mail-test/screen.gif" alt="Screenshot" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve published an example &lt;a href="http://nightwatchjs.org/"&gt;Nightwatch.js&lt;/a&gt; End to End (E2E) testing project that contains Email delivery testing using &lt;a href="https://mandrillapp.com/"&gt;Mandrill&lt;/a&gt; and &lt;a href="https://requestbin.com/"&gt;RequestBin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/ngs/nightwatch-mail-example"&gt;ngs/nightwatch-mail-example on GitHub&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This example project tests subscribing and unsubscribing &lt;a href="http://www.hackernewsletter.com/"&gt;Hacker News Letter&lt;/a&gt; user flow.&lt;/p&gt;</description></item><item><title>Hyperterm Tomorrow Themes</title><link>https://ngs.io/2016/07/17/hyperterm-tomorrow-themes/</link><pubDate>Sun, 17 Jul 2016 13:20:00 +0900</pubDate><guid>https://ngs.io/2016/07/17/hyperterm-tomorrow-themes/</guid><description>&lt;p&gt;I&amp;rsquo;ve published &lt;a href="https://hyperterm.org/"&gt;Hyperterm&lt;/a&gt; themes based on &lt;a href="https://github.com/chriskempson/tomorrow-theme"&gt;Tomorrow Themes&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="how-to-install"&gt;How to install&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm search hyperterm-tomorrow
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$EDITOR ~/.hyperterm.js&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>PGP encrypted messages for Keybase users in our chat rooms</title><link>https://ngs.io/2016/05/14/hubot-keybase/</link><pubDate>Sat, 14 May 2016 07:45:00 +0900</pubDate><guid>https://ngs.io/2016/05/14/hubot-keybase/</guid><description>&lt;p&gt;I&amp;rsquo;ve released &lt;strong&gt;&lt;a href="https://github.com/ngs/hubot-keybase"&gt;hubot-keybase&lt;/a&gt;&lt;/strong&gt;, a &lt;a href="https://hubot.github.com/"&gt;Hubot&lt;/a&gt; script to encrypt messages for &lt;a href="https://keybase.io/"&gt;Keybase&lt;/a&gt; users.&lt;/p&gt;
&lt;p&gt;ref: &lt;strong&gt;&lt;a href="https://github.com/ngs/hubot-keybase"&gt;ngs/hubot-keybase&lt;/a&gt; on GitHub&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Announcing CI2Go v1.3.0</title><link>https://ngs.io/2016/03/25/ci2go/</link><pubDate>Fri, 25 Mar 2016 19:15:00 +0900</pubDate><guid>https://ngs.io/2016/03/25/ci2go/</guid><description>&lt;p&gt;&lt;img src="https://ngs.io/2016/03/25/ci2go/ci2go.gif" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve released v1.3.0 of &lt;a href="https://github.com/ngs/ci2go"&gt;CI2Go&lt;/a&gt; the @circleci client for iOS.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://itunes.apple.com/app/id940028427?mt=8"&gt;&lt;img src="https://ngs.io/images/appstore.svg.svg" alt="" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://itunes.apple.com/app/id940028427?mt=8"&gt;CI2Go on the App Store&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Deploy Swift WebApps on Amazon EC2 Container Services (ECS)</title><link>https://ngs.io/2016/03/04/swift-webapp-on-ecs/</link><pubDate>Fri, 04 Mar 2016 22:50:00 +0900</pubDate><guid>https://ngs.io/2016/03/04/swift-webapp-on-ecs/</guid><description>&lt;h2 id="tldr"&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;Developing Web applications with Swift is pretty fun 🤘&lt;/p&gt;
&lt;p&gt;We can run them on &lt;a href="https://aws.amazon.com/ecs/"&gt;Amazon EC2 Container Services&lt;/a&gt; and I tried to build light-weight &lt;a href="https://www.docker.com/"&gt;Docker&lt;/a&gt; image to deploy more faster.&lt;/p&gt;
&lt;p&gt;Here is an example project I made, check this out :point_down:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ngs/Swifton-TodoApp"&gt;https://github.com/ngs/Swifton-TodoApp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hub.docker.com/r/atsnngs/docker-swifton-example/"&gt;https://hub.docker.com/r/atsnngs/docker-swifton-example/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://circleci.com/gh/ngs/Swifton-TodoApp"&gt;https://circleci.com/gh/ngs/Swifton-TodoApp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Real-time Log Support w/CI2Go the @circleci Client for iOS</title><link>https://ngs.io/2016/01/29/ci2go/</link><pubDate>Fri, 29 Jan 2016 22:15:00 +0900</pubDate><guid>https://ngs.io/2016/01/29/ci2go/</guid><description>&lt;p&gt;&lt;a href="https://itunes.apple.com/app/id940028427?mt=8"&gt;&lt;img src="https://ngs.io/2016/01/29/ci2go/screen.gif" alt="" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I've released new version of CI2Go, the &lt;a href="https://circleci.com"&gt;@circleci&lt;/a&gt; client for iOS that supports real-time log watching.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://itunes.apple.com/app/id940028427?mt=8"&gt;CI2Go on the App Store&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In order to support real-time log watching, I dropped the API Refresh Interval feature from this version.&lt;/p&gt;</description></item><item><title>Generate NSColor / UIColor based on Swift String</title><link>https://ngs.io/2015/12/13/color-hash-swift/</link><pubDate>Sun, 13 Dec 2015 17:00:00 +0900</pubDate><guid>https://ngs.io/2015/12/13/color-hash-swift/</guid><description>&lt;p&gt;&lt;img src="https://ngs.io/2015/12/13/color-hash-swift/screen.gif" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve published a Swift library &lt;a href="https://github.com/ngs/color-hash.swift"&gt;ColorHash&lt;/a&gt;, that generates &lt;code&gt;UIColor&lt;/code&gt; and &lt;code&gt;NSColor&lt;/code&gt; based on given string.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/ngs/color-hash.swift"&gt;ngs/color-hash.swift&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code data-lang="swift"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;import&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;ColorHash&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;let&lt;/span&gt; str = &lt;span style="color:#e6db74"&gt;&amp;#34;こんにちは、世界&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;let&lt;/span&gt; saturation = CGFloat(&lt;span style="color:#ae81ff"&gt;0.30&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;let&lt;/span&gt; lightness = CGFloat(&lt;span style="color:#ae81ff"&gt;0.70&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ColorHash(str, [saturation], [lightness]).color&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is a Swift port of a JavaScript library &lt;a href="https://github.com/zenozeng/color-hash"&gt;Color Hash&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Copy UIColor / NSColor initializer code from Sketch app</title><link>https://ngs.io/2015/12/11/sketch-swift-color/</link><pubDate>Fri, 11 Dec 2015 00:30:00 +0900</pubDate><guid>https://ngs.io/2015/12/11/sketch-swift-color/</guid><description>&lt;p&gt;I&amp;rsquo;ve published &lt;a href="https://github.com/ngs/sketchplugin-swift-color"&gt;Copy Swift Code&lt;/a&gt;, a &lt;a href="http://www.sketchapp.com"&gt;Sketch&lt;/a&gt; app plugin for generating &lt;a href="https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIColor_Class/"&gt;UIColor&lt;/a&gt; and &lt;a href="https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSColor_Class/"&gt;NSColor&lt;/a&gt; initializer Swift code from fill color of selected layers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/ngs/sketchplugin-swift-color"&gt;ngs/sketchplugin-swift-color&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Announcing @circleci client for Apple Watch ⌚️</title><link>https://ngs.io/2015/06/30/ci2go-applewatch/</link><pubDate>Tue, 30 Jun 2015 13:40:00 +0900</pubDate><guid>https://ngs.io/2015/06/30/ci2go-applewatch/</guid><description>&lt;p&gt;Version 1.1.0 of &lt;a href="https://ngs.io/2014/11/26/ci2go/"&gt;CI2Go&lt;/a&gt;, the &lt;a href="https://circleci.com/"&gt;CircleCI&lt;/a&gt; client for iOS is now available on the &lt;a href="https://itunes.apple.com/app/id940028427?mt=8"&gt;AppStore&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://itunes.apple.com/app/id940028427?mt=8"&gt;&lt;img src="https://ngs.io/images/appstore.svg.svg" alt="" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://itunes.apple.com/app/id940028427?mt=8"&gt;CI2Go on the App Store&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This update includes WatchKit Extension.&lt;/p&gt;</description></item><item><title>CI2Go v1.0.0 the @circleci Client for iPhone &amp;amp; iPad</title><link>https://ngs.io/2014/11/26/ci2go/</link><pubDate>Wed, 26 Nov 2014 01:10:00 +0900</pubDate><guid>https://ngs.io/2014/11/26/ci2go/</guid><description>&lt;p&gt;&lt;a href="https://itunes.apple.com/app/id940028427?mt=8"&gt;&lt;img src="https://ngs.io/2014/11/26/ci2go/picture1.png" alt="" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I've released a CircleCI client for iPhone &amp;amp; iPad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://itunes.apple.com/app/id940028427?mt=8"&gt;CI2Go on the App Store&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Apply UIAppearance immediately on the screen</title><link>https://ngs.io/2014/10/26/refresh-ui-appearance/</link><pubDate>Sun, 26 Oct 2014 21:30:00 +0900</pubDate><guid>https://ngs.io/2014/10/26/refresh-ui-appearance/</guid><description>&lt;p&gt;I was looking for how to apply changes made with UIAppearance&amp;rsquo;s proxy method immediately.&lt;/p&gt;
&lt;p&gt;I found a solution in a library &lt;a href="https://github.com/robertwijas/UISS"&gt;UISS&lt;/a&gt;, that handles Stylesheets written with JSON format.&lt;/p&gt;</description></item><item><title>Pick assignee for JIRA issues with hubot-jira-lotto</title><link>https://ngs.io/2014/07/24/hubot-jira-lotto/</link><pubDate>Thu, 24 Jul 2014 10:30:00 +0900</pubDate><guid>https://ngs.io/2014/07/24/hubot-jira-lotto/</guid><description>&lt;p&gt;&lt;img src="https://ngs.io/2014/07/24/hubot-jira-lotto/chat.png" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;I published a &lt;a href="https://hubot.github.com/"&gt;Hubot&lt;/a&gt; script to pick assignee for &lt;a href="https://www.atlassian.com/software/jira"&gt;JIRA&lt;/a&gt; issues.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/ngs/hubot-jira-lotto"&gt;ngs/hubot-jira-lotto&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install --save hubot-jira-lotto&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Fetch distributions and invalidate with hubot-cloudfront</title><link>https://ngs.io/2014/06/28/hubot-cloudfront/</link><pubDate>Sat, 28 Jun 2014 21:00:00 +0900</pubDate><guid>https://ngs.io/2014/06/28/hubot-cloudfront/</guid><description>&lt;p&gt;I published a &lt;a href="https://hubot.github.com/"&gt;Hubot&lt;/a&gt; script to fetch &lt;a href="http://aws.amazon.com/cloudfront/"&gt;Amazon CloudFront&lt;/a&gt; distribution list and invalidate objects.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/ngs/hubot-cloudfront"&gt;ngs/hubot-cloudfront&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install --save hubot-cloudfront&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>TDD Hubot scripts with gulp+mocha</title><link>https://ngs.io/2014/06/13/tdd-hubot-scripts/</link><pubDate>Fri, 13 Jun 2014 12:20:00 +0900</pubDate><guid>https://ngs.io/2014/06/13/tdd-hubot-scripts/</guid><description>&lt;p&gt;I created &lt;a href="https://github.com/search?q=user%3Angs+hubot&amp;amp;type=Repositories&amp;amp;ref=searchresults"&gt;3 Hubot scripts&lt;/a&gt; and published to &lt;a href="http://npmjs.org"&gt;npm&lt;/a&gt;, however I worried about that there are no unit tests with them.&lt;/p&gt;
&lt;p&gt;So I configured them unit tests with &lt;a href="http://gulpjs.com/"&gt;gulp&lt;/a&gt; and &lt;a href="http://visionmedia.github.io/mocha/"&gt;mocha&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Take cross browser screenshots with hubot-browserstack</title><link>https://ngs.io/2014/06/08/hubot-browserstack/</link><pubDate>Sun, 08 Jun 2014 09:30:00 +0900</pubDate><guid>https://ngs.io/2014/06/08/hubot-browserstack/</guid><description>&lt;p&gt;I published a &lt;a href="https://hubot.github.com/"&gt;Hubot&lt;/a&gt; script to take cross browser screenshots with &lt;a href="http://www.browserstack.com/"&gt;BrowserStack&lt;/a&gt;.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;me &amp;gt; hubot screenshot me http://www.google.com/
hubot &amp;gt; Started generating screenshots in http://www.browserstack.com/screenshots/d804f186e460dc4f2a30849a9686c3a8c4276c21&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To add this script run &lt;code&gt;npm install&lt;/code&gt; command in your hubot directory.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install --save hubot-browserstack&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and add &lt;code&gt;hubot-browserstack&lt;/code&gt; to &lt;code&gt;external-scripts.json&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#34;hubot-browserstack&amp;#34;&lt;/span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For more details, visit GitHub repo: &lt;strong&gt;&lt;a href="https://github.com/ngs/hubot-browserstack"&gt;ngs/hubot-browserstack&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>GitHub Notifications for Google Chrome</title><link>https://ngs.io/2014/06/07/github-notifications-crx/</link><pubDate>Sat, 07 Jun 2014 06:00:00 +0900</pubDate><guid>https://ngs.io/2014/06/07/github-notifications-crx/</guid><description>&lt;p&gt;&lt;img src="https://github.com/ngs/github-notifications-crx/raw/master/doc/screen.gif" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;I created a chrome extension to check GitHub Notifications in toolbar icon.&lt;/p&gt;
&lt;p&gt;This displays unread count and lists unread notifications in popup.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://chrome.google.com/webstore/detail/cchmnfkmaijmcbafheknhcafoanipela"&gt;&lt;img src="https://github.com/ngs/github-notifications-crx/raw/master/doc/badge.png" alt="" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;GitHub Repository: &lt;strong&gt;&lt;a href="https://github.com/ngs/github-notifications-crx"&gt;ngs/github-notifications-crx&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Abort Capistrano 2 deployment if remote is dirty</title><link>https://ngs.io/2014/05/11/abort-capistrano-git-dirty/</link><pubDate>Sun, 11 May 2014 19:00:00 +0900</pubDate><guid>https://ngs.io/2014/05/11/abort-capistrano-git-dirty/</guid><description>&lt;p&gt;I configured Capistrano 2 to abort deployment if remote directory is dirty.&lt;/p&gt;
&lt;p&gt;Because uncommited changes in remote directory will cause degrade.&lt;/p&gt;
&lt;p&gt;# Of course, modifying source code in remote directory is bad, but sometimes we need to do it.&lt;/p&gt;</description></item><item><title>Similar Articles on middleman-blog</title><link>https://ngs.io/2014/05/11/middleman-blog-similar/</link><pubDate>Sun, 11 May 2014 12:00:00 +0900</pubDate><guid>https://ngs.io/2014/05/11/middleman-blog-similar/</guid><description>&lt;p&gt;I created a &lt;a href="https://github.com/middleman/middleman-blog"&gt;middleman-blog&lt;/a&gt; extension to lookup similar articles.&lt;/p&gt;
&lt;p&gt;View &lt;strong&gt;&lt;a href="https://github.com/ngs/middleman-blog-similar"&gt;middleman-blog-similar on GitHub&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;You can retrieve similar articles from &lt;code&gt;similar_articles&lt;/code&gt; helper method or &lt;code&gt;Middleman::Blog::BlogArticle#similar_articles&lt;/code&gt; instance method.&lt;/p&gt;</description></item><item><title>Exporting and importing iTerm 2 Color Schemes</title><link>https://ngs.io/2014/05/05/iterm2-color-schemes/</link><pubDate>Mon, 05 May 2014 14:00:00 +0900</pubDate><guid>https://ngs.io/2014/05/05/iterm2-color-schemes/</guid><description>&lt;p&gt;I started to manage stuffs with &lt;a href="https://github.com/ngs/dotfiles/"&gt;dotfiles&lt;/a&gt; git repository instead of &lt;a href="http://boxen.github.com/"&gt;Boxen&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I managed iTerm 2 color schemes with &lt;a href="https://github.com/ngs/puppet-iterm2"&gt;puppet-iterm2&lt;/a&gt; modules, that was very useful.&lt;/p&gt;</description></item><item><title>Universal Code support for middleman-google-analytics</title><link>https://ngs.io/2014/04/16/middleman-google-analytics/</link><pubDate>Wed, 16 Apr 2014 10:00:00 +0900</pubDate><guid>https://ngs.io/2014/04/16/middleman-google-analytics/</guid><description>&lt;p&gt;As &lt;a href="http://analytics.blogspot.jp/2014/04/universal-analytics-out-of-beta-into.html"&gt;Google announced&lt;/a&gt;, Universal Analytics became out of beta.&lt;/p&gt;
&lt;p&gt;This blog is using &lt;a href="https://github.com/danielbayerlein/middleman-google-analytics/"&gt;middleman-google-analytics&lt;/a&gt; to embed Google Analytics code, so I need to paste the snippet or modify the extension to use Universal Analytics.&lt;/p&gt;
&lt;p&gt;The extension helped me a lot, so I started improve that and sent pull requests.&lt;/p&gt;</description></item><item><title>middleman-ogp</title><link>https://ngs.io/2014/04/13/middleman-ogp/</link><pubDate>Sun, 13 Apr 2014 02:20:00 +0900</pubDate><guid>https://ngs.io/2014/04/13/middleman-ogp/</guid><description>&lt;p&gt;I released an OpenGraph Protocol helper extension for Middleman.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/ngs/middleman-ogp"&gt;ngs/middleman-ogp on GitHub&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In your Gemfile&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gem &lt;span style="color:#e6db74"&gt;&amp;#39;middleman-ogp&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Generating JavaScript code to arrange elements to be same with specified HTML or element using jQuery Element Diff</title><link>https://ngs.io/2013/09/01/jquery-element-diff/</link><pubDate>Sun, 01 Sep 2013 12:00:00 +0900</pubDate><guid>https://ngs.io/2013/09/01/jquery-element-diff/</guid><description>&lt;p&gt;&lt;a href="https://github.com/ngs/jquery-elementDiff"&gt;jQuery Element Diff Plugin&lt;/a&gt; is a plugin to generate JavaScript code to arrange elements to be same.&lt;/p&gt;</description></item><item><title>Generating unique selector with jQuery Selectorator</title><link>https://ngs.io/2013/08/18/jquery-selectorator/</link><pubDate>Sun, 18 Aug 2013 12:00:00 +0900</pubDate><guid>https://ngs.io/2013/08/18/jquery-selectorator/</guid><description>&lt;p&gt;&lt;a href="https://github.com/ngs/jquery-selectorator"&gt;jQuery Selectorator Plugin&lt;/a&gt; is a plugin to generate unique selector from jQuery object.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code data-lang="javascript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;$&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;element&amp;#39;&lt;/span&gt;).&lt;span style="color:#a6e22e"&gt;getSelector&lt;/span&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Set &lt;code&gt;options.ignore&lt;/code&gt; to ignore classes, ids, names:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code data-lang="javascript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;$&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;element&amp;#39;&lt;/span&gt;).&lt;span style="color:#a6e22e"&gt;getSelector&lt;/span&gt;({ &lt;span style="color:#a6e22e"&gt;ignore&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; { &lt;span style="color:#a6e22e"&gt;classes&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; [&lt;span style="color:#e6db74"&gt;&amp;#39;ui-droppable&amp;#39;&lt;/span&gt;] } })&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Twitter Bootstrap theme for RDoc</title><link>https://ngs.io/2013/01/20/bootstrap-theme-for-rdoc/</link><pubDate>Sun, 20 Jan 2013 12:00:00 +0900</pubDate><guid>https://ngs.io/2013/01/20/bootstrap-theme-for-rdoc/</guid><description>&lt;p&gt;&lt;a href="http://ngs.github.com/hanna-bootstrap/"&gt;&lt;img src="https://ngs.io/2013/01/20/bootstrap-theme-for-rdoc/theme.png" alt="screen1" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I created a &lt;a href="http://en.wikipedia.org/wiki/RDoc"&gt;RDoc&lt;/a&gt; Generator with &lt;a href="http://getbootstrap.com/"&gt;Bootstrap&lt;/a&gt; forked from &lt;a href="https://github.com/rdoc/hanna-nouveau"&gt;Hanna Nouveau&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ngs.github.io/hanna-bootstrap/"&gt;http://ngs.github.io/hanna-bootstrap/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hanna Bootstrap is available from RubyGems.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gem install hanna-bootstrap&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Or git-clone from the repo if you would.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git clone git://github.com/ngs/hanna-bootstrap.git&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The templates of this generator are written in &lt;code&gt;HAML&lt;/code&gt;, &lt;code&gt;SASS&lt;/code&gt;, &lt;code&gt;CoffeeScript&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You can customize your favorite Bootstrap based theme easily. Enjoy!&lt;/p&gt;</description></item><item><title>Using blink(1) as RSpec formatter</title><link>https://ngs.io/2012/12/19/blink1-rspec-formatter/</link><pubDate>Wed, 19 Dec 2012 06:00:00 +0900</pubDate><guid>https://ngs.io/2012/12/19/blink1-rspec-formatter/</guid><description>&lt;iframe src="//player.vimeo.com/video/91851059?title=0&amp;amp;byline=0&amp;amp;badge=0" class="vimeo" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;I created Ruby library for &lt;a href="https://github.com/ngs/rb-blink1"&gt;blink(1)&lt;/a&gt; that wraps official blink1-lib C interface.&lt;/p&gt;
&lt;p&gt;This video shows runnning RSpec using blink(1) as formatter, shows current status with LED color.&lt;/p&gt;
&lt;p&gt;Both are available on RubyGems&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gem install rb-blink1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gem install blink1-formatter&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;GitHub: &lt;a href="https://github.com/ngs/rb-blink1"&gt;rb-blink1&lt;/a&gt;, &lt;a href="https://github.com/ngs/blink1-formatter"&gt;blink1-formatter&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Evernote SDK for Mac: Async requests and file attachment support</title><link>https://ngs.io/2012/11/22/evernote-sdk-mac/</link><pubDate>Thu, 22 Nov 2012 06:00:00 +0900</pubDate><guid>https://ngs.io/2012/11/22/evernote-sdk-mac/</guid><description>&lt;p&gt;Current &lt;a href="https://github.com/evernote/evernote-sdk-mac/tree/2dc7d3dae864c93952ebc008f987fb219e27883f"&gt;HEAD&lt;/a&gt; of &lt;a href="https://github.com/evernote/evernote-sdk-mac"&gt;Evernote SDK for Mac OS X&lt;/a&gt; does not support async requests but the &lt;a href="https://github.com/evernote/evernote-sdk-ios"&gt;iOS SDK&lt;/a&gt; does.&lt;/p&gt;
&lt;p&gt;So I ported modern Objective-C code (means non-thrift) from the iOS SDK.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/ngs/evernote-sdk-mac"&gt;ngs/evernote-sdk-mac&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This version enables note creation very easy.&lt;/p&gt;</description></item><item><title>Released EverDesktop</title><link>https://ngs.io/2012/11/15/everdesktop-1-0/</link><pubDate>Thu, 15 Nov 2012 20:00:00 +0900</pubDate><guid>https://ngs.io/2012/11/15/everdesktop-1-0/</guid><description>&lt;p&gt;&lt;a href="http://everdesktop.com/"&gt;&lt;img src="2012-11-15-everdesktop-1-0/screen1.png" alt="screen1" loading="lazy" title="Screen1"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve just released &lt;a href="http://everdesktop.com/"&gt;EverDesktop&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;EverDesktop is a small Mac application for clipping files on your Desktop to Evernote, allows you to make tidy your Mac from status bar icon.&lt;/p&gt;</description></item><item><title>Open Graph protocol tag helper for nanoc</title><link>https://ngs.io/2012/11/03/nanoc-og-tags/</link><pubDate>Sat, 03 Nov 2012 07:00:00 +0900</pubDate><guid>https://ngs.io/2012/11/03/nanoc-og-tags/</guid><description>&lt;p&gt;I&amp;rsquo;ve created &lt;a href="http://ogp.me/"&gt;Open Graph protocol&lt;/a&gt; tag helper for &lt;a href="http://nanoc.stoneship.org/"&gt;nanoc&lt;/a&gt; to build my corporate site.&lt;/p&gt;
&lt;p&gt;To use this helper:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download &lt;a href="https://github.com/littleapps/littleapps.github.com/blob/source/lib/nanoc/helpers/og_tags.rb"&gt;Ruby code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Place it to &lt;code&gt;lib/nanoc/helpers/&lt;/code&gt; on your nanoc project.&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;require 'nanoc/helpers/og_tags'&lt;/code&gt; to &lt;code&gt;lib/default.rb&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Now you can use &lt;code&gt;og_tag&lt;/code&gt; helper in your templates.
For more details see the &lt;a href="https://github.com/littleapps/littleapps.github.com/blob/source/spec/og_tags_spec.rb"&gt;spec&lt;/a&gt; or trace my &lt;a href="https://github.com/littleapps/littleapps.github.com/blob/source/layouts/default.haml"&gt;haml template&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>iGist v1.2 - The Gist Client for iPhone, iPad</title><link>https://ngs.io/2012/10/03/igist-1-2/</link><pubDate>Wed, 03 Oct 2012 00:00:00 +0900</pubDate><guid>https://ngs.io/2012/10/03/igist-1-2/</guid><description>&lt;p&gt;&lt;img src="https://ngs.io/2012/10/03/igist-1-2/igist.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;I just released new version of &lt;strong&gt;&lt;a href="http://igistapp.com/"&gt;iGist - The Gist Client&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I rebuilt the app for iOS 6, optimized for iPhone 5's 4 inch screen and supported &lt;em&gt;Share on Facebook&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;This requires iOS 6 or later, supports both iPhone and iPad.&lt;/p&gt;</description></item><item><title>Create Events on Google Calendar with Git Commit</title><link>https://ngs.io/2012/08/31/gitlog2gcal/</link><pubDate>Fri, 31 Aug 2012 12:00:00 +0900</pubDate><guid>https://ngs.io/2012/08/31/gitlog2gcal/</guid><description>&lt;p&gt;To track colleagues' work or let colleagues track my work, we started using Google Calendar with writing Git Commits as events.&lt;/p&gt;</description></item><item><title>Generating Objective-C Literals from JSON</title><link>https://ngs.io/2012/07/26/generating-objc-literals-from-json/</link><pubDate>Thu, 26 Jul 2012 12:00:00 +0900</pubDate><guid>https://ngs.io/2012/07/26/generating-objc-literals-from-json/</guid><description>&lt;p&gt;&lt;a href="http://clang.llvm.org/docs/ObjectiveCLiterals.html"&gt;The modern syntaxes&lt;/a&gt; for NSDictionary, NSArray, NSNumber are supported from Xcode 4.4. To use this easily for testing, I customized JSON#stringify method ported from JSON2.js.&lt;/p&gt;
&lt;p&gt;With node.js, the script can convert JSON from STDIN.&lt;/p&gt;
&lt;p&gt;Also in browser, this works with stripping lines under &lt;code&gt;if(process)&lt;/code&gt; scope.&lt;/p&gt;</description></item><item><title>Released Evernote Plugin for Coda 2</title><link>https://ngs.io/2012/06/17/evernote-codaplugin/</link><pubDate>Sun, 17 Jun 2012 18:00:00 +0900</pubDate><guid>https://ngs.io/2012/06/17/evernote-codaplugin/</guid><description>&lt;p&gt;&lt;a href="http://ngs.github.com/evernote-codaplugin"&gt;&lt;img src="http://ngs.github.com/evernote-codaplugin/images/screen.png" alt="screen" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This plug-in allows you to clip snippets and rendered HTML from Markdown to &lt;a href="http://evernote.com/"&gt;Evernote&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ngs.github.com/evernote-codaplugin"&gt;http://ngs.github.com/evernote-codaplugin&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Released Creole Plugin for Coda 2</title><link>https://ngs.io/2012/05/25/creole-codaplugin/</link><pubDate>Fri, 25 May 2012 20:00:00 +0900</pubDate><guid>https://ngs.io/2012/05/25/creole-codaplugin/</guid><description>&lt;p&gt;&lt;a href="http://ngs.github.com/creole-codaplugin"&gt;&lt;img src="http://ngs.github.com/creole-codaplugin/images/screen.png" alt="screen" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This plug-in allows you to preview and generate HTML from &lt;a href="http://www.wikicreole.org/"&gt;Creole&lt;/a&gt; wiki documents.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ngs.github.com/creole-codaplugin"&gt;http://ngs.github.com/creole-codaplugin&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Released Markdown Plugin for Coda 2</title><link>https://ngs.io/2012/05/25/markdown-codaplugin/</link><pubDate>Fri, 25 May 2012 18:00:00 +0900</pubDate><guid>https://ngs.io/2012/05/25/markdown-codaplugin/</guid><description>&lt;p&gt;&lt;a href="http://ngs.github.com/markdown-codaplugin"&gt;&lt;img src="http://ngs.github.com/markdown-codaplugin/images/screen.png" alt="screen" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This plug-in allows you to preview and generate HTML from &lt;a href="http://daringfireball.net/projects/markdown/"&gt;Markdown&lt;/a&gt; wiki documents.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ngs.github.com/markdown-codaplugin"&gt;http://ngs.github.com/markdown-codaplugin&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Debugging Coda Plug-In with LLDB</title><link>https://ngs.io/2012/05/25/debugging-coda-plug-in-with-lldb/</link><pubDate>Fri, 25 May 2012 12:00:00 +0900</pubDate><guid>https://ngs.io/2012/05/25/debugging-coda-plug-in-with-lldb/</guid><description>&lt;ol&gt;
&lt;li&gt;Open &lt;strong&gt;Edit Scheme&lt;/strong&gt; window (⌘&amp;lt;).&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Run&lt;/strong&gt; pane from side bar.&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;Info&lt;/strong&gt; tab, select &lt;strong&gt;Coda 2.app&lt;/strong&gt; from &lt;strong&gt;Executable&lt;/strong&gt; dropdown.&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;OK&lt;/strong&gt; button to close the window.&lt;/li&gt;
&lt;li&gt;Select your your plug-in target.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Build Settings&lt;/strong&gt; tab, click &lt;strong&gt;Add Build Setting&lt;/strong&gt;, select &lt;strong&gt;Add User-Defined Setting&lt;/strong&gt; and set name as &lt;code&gt;INSTALL_BUNDLE&lt;/code&gt;, value as &lt;code&gt;1&lt;/code&gt; for Debug configuration.&lt;/li&gt;
&lt;li&gt;Switch to &lt;strong&gt;Build Phase&lt;/strong&gt; tab, click &lt;strong&gt;Add Build Phase&lt;/strong&gt; button and select &lt;strong&gt;Add Run Script&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Copy and paste the script bellow.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now you can debug with your LLDB console, enjoy!&lt;/p&gt;</description></item><item><title>Released Gist Plugin for Coda 2</title><link>https://ngs.io/2012/05/23/gist-codaplugin/</link><pubDate>Wed, 23 May 2012 18:00:00 +0900</pubDate><guid>https://ngs.io/2012/05/23/gist-codaplugin/</guid><description>&lt;p&gt;&lt;a href="http://ngs.github.com/gist-codaplugin"&gt;&lt;img src="http://ngs.github.com/gist-codaplugin/images/screen.png" alt="screen" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This plug-in allows you to create public and private gists from current active document.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ngs.github.com/gist-codaplugin"&gt;http://ngs.github.com/gist-codaplugin&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Migrating Coda modes to Coda 2</title><link>https://ngs.io/2012/05/23/migrating-coda-mode-to-coda2/</link><pubDate>Wed, 23 May 2012 11:51:00 +0900</pubDate><guid>https://ngs.io/2012/05/23/migrating-coda-mode-to-coda2/</guid><description>&lt;p&gt;Coda 1.x modes are not compatible with Coda 2.&lt;/p&gt;
&lt;p&gt;This is how to migrate Coda 1.x modes to Coda 2.&lt;/p&gt;</description></item><item><title>jquery-rails confirmation with Bootstrap</title><link>https://ngs.io/2012/04/20/jquery-rails-confirmation-with-bootstrap/</link><pubDate>Fri, 20 Apr 2012 02:15:00 +0900</pubDate><guid>https://ngs.io/2012/04/20/jquery-rails-confirmation-with-bootstrap/</guid><description>&lt;p&gt;In default, jquery-rails prompts with native JavaScript &lt;code&gt;confirm&lt;/code&gt;. That&amp;rsquo;s sucks.&lt;/p&gt;
&lt;p&gt;So I overrode &lt;code&gt;$.rails.fire&lt;/code&gt; method to show Bootstrap style modal instead.&lt;/p&gt;</description></item><item><title>Released iGist - The Gist Client for iPhone, iPad</title><link>https://ngs.io/2012/04/19/igist-initial/</link><pubDate>Thu, 19 Apr 2012 12:00:00 +0900</pubDate><guid>https://ngs.io/2012/04/19/igist-initial/</guid><description>&lt;p&gt;&lt;a href="http://igistapp.com/"&gt;&lt;img src="http://igist.s3.amazonaws.com/images/ipad-screen1.png" alt="iGist" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;</description></item><item><title>About Atsushi Nagase</title><link>https://ngs.io/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ngs.io/about/</guid><description>&lt;p&gt;&lt;img src="https://www.gravatar.com/avatar/e10997c59685f5c742a63b3e3049d4fb.png?size=500" alt="Atsushi Nagase" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;Hello, I am a software developer based in Tokyo, Japan.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m focusing on developing softwares for Desktop, Mobile and Web.&lt;/p&gt;
&lt;p&gt;Current positions are Co-Founder, CEO, Software Developer at &lt;a href="https://ins0.jp"&gt;instance0, inc.&lt;/a&gt;, Director and CTO at &lt;a href="https://enkake.co.jp/"&gt;enkake, Inc.&lt;/a&gt;, Software Engineer at &lt;a href="https://lifeistech.co.jp/"&gt;Life is Tech, Inc.&lt;/a&gt;. Originally started my career as graphic designer, founded a small software house &lt;a href="https://littleapps.jp/"&gt;LittleApps Inc.&lt;/a&gt;, experienced several startup companies from founding phase.&lt;/p&gt;
&lt;p&gt;I love Gadgets, Road cycling, Running, Fishing, Driving, Music, Scale Modeling, 3 kids and 1 wife.&lt;/p&gt;</description></item><item><title>Privacy Policy</title><link>https://ngs.io/privacy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ngs.io/privacy/</guid><description>&lt;p&gt;This privacy policy covers the ngs.io website and the software applications
distributed by Atsushi Nagase (&amp;ldquo;I&amp;rdquo;, &amp;ldquo;me&amp;rdquo;), including open-source tools such as
&lt;a href="https://github.com/ngs/google-mcp-server"&gt;Google MCP Server&lt;/a&gt; and
&lt;a href="https://github.com/ngs/slack-bridge-mcp-server"&gt;Slack Bridge MCP Server&lt;/a&gt;
(collectively, &amp;ldquo;the Apps&amp;rdquo;).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Last updated: August 23, 2026&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="the-website"&gt;The website&lt;/h2&gt;
&lt;p&gt;ngs.io is a static website. It has no user accounts, no forms, and does not
itself collect or store personal information. It is hosted on GitHub Pages,
whose operator may collect standard server logs (such as IP addresses) as
described in the
&lt;a href="https://docs.github.com/en/site-policy/privacy-policies/github-general-privacy-statement"&gt;GitHub Privacy Statement&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Terms of Service</title><link>https://ngs.io/terms/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ngs.io/terms/</guid><description>&lt;p&gt;These terms apply to the software applications distributed by Atsushi Nagase
(&amp;ldquo;I&amp;rdquo;, &amp;ldquo;me&amp;rdquo;), including open-source tools such as
&lt;a href="https://github.com/ngs/google-mcp-server"&gt;Google MCP Server&lt;/a&gt; and
&lt;a href="https://github.com/ngs/slack-bridge-mcp-server"&gt;Slack Bridge MCP Server&lt;/a&gt;
(collectively, &amp;ldquo;the Apps&amp;rdquo;).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Last updated: August 23, 2026&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="license"&gt;License&lt;/h2&gt;
&lt;p&gt;The Apps are open-source software, provided under the license stated in each
project&amp;rsquo;s repository (typically the MIT License). The license text in the
repository governs your rights to use, copy, modify, and distribute the
software.&lt;/p&gt;
&lt;h2 id="no-warranty"&gt;No warranty&lt;/h2&gt;
&lt;p&gt;The Apps are provided &lt;strong&gt;&amp;ldquo;as is&amp;rdquo;&lt;/strong&gt;, without warranty of any kind, express or
implied, including but not limited to the warranties of merchantability,
fitness for a particular purpose, and noninfringement. You use them at your
own risk.&lt;/p&gt;</description></item></channel></rss>