<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Luke Korth</title>
    <description>Personal photography portfolio and occasional writings.</description>
    <link>https://lukekorth.com/</link>
    <atom:link href="https://lukekorth.com/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sat, 23 May 2026 11:48:12 -0400</pubDate>
    <lastBuildDate>Sat, 23 May 2026 11:48:12 -0400</lastBuildDate>
    <generator>Jekyll v4.2.0</generator>
    
      <item>
        <title>Space Calendar</title>
        <description>&lt;p&gt;A while back the New York Times &lt;a href=&quot;https://martzobservatory.org/ny-times-space-calendar/&quot;&gt;shut down their space calendar&lt;/a&gt;,
which I had subscribed to for years. &lt;a href=&quot;https://www.nytimes.com/explain/2023/astronomy-space-calendar&quot;&gt;It&lt;/a&gt;
was a single curated calendar feed covering rocket launches, moon phases, eclipses,
meteor showers and more. I couldn’t find a good replacement so I set out to build my own twist on it and wrote
&lt;a href=&quot;https://github.com/lkorth/space-calendar&quot;&gt;Space Calendar&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Space Calendar generates personalized ICS feeds you can subscribe to in Google Calendar, Apple
Calendar, Outlook, or anything else that supports calendar subscriptions. You can pick what
categories you want — launches, sky events, planetary events, space history anniversaries, and more —
and get a URL to subscribe to. It includes the things you’d expect — moon phases, top meteor showers
— but also includes local astronomy club events, recently discovered asteroids, and localized,
up-to-date aurora forecasts.&lt;/p&gt;

&lt;p&gt;Most of the geometric data is static. Moon phases and eclipses don’t change so they’re pre-computed
from USNO and JPL data via a GitHub Actions workflow. Rocket launch schedules are temperamental, so they’re
pulled from The Space Devs Launch Library and cached hourly. Aurora forecasts come from NOAA
and refresh every few hours. All run at the edge on Cloudflare Workers.&lt;/p&gt;

&lt;p&gt;You can set it up at &lt;a href=&quot;https://space-calendar.lukekorth.com&quot;&gt;space-calendar.lukekorth.com&lt;/a&gt; and the
source is on &lt;a href=&quot;https://github.com/lkorth/space-calendar&quot;&gt;GitHub&lt;/a&gt;. Ideas, requests, and contributions
are welcome.&lt;/p&gt;
</description>
        <pubDate>Mon, 18 May 2026 00:00:00 -0400</pubDate>
        <link>https://lukekorth.com/journal/space-calendar/</link>
        <guid isPermaLink="true">https://lukekorth.com/journal/space-calendar/</guid>
        
        
        <category>Space</category>
        
        <category>Open Source</category>
        
      </item>
    
      <item>
        <title>Getting an SSL Certificate</title>
        <description>&lt;p&gt;Two or three times a year I end up needing to update my expiring SSL certificates. Each time I have
to look up the one or two commands I need and every time it takes two or three websites to find the
right information so I’ve recorded it here for future reference and in the hopes that it helps
someone else as well.&lt;/p&gt;

&lt;p&gt;Generating a new CSR:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;openssl req &lt;span class=&quot;nt&quot;&gt;-new&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-newkey&lt;/span&gt; rsa:2048 &lt;span class=&quot;nt&quot;&gt;-nodes&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-keyout&lt;/span&gt; example_com.key &lt;span class=&quot;nt&quot;&gt;-out&lt;/span&gt; example_com.csr
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;OpenSSL will prompt you for the details of the certificate, they can be filled out in any level of
detail you wish. The common name that is requested should match the domain the certificate will be
used for; for wildcard certs the subdomain should be a star, for example &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;*.example.com&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Once the CSR has been generated it should be submitted to the certificate authority. In return they
will send your new certificate along with a copy of the intermediate and root certificates. The
intermediate and root certificates will need to be chained or concatenated to your new certificate
as follows:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;cat &lt;/span&gt;example_com.crt intermediate_cert.crt root_cert.crt &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; ssl-cert.crt
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Note:&lt;/em&gt; you may need to consult your certificate authority’s documentation to find which certificate
is the intermediate and which is the root. For PositiveSSL through Comodo, purchased using
NameCheap, my concatination was:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;cat &lt;/span&gt;example_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; ssl-cert.crt
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You can now take the concatenated SSL certificate and your private key that was created during the
CSR generation and use it with your web server of choice.&lt;/p&gt;
</description>
        <pubDate>Mon, 09 Mar 2015 00:00:00 -0400</pubDate>
        <link>https://lukekorth.com/journal/getting-an-ssl-certificate/</link>
        <guid isPermaLink="true">https://lukekorth.com/journal/getting-an-ssl-certificate/</guid>
        
        
        <category>Website</category>
        
        <category>Tutorial</category>
        
      </item>
    
      <item>
        <title>500px Embedding for Jekyll</title>
        <description>&lt;h1 id=&quot;update&quot;&gt;Update&lt;/h1&gt;

&lt;p&gt;On June 15th, 2018 500px &lt;a href=&quot;https://support.500px.com/hc/en-us/articles/360002435653-API-&quot;&gt;shut off their API&lt;/a&gt;.
This plugin used the 500px API to retrieve information about a photo in order to render the embedded
html and no longer functions without the API.&lt;/p&gt;

&lt;h1 id=&quot;original-post&quot;&gt;Original Post&lt;/h1&gt;

&lt;p&gt;From time to time I like to read through &lt;a href=&quot;https://iso.500px.com/&quot;&gt;500px ISO&lt;/a&gt; to look at the amazing
photos and gather some inspiration. One of my favorite parts of 500px ISO is the overlay on the
photos that allow you to vote and also link directly to the photo and photographer on
&lt;a href=&quot;http://500px.com&quot;&gt;500px&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I recently realized 500px ISO was just using the embedded snippets built right into 500px. On 500px,
right next to the sharing buttons, there is an embed button that provides a chunk of html and some
javascript to embed a photo. Since I’d rather not copy the chunk of html for every photo I want to
embed, I wrote &lt;a href=&quot;https://github.com/lkorth/jekyll-500px-embed&quot;&gt;jekyll-500px-embed&lt;/a&gt; to use on my
website. jekyll-500px-embed is a Jekyll plugin that adds a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;500px&lt;/code&gt; Liquid tag for use on your Jekyll
powered website. The &lt;a href=&quot;https://github.com/lkorth/jekyll-500px-embed/blob/master/README.md&quot;&gt;README&lt;/a&gt;
details the setup required for the plugin, but once it’s setup you can simply pass the photo’s id to
the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;500px&lt;/code&gt; tag&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;{% 500px 89255597 %}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;and when your site is built, it will produce the following&lt;/p&gt;

&lt;div class=&quot;pixels-photo&quot;&gt;
  &lt;p&gt;&lt;img src=&quot;https://drscdn.500px.org/photo/89255597/m%3D900/v2?user_id=647958&amp;amp;webp=true&amp;amp;sig=fb857239a869387efeb9378c2c7a0ecde86126b93cc3d9e4e493f06d8d3ba50b&quot; alt=&quot;Trail Through the Redwoods by Luke Korth on 500px.com&quot; /&gt;&lt;/p&gt;
  &lt;a href=&quot;https://500px.com/photo/89255597/trail-through-the-redwoods-by-luke-korth&quot; alt=&quot;Trail Through the Redwoods by Luke Korth on 500px.com&quot;&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;https://500px.com/embed.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/lkorth/jekyll-500px-embed&quot;&gt;jekyll-500px-embed&lt;/a&gt; is available on GitHub. New
features and pull requests are welcome.&lt;/p&gt;
</description>
        <pubDate>Mon, 08 Dec 2014 00:00:00 -0500</pubDate>
        <link>https://lukekorth.com/journal/500px-embedding-for-jekyll/</link>
        <guid isPermaLink="true">https://lukekorth.com/journal/500px-embedding-for-jekyll/</guid>
        
        
        <category>Jekyll</category>
        
        <category>Photography</category>
        
        <category>Website</category>
        
      </item>
    
      <item>
        <title>Android 5.0 Breaks Dislock</title>
        <description>&lt;p&gt;Since the final release of Android Lollipop has started to roll out to devices in the last week or two
many users of &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.lukekorth.pebblelocker&quot;&gt;Dislock&lt;/a&gt;
have noticed that it no longer removes the pin or password set on their device. I’ve spent a lot
of time testing and trying a few workarounds, but the results are all the same, the removal
of a pin, password or pattern has no effect until after a reboot. This breaks Dislock on Lollipop and most
likely future versions of Android. &lt;a href=&quot;http://benhirashima.com/skiplock/faq/&quot;&gt;Other apps&lt;/a&gt; like Dislock have
also had the same problem. A few days ago I published an update to Dislock on the Play Store that restricts
it to KitKat or older version of Android, specifically Dislock only supports API 14-19, Android 4.0 - 4.4.&lt;/p&gt;

&lt;p&gt;It’s sad to see a breaking change in Android effectively kill an app that I’ve spent so much time and effort
working on and supporting for close to two years now with many thousands of users.
The user base of Dislock has a large majority on KitKat and on devices that will very soon receive
over-the-air updates to Lollipop.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/media/dislock-device-versions.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The light at the end of the tunnel for users is Lollipop has very similar features built into the OS now
and they will be able to transition over to them when upgrading. It’s possible that this change was
deliberate to prevent Dislock and apps like it from interfering with the now built in support.&lt;/p&gt;

&lt;p&gt;Please feel free to comment or email me if you have further questions.&lt;/p&gt;
</description>
        <pubDate>Mon, 17 Nov 2014 00:00:00 -0500</pubDate>
        <link>https://lukekorth.com/journal/android-5-breaks-dislock/</link>
        <guid isPermaLink="true">https://lukekorth.com/journal/android-5-breaks-dislock/</guid>
        
        
        <category>Android</category>
        
      </item>
    
      <item>
        <title>Photo Paper</title>
        <description>&lt;h1 id=&quot;update&quot;&gt;Update&lt;/h1&gt;

&lt;p&gt;On June 15th, 2018 500px &lt;a href=&quot;https://support.500px.com/hc/en-us/articles/360002435653-API-&quot;&gt;shut off their API&lt;/a&gt;.
Photo Paper’s features rely on the 500px API and no longer function without access to the API.&lt;/p&gt;

&lt;h1 id=&quot;original-post&quot;&gt;Original Post&lt;/h1&gt;

&lt;p&gt;I’m a big fan of &lt;a href=&quot;http://500px.com/&quot;&gt;500px&lt;/a&gt;, from time to time I post &lt;a href=&quot;https://500px.com/LukeKorth&quot;&gt;my photos&lt;/a&gt; there and
I’ll happily spend hours looking through the amazing photos that others have posted. One day I was staring at the same
boring wallpaper on my phone and I thought it would be really nice to have a live wallpaper that used photos from 500px.
Unsurprisingly &lt;a href=&quot;https://play.google.com/store/search?q=500px+wallpaper&amp;amp;c=apps&quot;&gt;there are several in the Play Store&lt;/a&gt;
ranging from really bad to pretty good. I gave them a try, but I wasn’t very happy with them. Several of them
are freemium and most of the ones I’ve tried are live wallpapers and continuously use a lot of ram.
It also bugged me that none of them were open source.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;center&quot; src=&quot;/media/photo-paper/screenshots.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;After thinking about if for a little while, I decided to develop my own app that automatically updates the
wallpaper instead of being a live wallpaper. Using a few libraries it was very easy to develop in just a
few hours time. Users of the app have a range of options for filtering the type of photos they would like
to see as their wallpaper along with how frequently they should update. I’ve released
&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.lukekorth.photo_paper&quot;&gt;Photo Paper&lt;/a&gt; to the Play Store
and it is also &lt;a href=&quot;https://github.com/lkorth/photo-paper&quot;&gt;open source&lt;/a&gt; on GitHub.&lt;/p&gt;

&lt;p&gt;As always feel free to comment here, &lt;a href=&quot;https://github.com/lkorth/photo-paper/issues&quot;&gt;create an issue on GitHub&lt;/a&gt;
or &lt;a href=&quot;https://github.com/lkorth/photo-paper/pulls&quot;&gt;contribute with a pull request&lt;/a&gt;.&lt;/p&gt;
</description>
        <pubDate>Wed, 12 Nov 2014 00:00:00 -0500</pubDate>
        <link>https://lukekorth.com/journal/photo-paper/</link>
        <guid isPermaLink="true">https://lukekorth.com/journal/photo-paper/</guid>
        
        
        <category>Android</category>
        
        <category>Photography</category>
        
      </item>
    
      <item>
        <title>Astrophotography Workshop</title>
        <description>&lt;p&gt;At the end of August I had the chance to attend an astrophotography workshop by &lt;a href=&quot;http://www.sean-parker.com/about/&quot;&gt;Sean Parker&lt;/a&gt;
in &lt;a href=&quot;https://www.google.com/maps/place/Speedboat+Beach/@39.2218097,-120.0067569,17z/data=!4m7!1m4!3m3!1s0x80997ae878dc7281:0xb8f7788500bf7b78!2sSpeedboat+Beach+access,+Kings+Beach,+CA+96143!3b1!3m1!1s0x0:0x78b59b82cd2eae98&quot;&gt;North Lake Tahoe&lt;/a&gt;.
This was my first time attending a photography workshop of any kind and I didn’t know quite what to expect.&lt;/p&gt;

&lt;p&gt;After signing up Sean was very helpful and knowledgeable, recommending lenses and making sure I had all the gear
I needed. I have tried my hand at astrophotography in the past and never had great results so I was looking forward to learning
from such a talented photographer. When I arrived, Sean talked through everything I needed to know about setup,
camera settings, shooting the night sky and milky way. Within 15 minutes I had my camera setup and was shooting.
One of my best photos of the night came from the first few I took.&lt;/p&gt;

&lt;div class=&quot;img-caption aligncenter&quot;&gt;
  &lt;picture&gt;
    &lt;source srcset=&quot;/photos/posts/2014-11-09-astrophotography-workshop/milky-way_thumb.webp&quot; type=&quot;image/webp&quot; /&gt;
    &lt;source srcset=&quot;/photos/posts/2014-11-09-astrophotography-workshop/milky-way_thumb.jpg&quot; type=&quot;image/jpeg&quot; /&gt;
    &lt;img class=&quot;size-large&quot; src=&quot;/photos/posts/2014-11-09-astrophotography-workshop/milky-way_thumb.jpg&quot; alt=&quot;&quot; /&gt;
  &lt;/picture&gt;
  &lt;p class=&quot;img-caption-text&quot;&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;After spending some time learning how to shoot the milky way and take composite photos, Sean taught us about light painting
with headlamps and other light sources. To finish up our shoot on the beach we did a series of self portraits,
resulting in my favorite photo of the night.&lt;/p&gt;

&lt;div class=&quot;img-caption aligncenter&quot;&gt;
  &lt;picture&gt;
    &lt;source srcset=&quot;/photos/posts/2014-11-09-astrophotography-workshop/star-gazing-self-portrait_thumb.webp&quot; type=&quot;image/webp&quot; /&gt;
    &lt;source srcset=&quot;/photos/posts/2014-11-09-astrophotography-workshop/star-gazing-self-portrait_thumb.jpg&quot; type=&quot;image/jpeg&quot; /&gt;
    &lt;img class=&quot;size-large&quot; src=&quot;/photos/posts/2014-11-09-astrophotography-workshop/star-gazing-self-portrait_thumb.jpg&quot; alt=&quot;&quot; /&gt;
  &lt;/picture&gt;
  &lt;p class=&quot;img-caption-text&quot;&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;For the second part of the night we drove up the mountain and setup to take star trails. We shot a few photos to get
setup and then let our cameras do the work. I ended up shooting for 80 minutes and taking 191 photos.
The work came later during post processing where I batch edited all the raws and then edited out all of
the planes from each individual image. Once this was done I used &lt;a href=&quot;http://www.markus-enzweiler.de/StarStaX/StarStaX.html&quot;&gt;StarStaX&lt;/a&gt;
to combine all 191 photos into a single photo.&lt;/p&gt;

&lt;div class=&quot;img-caption aligncenter&quot;&gt;
  &lt;picture&gt;
    &lt;source srcset=&quot;/photos/posts/2014-11-09-astrophotography-workshop/star-trails_thumb.webp&quot; type=&quot;image/webp&quot; /&gt;
    &lt;source srcset=&quot;/photos/posts/2014-11-09-astrophotography-workshop/star-trails_thumb.jpg&quot; type=&quot;image/jpeg&quot; /&gt;
    &lt;img class=&quot;size-large&quot; src=&quot;/photos/posts/2014-11-09-astrophotography-workshop/star-trails_thumb.jpg&quot; alt=&quot;&quot; /&gt;
  &lt;/picture&gt;
  &lt;p class=&quot;img-caption-text&quot;&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;Almost as an after thought I decided to try a timelapse as well since I already had the photos and went through all the work
to edit them. I’m pretty happy with the result having never done it before.&lt;/p&gt;

&lt;div class=&quot;img-caption aligncenter&quot;&gt;
  &lt;div style=&quot;padding: 56.25% 0 0 0; position: relative;&quot;&gt;
    &lt;iframe src=&quot;//player.vimeo.com/video/112594255?loop=1&quot; style=&quot;position: absolute; top: 0; left: 0; width: 100%; height: 100%;&quot; frameborder=&quot;0&quot; webkitallowfullscreen=&quot;&quot; mozallowfullscreen=&quot;&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
  &lt;/div&gt;
  &lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;

&lt;p&gt;I attempted to shoot the following night as well, but the evening turned out to be very cloudy.
The workshop couldn’t have gone better, Sean is an excellent teacher and a phenomenal photographer,
he is more than happy to share the tools and techniques he has spent so much time finding and developing. I
learned a great deal about photography and the night sky in general. If you’re at all interested in
photography I highly recommend you take one of his workshops, I know I look forward to the next time I can attend one of
Sean’s workshops. I also have a feeling I’m going to be spending a lot of money on gear in the future, I’m hooked.&lt;/p&gt;
</description>
        <pubDate>Sun, 09 Nov 2014 00:00:00 -0500</pubDate>
        <link>https://lukekorth.com/journal/astrophotography-workshop/</link>
        <guid isPermaLink="true">https://lukekorth.com/journal/astrophotography-workshop/</guid>
        
        
        <category>Photography</category>
        
        <category>Workshop</category>
        
      </item>
    
      <item>
        <title>Pebble Locker Renamed to Dislock</title>
        <description>&lt;p&gt;A week and a half ago I released an update to Pebble Locker that changed the name to
&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.lukekorth.pebblelocker&quot;&gt;Dislock&lt;/a&gt;.
For eight months now Pebble Locker has supported many more devices than just Pebbles and it
was past time for a new name. Another factor in the name change was Pebble changing their recommendations
on how apps are named to make it clearer who is developing the apps.&lt;/p&gt;

&lt;p&gt;Along with the rename comes more free features. Previously only Pebbles could be used with Pebble
Locker for free, using other Bluetooth devices and WiFi networks required an in-app purchase.
Now with Dislock the use of one Bluetooth device or WiFi network is free, using more than
one trusted device requires an in-app purchase. It’s now easier for users to try Dislock
for free and if they only need one device, continue to use it for free forever.&lt;/p&gt;

&lt;p&gt;If you experience any issues with the update or have any requests, as always, feel free
to use the in-app contact option to email me.&lt;/p&gt;
</description>
        <pubDate>Fri, 31 Oct 2014 00:00:00 -0400</pubDate>
        <link>https://lukekorth.com/journal/pebble-locker-renamed-to-dislock/</link>
        <guid isPermaLink="true">https://lukekorth.com/journal/pebble-locker-renamed-to-dislock/</guid>
        
        
        <category>Android</category>
        
        <category>Pebble</category>
        
      </item>
    
      <item>
        <title>Pebble Developer Retreat 2014</title>
        <description>&lt;p&gt;Another year, another awesome &lt;a href=&quot;https://getpebble.com/&quot;&gt;Pebble&lt;/a&gt; &lt;a href=&quot;https://developer.getpebble.com/events/developer-retreat-2014/&quot;&gt;Developer Retreat&lt;/a&gt;.
The retreat this year was 4 days of talks on new features, making great looking images on a black and white display,
pushing Pebbles to their limits by running OpenGL and writing directly to the framebuffer, a developer meetup, Pebbles talking
directly to other devices over Bluetooth 4 Low Energy, a whole day of &lt;a href=&quot;http://www.youtube.com/watch?v=KSMFjlc6H88&quot;&gt;Pebble controlled robots playing soccer&lt;/a&gt;,
how to get the best battery life possible and developers showing off what they’ve developed for Pebble.
Over 100 developers from 14 countries were present.&lt;/p&gt;

&lt;p&gt;The retreat started off with an introduction to the &lt;a href=&quot;https://developer.getpebble.com/2/changelog-2.6.html&quot;&gt;new APIs&lt;/a&gt; including the
&lt;a href=&quot;https://developer.getpebble.com/2/api-reference/group___drawing.html#ga8754945b07f6cb168a8acb6ab1aa07aa&quot;&gt;FrameBuffer API&lt;/a&gt; for
advanced graphics and &lt;a href=&quot;https://developer.getpebble.com/2/guides/background-guide.html&quot;&gt;Background Workers&lt;/a&gt; for always on, background
activity monitors. Pebble also announced a few new APIs they are working on that are coming soon, the Wake Up API allows apps to schedule
a time when they should be brought to the foreground to run and Bluetooth Low Energy (LE) support for a central role.&lt;/p&gt;

&lt;p&gt;A Pebble employee gave a talk on battery life, which remains one of Pebble’s key features, during the retreat and I found the stats
shared to be very interesting. Running current firmware, a Pebble battery will last for&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;4 hours with the backlight on constantly&lt;/li&gt;
  &lt;li&gt;1 day when using a watch face with a 30fps animation&lt;/li&gt;
  &lt;li&gt;36 days when Bluetooth is turned off&lt;/li&gt;
  &lt;li&gt;14 days when using a watch face that updates every minute&lt;/li&gt;
  &lt;li&gt;12 days when using a watch face that updates every minute and a background app with accelerometer sampling at 100hz with 25 sample batches&lt;/li&gt;
  &lt;li&gt;9 days when using a watch face that updates every second&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For those optimizing animations, Pebble also pointed out that the screen is drawn in rows so an animation
that updates fewer rows per frame will results in better battery life.&lt;/p&gt;

&lt;p&gt;Developers were given the chance to put the Bluetooth LE APIs to work on Saturday; an alpha firmware build with Bluetooth LE support
was distributed, which allows Pebbles to act in a central role and talk to other peripheral Bluetooth LE devices.
And of course what fun would these be without a challenge and a little bit of competition?
The goal was to use Pebble’s Bluetooth LE support to talk to a &lt;a href=&quot;http://punchthrough.com/bean/&quot;&gt;microcontroller&lt;/a&gt;
and remote control a soccer playing robot. Developers spent the day Saturday building robots and writing code
to control them and the evening and night playing a highly competitive series of soccer games.
The recording of the live stream &lt;a href=&quot;http://www.youtube.com/watch?v=KSMFjlc6H88&quot;&gt;is on YouTube&lt;/a&gt;. This was by far and
away the most fun I’ve had at a retreat or conference.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/media/pebble-bot.jpg&quot; /&gt;
&lt;img src=&quot;/media/robots-playing-soccer.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The retreat was a great experience, meeting talented developers from around the world and seeing how quickly Pebble is iterating
and adding new features that make the platform more useful than ever. Hats off to everyone at Pebble for their work organizing
and running it.&lt;/p&gt;

</description>
        <pubDate>Thu, 09 Oct 2014 00:00:00 -0400</pubDate>
        <link>https://lukekorth.com/journal/pebble-developer-retreat-2014/</link>
        <guid isPermaLink="true">https://lukekorth.com/journal/pebble-developer-retreat-2014/</guid>
        
        
        <category>Pebble</category>
        
        <category>Social</category>
        
      </item>
    
      <item>
        <title>Pebble Locker Adds Android Wear Support</title>
        <description>&lt;p&gt;Last week &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.lukekorth.pebblelocker&quot;&gt;Pebble Locker&lt;/a&gt;
added first class support for &lt;a href=&quot;http://www.android.com/wear/&quot;&gt;Android Wear&lt;/a&gt; allowing users to add their Android Wear devices as a trusted
device and automatically lock and unlock their phones and tablets.&lt;/p&gt;

&lt;p&gt;Pebble Locker uses the &lt;a href=&quot;http://developer.android.com/reference/com/google/android/gms/wearable/WearableListenerService.html#onPeerConnected(com.google.android.gms.wearable.Node)&quot;&gt;WearableListenerService&lt;/a&gt; to learn when Android Wears are connected and disconnected. The source code is available on &lt;a href=&quot;https://github.com/lkorth/pebble-locker&quot;&gt;GitHub&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Mon, 21 Jul 2014 00:00:00 -0400</pubDate>
        <link>https://lukekorth.com/journal/pebble-locker-adds-android-wear-support/</link>
        <guid isPermaLink="true">https://lukekorth.com/journal/pebble-locker-adds-android-wear-support/</guid>
        
        
        <category>Android</category>
        
      </item>
    
      <item>
        <title>Pebble Locker Mentions</title>
        <description>&lt;p&gt;Pebble Locker made &lt;a href=&quot;http://www.androidcentral.com/&quot;&gt;Android Central’s&lt;/a&gt;
&lt;a href=&quot;http://www.androidcentral.com/apps-week-shadow-fight-2-pebble-locker-espn-fc-and-more&quot;&gt;Apps of the Week&lt;/a&gt;
list this week.&lt;/p&gt;

&lt;p&gt;A few months ago Pebble Locker also made &lt;a href=&quot;http://www.pastemagazine.com/&quot;&gt;Paste Magazine’s&lt;/a&gt;
&lt;a href=&quot;http://www.pastemagazine.com/blogs/lists/2014/04/the-10-best-pebble-smartwatch-apps-of-all-time.html&quot;&gt;Top 10 Must-Have Pebble Smartwatch Apps&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Sun, 11 May 2014 00:00:00 -0400</pubDate>
        <link>https://lukekorth.com/journal/pebble-locker-mentions/</link>
        <guid isPermaLink="true">https://lukekorth.com/journal/pebble-locker-mentions/</guid>
        
        
        <category>Pebble</category>
        
        <category>Android</category>
        
      </item>
    
  </channel>
</rss>
