<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Tech on Nyghtowl</title>
    <link>https://nyghtowl.com/categories/tech/</link>
    <description>Recent content in Tech on Nyghtowl</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <copyright>&lt;a href=&#34;https://creativecommons.org/licenses/by-nc-sa/4.0/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;CC BY-NC-SA 4.0&lt;/a&gt;</copyright>
    <lastBuildDate>Sat, 19 Sep 2026 09:00:00 +0000</lastBuildDate>
    <atom:link href="https://nyghtowl.com/categories/tech/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Finally Diving into AI Model Evals</title>
      <link>https://nyghtowl.com/posts/2026/09/finally-diving-into-ai-model-evals/</link>
      <pubDate>Sat, 19 Sep 2026 09:00:00 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2026/09/finally-diving-into-ai-model-evals/</guid>
      <description>&lt;p&gt;I’ve been asked in the past how we evaluate our AI models at Fight Health Insurance (FHI), and frankly, it was pretty bare bones, and from what other startup founders have told me, they weren’t far off from that either. We didn’t have the time or resources to dive in, and the models in 2025 weren’t at a point where they could help us out the way we needed. At the end of August I finally had the time and resources to go down the eval path.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What Does an AI Agent Need to Remember?</title>
      <link>https://nyghtowl.com/posts/2026/09/what-does-an-agent-need-to-remember/</link>
      <pubDate>Thu, 03 Sep 2026 17:02:58 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2026/09/what-does-an-agent-need-to-remember/</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; We use “memory” as a catch-all, but an AI agent needs different information for different jobs. Context gives the model what it needs for the current decision. Memory brings useful information forward. State tells the application what is true and where the work stands. Understanding those roles matters more as the agent capabilities grow and work stretches across model calls, tool calls, waits on humans and failures. The separation is a tool for clarity. You could call all of it memory; the point is that each piece needs to be handled differently, and handling them well is what makes the agent more capable.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Durable, flexible multi-agent systems</title>
      <link>https://nyghtowl.com/posts/2026/08/durable-flexible-multi-agent-systems/</link>
      <pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2026/08/durable-flexible-multi-agent-systems/</guid>
      <description>&lt;p&gt;An agent system is a distributed system. You get to choose the framework and how much durability and human oversight the case demands; the tradeoffs are the part you don’t get to avoid.&lt;/p&gt;&#xA;&lt;p&gt;For the last few months, I’ve been building one system to make that concrete: the same multi-agent fleet on Google ADK, on LangGraph, and on both at once, with Temporal as a layer underneath.&lt;/p&gt;&#xA;&lt;h2 id=&#34;where-this-started&#34;&gt;Where this started&lt;/h2&gt;&#xA;&lt;p&gt;&lt;em&gt;Ziggy’s&lt;/em&gt; is the playful imaginary ice cream shop I cooked up to show what it looks like when a multi-agent system handles fleet delivery around Las Vegas. We announced our ADK integration and wanted a demo for Google Cloud Next. The first version showed a multi-agent team assigning deliveries and dealing with an agent or driver disconnecting mid-route. For the AI Engineer World’s Fair, the fleet relocated to San Francisco, picked up LangGraph as a second framework, and got reframed around a harder version of “recover from a disconnect”: keeping a human in the loop. Disconnecting an agent is a machine failing. Waiting on a human is a machine succeeding at doing nothing, correctly, for as long as it takes. A human isn’t a function that returns in 200 milliseconds. They answer in minutes, hours, or after you’ve already redeployed twice.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Swapping Models in the Agent House</title>
      <link>https://nyghtowl.com/posts/2026/07/swapping-models-in-the-agent-house/</link>
      <pubDate>Sat, 25 Jul 2026 17:13:21 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2026/07/swapping-models-in-the-agent-house/</guid>
      <description>&lt;p&gt;The grief for GPT-4o was surprising and fascinating when it was removed and retired and this is not isolated to that model. It’s something that has happened with other models and there is still some sadness on when they change but maybe we are at a stage where it’s less impactful and more understood (or we are just jaded). Someone else changes the weights, and users wake up to an AI that’s suddenly a different character.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Disagreement Was the Feature</title>
      <link>https://nyghtowl.com/posts/2026/07/the-disagreement-was-the-feature/</link>
      <pubDate>Sun, 05 Jul 2026 16:17:08 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2026/07/the-disagreement-was-the-feature/</guid>
      <description>&lt;p&gt;For the last year, I’ve had a very manual AI “ensemble” ritual: ask Claude something, paste the answer into ChatGPT or Gemini, compare what changed, then carry the useful bits back by hand. I knew I could code up something better. I also kept not doing it, because laziness is real, the tooling was moving fast, and I do not always want three models involved.&lt;/p&gt;&#xA;&lt;p&gt;For the past year, I’ve been playing around with “ensemble” model conversations, and it’s been manual pasting between chat interfaces CLIs, or switching the selected model in my IDE. I knew I could code up something better. I also kept not doing it, because laziness is real, the tooling was moving fast, and I do not always want three models involved.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Saturday Night, Two AIs, and a Framework Nobody Planned</title>
      <link>https://nyghtowl.com/posts/2026/04/a-saturday-night-two-ais-and-a-framework/</link>
      <pubDate>Wed, 08 Apr 2026 19:30:40 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2026/04/a-saturday-night-two-ais-and-a-framework/</guid>
      <description>&lt;p&gt;It was a good Saturday. Nyghtowl had a friend over, and we were picking a place for takeout, debating Thai versus Vietnamese, scrolling menus. I was pulling up restaurants nearby, comparing reviews, doing the thing where an evening starts to take shape without anyone deciding it should. We landed on a modern Thai spot in the Mission. We cycled through three shows and none of them stuck. Low effort, high flavor. Exactly the kind of night you don’t expect anything from.&lt;/p&gt;</description>
    </item>
    <item>
      <title>AI reliability is a decade-old problem. And we’re still only solving half of it</title>
      <link>https://nyghtowl.com/posts/2026/04/ai-reliability-is-a-decade-old-problem/</link>
      <pubDate>Thu, 02 Apr 2026 12:59:04 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2026/04/ai-reliability-is-a-decade-old-problem/</guid>
      <description>&lt;p&gt;I recently contributed this &lt;a href=&#34;https://temporal.io/blog/ai-reliability-is-a-decade-old-problem&#34;&gt;piece to Temporal’s blog&lt;/a&gt; and wanted to share it, too.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;The AI agents being deployed today can reason through complex tasks, chain together dozens of tool calls, and operate autonomously for hours. What most of them &lt;em&gt;can’t&lt;/em&gt; do is survive something going wrong halfway through.&lt;/p&gt;&#xA;&lt;p&gt;Even if an agent were 85% reliable at each step, a 10-step workflow would succeed end-to-end only about 20% of the time. Scale that to the longer workflows that production agents actually run, and even strong step-level performance produces cascading failure. Not because the model got something wrong, but because the system had no way to checkpoint progress, recover from a partial failure, or resume where it left off.&lt;/p&gt;</description>
    </item>
    <item>
      <title>From Gatekeeping to Gateway: AI and the Open Source Learning Curve</title>
      <link>https://nyghtowl.com/posts/2026/03/from-gatekeeping-to-gateway/</link>
      <pubDate>Fri, 13 Mar 2026 01:08:59 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2026/03/from-gatekeeping-to-gateway/</guid>
      <description>&lt;p&gt;Contributing to open source has never been as open as the name suggests. Every project has its own architecture, unwritten rules, and context that lives in maintainers’ heads. Submitting your first PR is intimidating especially if you’re already underrepresented in the space. Research consistently shows women make up less 10% of open source code contributors, and participation data for many other groups remains sparse. Maintainers are often overextended and unpaid. Feedback is slow. And all of this is intensifying as open source goes global. GitHub reported approximately 36 million new developers joined the platform in 2025 alone.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Opening Night: Launching a Fine‑Tuned LLM to Production</title>
      <link>https://nyghtowl.com/posts/2025/12/opening-night-launching-a-fine-tuned-llm/</link>
      <pubDate>Tue, 30 Dec 2025 20:53:57 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2025/12/opening-night-launching-a-fine-tuned-llm/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://youtu.be/Drd_1fekEqU&#34;&gt;Video&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://youtu.be/ISJqjCcEjnI&#34;&gt;Podcast&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Your fine‑tuned model is ready. Evals look good. Now you need to actually deploy it.&lt;/p&gt;&#xA;&lt;p&gt;This is the part most guides skip: how do you take a checkpoint and turn it into a service that real users can hit? What infrastructure decisions matter? What boundaries do you set? What happens when the GPU runs out of memory on New Year’s Eve?&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Think of it like opening a restaurant.&lt;/strong&gt; Your recipes work great in the test kitchen. But opening night means: multiple orders arriving simultaneously, ingredients running low, equipment breaking, customers ordering things you never tested together, and kitchen staff who’ve never worked a real dinner rush.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Your Fine-Tuned LLM Model Isn’t Ready Yet: Here’s How to Evaluate It</title>
      <link>https://nyghtowl.com/posts/2025/12/your-fine-tuned-llm-model-isnt-ready/</link>
      <pubDate>Wed, 17 Dec 2025 16:57:45 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2025/12/your-fine-tuned-llm-model-isnt-ready/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://youtu.be/4Z0PvxWta2I&#34;&gt;Video&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://youtu.be/dp57oO5p4LI&#34;&gt;Podcast&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Fine-tuning large language models has become dramatically easier. With techniques like QLoRA, teams can adapt billion‑parameter models on relatively modest hardware and get impressive results quickly. But this ease hides a trap: &lt;strong&gt;a model that finished training is not the same thing as a model that’s ready for production.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Many teams run a few spot checks, feel good about the outputs, deploy, and only discover weeks later that the model has drifted, slowed down, hallucinated, or lost user trust. The gap between “it trained successfully” and “it’s safe to ship” is wide, and closing it requires a testing mindset different from traditional software QA.&lt;/p&gt;</description>
    </item>
    <item>
      <title>So You Want to Fine-Tune a Model (and You Finally Got a GPU!)</title>
      <link>https://nyghtowl.com/posts/2025/12/so-you-want-to-fine-tune-a-model/</link>
      <pubDate>Thu, 11 Dec 2025 00:20:18 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2025/12/so-you-want-to-fine-tune-a-model/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://youtu.be/k4D4oES_dHE&#34;&gt;Podcast&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;You managed to get access to an H100 or A100 instance - great! Now comes the part no one really talks about: setting up the server so you can actually &lt;em&gt;use&lt;/em&gt; it for fine-tuning. Cloud GPU setups have their quirks no matter where you run them, and having a clean, reliable configuration makes the difference between training tonight and debugging until sunrise.&lt;/p&gt;&#xA;&lt;p&gt;If you’re spinning up an H100 or A100 VM for training, welcome = ) you’re about to do something fun, powerful, and occasionally puzzling. Every cloud provider has its own configuration rituals, and Azure is no exception. These notes capture what I wish Past Me had in front of her regarding the key steps.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Run Big Models on Small GPUs | All about Quantization</title>
      <link>https://nyghtowl.com/posts/2025/11/how-to-run-big-models-on-small-gpus/</link>
      <pubDate>Wed, 26 Nov 2025 17:33:54 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2025/11/how-to-run-big-models-on-small-gpus/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://youtu.be/9q9cOpMHiyQ&#34;&gt;Video&lt;/a&gt; | &lt;a href=&#34;https://youtu.be/4VGvm7dN6WU&#34;&gt;Podcast&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;You’ve trained or fine-tuned a powerful LLM. It’s smart, it works, and it’s 51 GB. Now you need to deploy it on a 24GB GPU, or distribute it to users who don’t have data center hardware. Suddenly, that beautiful model doesn’t fit anywhere useful. This is the quantization problem, and it’s increasingly unavoidable.&lt;/p&gt;&#xA;&lt;p&gt;Quantization is how we make big models fit on small GPUs. It’s like image compression for neural networks: a RAW photo might be 50MB, but compress it to JPEG and it’s 5MB. You lose detail, but to most people, it looks the same. A 50GB model becomes 13GB. A model that needed 80GB of VRAM (A100 territory) now runs on 24GB (like an RTX 3090 or 4090).&lt;/p&gt;</description>
    </item>
    <item>
      <title>🧠 Building with LLMs: From Chat to Custom AI</title>
      <link>https://nyghtowl.com/posts/2025/11/building-with-llms-from-chat-to-custom-ai/</link>
      <pubDate>Mon, 17 Nov 2025 17:58:54 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2025/11/building-with-llms-from-chat-to-custom-ai/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://youtu.be/rlODORkycTI&#34;&gt;Video&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://youtu.be/N5qllVP6oCI&#34;&gt;Podcast&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Large Language Models (LLMs) can feel like magic to newcomers or maddeningly complex to veterans. Whether you’re automating workflows, building AI products, or just curious about the tech reshaping every industry, understanding how to use LLMs (and their multimodal cousins, MLLMs) is what we are here to discuss.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;What’s an LLM, really?&lt;/strong&gt; If you don’t know anything about LLMs, you can &lt;em&gt;start&lt;/em&gt; by thinking of them as a really good at predicting language almost like autocomplete but that’s only a tiny piece of the picture. Realistically they’re much closer to a reasoning engine that’s trained on massive datasets that learns the structure of language and how ideas connect. An &lt;strong&gt;MLLM&lt;/strong&gt; operates on multiple data types (thus multimodal): audio, video, images, and text. Example: upload a chart and ask for the trend.&lt;/p&gt;</description>
    </item>
    <item>
      <title>LLM Fine-Tuning Optimization Part 2: Achieving Stability</title>
      <link>https://nyghtowl.com/posts/2025/11/llm-fine-tuning-optimization-part-2/</link>
      <pubDate>Tue, 04 Nov 2025 15:13:38 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2025/11/llm-fine-tuning-optimization-part-2/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://youtu.be/WgLB0uCUBgE&#34;&gt;Video&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://youtu.be/q9DUw2tnw8Y&#34;&gt;Podcast&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;In the &lt;strong&gt;&lt;a href=&#34;https://nyghtowl.substack.com/p/llm-fine-tuning-and-performance-tug&#34;&gt;LLM Fine-Tuning and the Performance Tug-of-War&lt;/a&gt;&lt;/strong&gt; post, we explored the constant balancing act between &lt;strong&gt;quality, speed, and memory&lt;/strong&gt; when fine-tuning large language models that align with your goals and constraints. &lt;strong&gt;&lt;a href=&#34;https://nyghtowl.substack.com/p/what-is-llm-fine-tuning&#34;&gt;Fine-tuning&lt;/a&gt;&lt;/strong&gt; is the process of teaching an existing model (e.g. GPT-NeoX, Llama, Gemma, etc.) new knowledge or behaviors, transforming a general-purpose LLM into one that is a domain specialist.&lt;/p&gt;&#xA;&lt;p&gt;The previous post introduced the core levers of &lt;strong&gt;sequence length, optimizers, attention type, and LoRA&lt;/strong&gt;, which define how a model learns, generalizes, and scales. This post expands on your optimization toolkit by introducing four more essential levers: &lt;strong&gt;batch size, mixed precision, quantization, and gradient checkpointing&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>When AI Models Start Talking to Each Other</title>
      <link>https://nyghtowl.com/posts/2025/10/when-ai-models-start-talking-to-each-other/</link>
      <pubDate>Mon, 27 Oct 2025 16:06:53 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2025/10/when-ai-models-start-talking-to-each-other/</guid>
      <description>&lt;p&gt;For a while now, I’ve been using LLMs in a way that feels a bit like hosting a party for AIs. What happens when you don’t just prompt a single model but let multiple models talk to each other? To explore that question, and being inspired by the holiday, I built two demos that make the idea both technical and fun:&lt;/p&gt;&#xA;&lt;p&gt;🧛 Monster Mash Chatroom: A FastAPI app where different LLMs wear costumes as classic Halloween monsters, chatting in real time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What Is LLM Fine-Tuning?</title>
      <link>https://nyghtowl.com/posts/2025/10/what-is-llm-fine-tuning/</link>
      <pubDate>Fri, 24 Oct 2025 16:07:25 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2025/10/what-is-llm-fine-tuning/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://youtu.be/S-BKwd-4jjk?si=tIhRIV4DoxG5ynbQ&#34;&gt;Podcast&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://youtu.be/YxulHbFh5UA&#34;&gt;Video&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;When I wrote the &lt;a href=&#34;https://nyghtowl.substack.com/p/llm-fine-tuning-and-performance-tug&#34;&gt;LLM Fine Tuning &amp;amp; Performance Post&lt;/a&gt;, a good question that came up was: what exactly is fine-tuning and how does it work? This post can’t fully cover the topic, but I want to give some solid context around how fine tuning works for LLMs and MLLMs (the billion-parameter models that come from Anthropic, OpenAI, Mistral, Meta, DeepSeek, etc.).&lt;/p&gt;&#xA;&lt;p&gt;Large language models are incredibly capable. They can write essays, debug code, or summarize medical records. But out of the box, they’re trained to handle everything in a general way, and they have limits based on the data they have access to. Granted, they continue to grow and improve in their capability and breadth of expertise so this is continually changing.&lt;/p&gt;</description>
    </item>
    <item>
      <title>LLM Fine-Tuning &amp; Performance Tug-of-War</title>
      <link>https://nyghtowl.com/posts/2025/10/llm-fine-tuning-performance-tug-of-war/</link>
      <pubDate>Tue, 14 Oct 2025 18:40:03 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2025/10/llm-fine-tuning-performance-tug-of-war/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://youtu.be/OyRJjiCYKmM?si=JDVMFbd81g3gvR8j&#34;&gt;Podcast&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This year has been a crash course in large language model (LLM) development, marked by long training runs, GPU juggling, and a constant cycle of trial and error. While there is a lot of excitement around building custom LLMs, you probably know you shouldn’t start from scratch. Fine-tuning is the process of teaching an existing model (e.g. GPT-NeoX, Llama, Gemma, etc.) new knowledge or behaviors which transforms a general-purpose LLM into one that is a domain specialist. It bridges the gap between broad capability and domain-specific precision, allowing teams to achieve superior results without the immense cost of training from scratch.&lt;/p&gt;</description>
    </item>
    <item>
      <title>JWT (JSON Web Tokens) Errors | Invalid JWT Signature</title>
      <link>https://nyghtowl.com/posts/2021/03/jwt-errors-invalid-jwt-signature/</link>
      <pubDate>Thu, 18 Mar 2021 17:56:10 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2021/03/jwt-errors-invalid-jwt-signature/</guid>
      <description>&lt;p&gt;Errors are the best especially when they are written in a way where you become a decipherer. I remember the good old days when all the error codes I got were only numbers and maybe letters mixed in and there wasn’t any online searching to easly get interpretations.&lt;/p&gt;&#xA;&lt;p&gt;I’ve been working with Google Cloud products and connecting to services from my laptop like Storage and BigQuery. Over the last several months, I’ve hit up against a JWT error, &lt;code&gt;invalid_grant:Invalid JWT Signature&lt;/code&gt;, a couple times, and below provides an overview of how I resolved it, which was basically updating the expired service account key.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pull &amp; Push to Someone else’s Upstream GitHub PR</title>
      <link>https://nyghtowl.com/posts/2020/11/pull-push-to-someone-elses-upstream-github-pr/</link>
      <pubDate>Thu, 19 Nov 2020 18:26:21 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2020/11/pull-push-to-someone-elses-upstream-github-pr/</guid>
      <description>&lt;h3 id=&#34;pull--push-to-someone-elses-upstream-githubpr&#34;&gt;Pull &amp;amp; Push to Someone else’s Upstream GitHub PR&lt;/h3&gt;&#xA;&lt;p&gt;Another brief ‘how to’ for those who need to pull and push to someone else’s upstream GitHub pull request (PR).&lt;/p&gt;&#xA;&lt;p&gt;I was working on a teammate’s GitHub pull request for &lt;a href=&#34;https://github.com/google/project-OCEAN&#34;&gt;Project OCEAN&lt;/a&gt; (a current focus of mine) to help close it out. Since her pull request came from her own personal account, there were key commands I needed in order to pull and push directly to it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Golang | Copy to GCS &amp; Check Bucket</title>
      <link>https://nyghtowl.com/posts/2020/09/golang-copy-to-gcs-check-bucket/</link>
      <pubDate>Mon, 14 Sep 2020 23:44:13 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2020/09/golang-copy-to-gcs-check-bucket/</guid>
      <description>&lt;h3 id=&#34;golang--copy-to-gcs--checkbucket&#34;&gt;Golang | Copy to GCS &amp;amp; Check Bucket&lt;/h3&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://nyghtowl.com/posts/2020/09/golang-copy-to-gcs-check-bucket/img-01.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Are you trying to use Go to get files into Google Cloud Storage without pulling them onto the computer that is running the code or open them and read the contents into a new file? If yes, so was I not long ago. Here is a quick PSA to share the code I put together to solve this.&lt;/p&gt;&#xA;&lt;h3 id=&#34;copy-files-togcs&#34;&gt;Copy Files to GCS&lt;/h3&gt;&#xA;&lt;p&gt;The following code example can get files from one url location into GCS without downloading it on the server running the code.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to End User OAuth for GCP</title>
      <link>https://nyghtowl.com/posts/2020/07/how-to-end-user-oauth-for-gcp/</link>
      <pubDate>Fri, 17 Jul 2020 22:05:26 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2020/07/how-to-end-user-oauth-for-gcp/</guid>
      <description>&lt;h3 id=&#34;how-to-end-user-oauth-forgcp&#34;&gt;How to End User OAuth for GCP&lt;/h3&gt;&#xA;&lt;p&gt;Let’s talk about end user authentication. I’ve been digging into the authentication space a bit and have some takeaways to share.&lt;/p&gt;&#xA;&lt;p&gt;When you access a GCP service, there is authentication to determine who you are, authorization to determine what you can do and auditing that logs what you did. IAM is where you setup roles for authorization in regards what you can do in a project.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Docker with Cloud SDK &amp; Environment Variables</title>
      <link>https://nyghtowl.com/posts/2020/07/docker-with-cloud-sdk-environment-variables/</link>
      <pubDate>Wed, 08 Jul 2020 18:33:39 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2020/07/docker-with-cloud-sdk-environment-variables/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://nyghtowl.com/posts/2020/07/docker-with-cloud-sdk-environment-variables/img-01.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Hello again. I am sharing a couple things I learned when working with Docker recently. Main points are how to pass in environment variables, setup Google Cloud SDK in Docker and turn on debugging.&lt;/p&gt;&#xA;&lt;p&gt;Since I haven’t written about Docker before, I’ve provided a brief overview of Docker to give context and a grounding on my pointers. I recommend doing more digging to learn more elsewhere especially considering there are many other resources out there like this &lt;a href=&#34;https://docs.docker.com/get-started/overview/&#34;&gt;Docker overview&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setup and Invoke Cloud Functions using Python</title>
      <link>https://nyghtowl.com/posts/2020/06/setup-and-invoke-cloud-functions-using-python/</link>
      <pubDate>Tue, 23 Jun 2020 17:21:13 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2020/06/setup-and-invoke-cloud-functions-using-python/</guid>
      <description>&lt;h3 id=&#34;setup-and-invoke-cloud-functions-usingpython&#34;&gt;Setup and Invoke Cloud Functions using Python&lt;/h3&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://nyghtowl.com/posts/2020/06/setup-and-invoke-cloud-functions-using-python/img-01.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Oh the fun I’ve had learning Cloud Functions. It has actually be fun while also frustrating and definitely enlightening to explore serverless services that are supposed to make things easy. Granted I’ve been around long enough to know there is always ramp up, even when it is simple.&lt;/p&gt;&#xA;&lt;p&gt;Cloud Functions is a service that allows you to run code on Google Cloud servers without needing to deal with server configuration or scaling. It is a pay as you go approach that means you pay for what you use and that can help optimize costs. I’ve started using it for a couple functions that I need to run multiple times and that is where it can be very valuable. There was a learning curve especially when connecting different services and this post covers key learnings on these subjects.&lt;/p&gt;</description>
    </item>
    <item>
      <title>BigQuery Dataset Metadata Queries</title>
      <link>https://nyghtowl.com/posts/2020/06/bigquery-dataset-metadata-queries/</link>
      <pubDate>Mon, 08 Jun 2020 17:49:33 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2020/06/bigquery-dataset-metadata-queries/</guid>
      <description>&lt;h3 id=&#34;bigquery-dataset-metadataqueries&#34;&gt;BigQuery Dataset Metadata Queries&lt;/h3&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://nyghtowl.com/posts/2020/06/bigquery-dataset-metadata-queries/img-01.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;When working with tables in BigQuery, you need an understanding of a dataset structure whether it is public or you set it up and you want to review. This is a quick bit to share queries you can use to pull metadata on your datasets and tables.&lt;/p&gt;&#xA;&lt;p&gt;In the following examples, I’m using the BigQuery public &lt;a href=&#34;http://console.cloud.google.com/marketplace/details/stack-exchange/stack-overflow&#34;&gt;Stack Overflow&lt;/a&gt; database to demonstrate these commands. Change out the names as needed for the dataset and tables you are working with.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setup and Switch Between Google Cloud Projects in the SDK</title>
      <link>https://nyghtowl.com/posts/2020/05/setup-and-switch-between-google-cloud-projects-in-the-sdk/</link>
      <pubDate>Wed, 27 May 2020 17:21:16 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2020/05/setup-and-switch-between-google-cloud-projects-in-the-sdk/</guid>
      <description>&lt;h3 id=&#34;setup-and-switch-between-google-cloud-projects-in-thesdk&#34;&gt;Setup and Switch Between Google Cloud Projects in the SDK&lt;/h3&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://nyghtowl.com/posts/2020/05/setup-and-switch-between-google-cloud-projects-in-the-sdk/img-01.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Providing a quick overview on how to setup and switch between Google Cloud projects with the SDK on a single machine. This is helpful when working with multiple projects (especially when collaborating) and you are using Cloud SDK.&lt;/p&gt;&#xA;&lt;h3 id=&#34;setup--authenticate&#34;&gt;Setup &amp;amp; Authenticate&lt;/h3&gt;&#xA;&lt;p&gt;The following steps are needed whether creating a project for the first time or a project already exists and you are logging into it off a computer where you will do local development. This assumes you will run all commands from a terminal.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Comparing AI Platform Machine Types using YouTube-8M</title>
      <link>https://nyghtowl.com/posts/2020/05/comparing-ai-platform-machine-types-using-youtube-8m/</link>
      <pubDate>Tue, 19 May 2020 18:01:52 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2020/05/comparing-ai-platform-machine-types-using-youtube-8m/</guid>
      <description>&lt;p&gt;When training a neural net model, time is of the essence. This is why different machine configurations including GPUs, TPUs and multiple servers are utilized.&lt;/p&gt;&#xA;&lt;p&gt;I’ve been exploring the YouTube-8M project for the last couple months and there are previous posts about the project, the video dataset, the algorithms and how to run them in Cloud. For this post, I trained the two algorithms from the &lt;em&gt;getting started code&lt;/em&gt; on different AI Platform standard machine configurations to see how they compared. AI Platform provides a number of &lt;a href=&#34;https://cloud.google.com/ai-platform/training/docs/machine-types&#34;&gt;scale tiers that are established configurations of different machine types and number of machines&lt;/a&gt; to run jobs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>YouTube-8M on AI Platform</title>
      <link>https://nyghtowl.com/posts/2020/05/youtube-8m-on-ai-platform/</link>
      <pubDate>Fri, 08 May 2020 00:18:34 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2020/05/youtube-8m-on-ai-platform/</guid>
      <description>&lt;h3 id=&#34;youtube-8m-on-aiplatform&#34;&gt;YouTube-8M on AI Platform&lt;/h3&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://nyghtowl.com/posts/2020/05/youtube-8m-on-ai-platform/img-01.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Continuing the YouTube-8M exploration and blog series, this post walks through how to use AI Platform to train, evaluate and run predictions for the this dataset. Not surprising, it sets up servers faster than the server I manually configured.&lt;/p&gt;&#xA;&lt;p&gt;The posts prior to this one provide an overview of the YouTube-8M project, data and computer vision modeling. This research has been used to further computer vision in relation to video datasets over the last several years.&lt;/p&gt;</description>
    </item>
    <item>
      <title>YouTube-8M Training &amp; Inference</title>
      <link>https://nyghtowl.com/posts/2020/04/youtube-8m-training-inference/</link>
      <pubDate>Thu, 30 Apr 2020 04:51:54 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2020/04/youtube-8m-training-inference/</guid>
      <description>&lt;p&gt;Computer Vision | Video Understanding&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://nyghtowl.com/posts/2020/04/youtube-8m-training-inference/img-01.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Continuing on the previous &lt;a href=&#34;https://nyghtowl.com/youtube-8m-dataset-c2ee9c79d136&#34;&gt;YouTube-8M Dataset post&lt;/a&gt;, this one covers model training using what is provided in the getting started section of the &lt;a href=&#34;https://github.com/google/youtube-8m&#34;&gt;GitHub repo&lt;/a&gt;. The goal of the models that are covered are to search for a specific moment within a video, which is called temporal concept localization.&lt;/p&gt;&#xA;&lt;p&gt;In the past, metadata was used to search for videos. These newer models enable classifying specific segments in the video at a specific timestamp where those topics appear. For example the models can help identify in the video all the points where there is chocolate, someone is sleeping or someone is ice skating.&lt;/p&gt;</description>
    </item>
    <item>
      <title>YouTube-8M Dataset</title>
      <link>https://nyghtowl.com/posts/2020/03/youtube-8m-dataset/</link>
      <pubDate>Wed, 11 Mar 2020 20:36:18 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2020/03/youtube-8m-dataset/</guid>
      <description>&lt;p&gt;Computer Vision | Video Understanding&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://nyghtowl.com/posts/2020/03/youtube-8m-dataset/img-01.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://research.google.com/youtube8m/&#34;&gt;YouTube-8M&lt;/a&gt; is a project that was developed by Google AI/Research in 2016 to drive innovations and advancement in computer vision, representation learning and video modeling architectures at a large scale.&lt;/p&gt;&#xA;&lt;p&gt;I’ve been exploring this dataset and example code for a couple weeks and this post summarizes the dataset origin, structure and where to find it. I also share initial exploratory steps that are posted in many places on Kaggle.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cloud Storage with Gsutils &amp; Python Client Library</title>
      <link>https://nyghtowl.com/posts/2020/02/cloud-storage-with-gsutils-python-client-library/</link>
      <pubDate>Sat, 29 Feb 2020 01:05:19 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2020/02/cloud-storage-with-gsutils-python-client-library/</guid>
      <description>&lt;h3 id=&#34;cloud-storage-with-gsutils--python-clientlibrary&#34;&gt;Cloud Storage with Gsutils &amp;amp; Python Client Library&lt;/h3&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://nyghtowl.com/posts/2020/02/cloud-storage-with-gsutils-python-client-library/img-01.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;BLOB (binary large object) storage is aptly named. Google Cloud Storage is a BLOB storage solution that stores unstructured data. It’s like the closet you can shove a bunch of stuff into and don’t have to organize the information before putting it inside. It’s insanely flexible in size meaning it can hold anything and doesn’t need any special processing to store it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SSH Agent Forwarding &amp; Remote Upstream with GitHub &amp; GCE</title>
      <link>https://nyghtowl.com/posts/2020/02/ssh-agent-forwarding-remote-upstream-github-gce/</link>
      <pubDate>Thu, 20 Feb 2020 23:13:05 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2020/02/ssh-agent-forwarding-remote-upstream-github-gce/</guid>
      <description>&lt;h3 id=&#34;ssh-agent-forwarding--remote-upstream-with-github-gce&#34;&gt;SSH Agent Forwarding &amp;amp; Remote Upstream with GitHub &amp;amp; GCE&lt;/h3&gt;&#xA;&lt;p&gt;When working with a cloud-based distributed version-control system during software development like GitHub, there are a couple key configurations that will enable you to collaborate on a project and work on a remote server like GCE (Google Compute Engine). You need to provide credentials to push and pull content from GitHub which SSH agent forwarding will help you accomplish. If you are working on a forked GitHub repo (repository) then you will want to setup remote upstream to keep it up to date.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Jupyter Notebook on Compute Engine with HTTPS</title>
      <link>https://nyghtowl.com/posts/2020/02/jupyter-notebook-on-compute-engine-with-https/</link>
      <pubDate>Wed, 19 Feb 2020 05:51:23 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2020/02/jupyter-notebook-on-compute-engine-with-https/</guid>
      <description>&lt;h3 id=&#34;jupyter-notebook-on-compute-engine-withhttps&#34;&gt;Jupyter Notebook on Compute Engine with HTTPS&lt;/h3&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://nyghtowl.com/posts/2020/02/jupyter-notebook-on-compute-engine-with-https/img-01.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;I wanted to run/serve Jupyter Notebook from my remote GCE instance and access it through my laptop’s browser to test and visualize Python code snippets. I’ve done this before in a previous post I wrote a few years ago but a few things have changed in the setup. For this setup, I wanted to use https to access the notebook URL which required SSL certificate setup. As stated in the title, this post steps through how I setup Jupyter Notebook to run on my GCE using HTTPS.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setup Compute Engine with Python ML Libraries</title>
      <link>https://nyghtowl.com/posts/2020/02/setup-compute-engine-with-python-ml-libraries/</link>
      <pubDate>Sat, 15 Feb 2020 01:43:42 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2020/02/setup-compute-engine-with-python-ml-libraries/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://nyghtowl.com/posts/2020/02/setup-compute-engine-with-python-ml-libraries/img-01.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Below I will step through how I setup a Virtual Machine on Google Compute Engine with standard requirements as well as Python and related packages. In a previous post, I went through how to setup a VM and access to it from my laptop CLI.&lt;/p&gt;&#xA;&lt;p&gt;As mentioned, I like accessing the remote server through the CLI and below I walk through commands to setup the remote instance with basic packages for Linux instance and common Python machine learning packages. Also, the instance I worked with was based on the Debian/GNU Linux 9 image. If you use a different instance, the commands may change but the general steps are similar.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setup Local Terminal Access to Compute Engine</title>
      <link>https://nyghtowl.com/posts/2020/02/setup-local-terminal-access-to-compute-engine/</link>
      <pubDate>Mon, 10 Feb 2020 18:53:32 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2020/02/setup-local-terminal-access-to-compute-engine/</guid>
      <description>&lt;h3 id=&#34;setup-local-terminal-access-to-computeengine&#34;&gt;Setup Local Terminal Access to Compute Engine&lt;/h3&gt;&#xA;&lt;p&gt;I’ve been playing around with the Google Cloud Platform again in a way I haven’t done for a while. It is a strange sense of deja vu and scratches that addictive learning itch. Below are the steps I took on this latest project to setup a VM (virtual machine) on GCP and login to it from my laptop terminal (CLI).&lt;/p&gt;&#xA;&lt;p&gt;This assumes an existing GCP account. If not then sign up to follow along.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cyber Security for the Previous Generation</title>
      <link>https://nyghtowl.com/posts/2018/10/cyber-security-for-the-previous-generation/</link>
      <pubDate>Mon, 29 Oct 2018 23:08:53 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2018/10/cyber-security-for-the-previous-generation/</guid>
      <description>&lt;h3 id=&#34;cyber-security-for-previous-generation&#34;&gt;Cyber Security for Previous Generation&lt;/h3&gt;&#xA;&lt;p&gt;After being tech support for my mom, sorting out my parents affairs when my father got cancer and my mom got Alzheimers, I’ve gathered some insights on the vulnerability of the previous generation to cyber threats like phishing, spoofing and identity theft.&lt;/p&gt;&#xA;&lt;p&gt;This is my security perspective and it will be different for each person. Take what works and adapt. The goal is to raise awareness that helping the previous gen stay safe is as important for them as much as it can help keep you safe. And yes these tips can be applied to every generation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to run any ML package on GCP | The Models</title>
      <link>https://nyghtowl.com/posts/2017/07/ml-on-gcp-the-models/</link>
      <pubDate>Tue, 18 Jul 2017 14:03:51 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2017/07/ml-on-gcp-the-models/</guid>
      <description>&lt;h3 id=&#34;how-to-run-any-ml-package-on-gcp--themodels&#34;&gt;How to run any ML package on GCP | The Models&lt;/h3&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://nyghtowl.com/posts/2017/07/ml-on-gcp-the-models/img-01.jpeg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;In the &lt;a href=&#34;https://medium.com/@warrick.melanie/how-to-run-any-ml-package-on-gcp-the-setup-7196268cefc3&#34;&gt;previous post&lt;/a&gt;, I showed you how to setup a virtual machine (VM) on Google Cloud Platform (GCP) so you can get started running your machine learning package of choice. Examples shared in this post are from different top frameworks in the ML space with a Python focused. Any programming language can be used as well as any package because you are just using a remote computer that you can shape as needed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to run any ML package on GCP | The Setup</title>
      <link>https://nyghtowl.com/posts/2017/07/ml-on-gcp-the-setup/</link>
      <pubDate>Tue, 18 Jul 2017 14:03:02 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2017/07/ml-on-gcp-the-setup/</guid>
      <description>&lt;h3 id=&#34;how-to-run-any-ml-package-on-gcp--thesetup&#34;&gt;How to run any ML package on GCP | The Setup&lt;/h3&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://nyghtowl.com/posts/2017/07/ml-on-gcp-the-setup/img-01.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Recently, I joined Google to work on machine learning and Cloud. The first questions on my mind were how would I use Google Cloud Platform (GCP) like I’ve used other platforms to run whatever machine learning (ML) software that I want to use. This post is sharing a few things I’ve picked up over the last couple months with the intent to help others looking at GCP.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PyCon 2015: Neural Nets for Newbies</title>
      <link>https://nyghtowl.com/posts/2015/04/pycon-2015-neural-nets-for-newbies/</link>
      <pubDate>Sun, 12 Apr 2015 14:16:42 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2015/04/pycon-2015-neural-nets-for-newbies/</guid>
      <description>&lt;p&gt;The ideas and methods in neural nets (NNs) have been around for a long time, but in the last decade plus, we are finally starting to reap significant benefits, and this is just the beginning. This post provides an overview of my recent PyCon talk in Montreal which is a neural net primer of sorts. The video is below, my slides are on &lt;a href=&#34;https://speakerdeck.com/nyghtowl/neural-nets-for-newbies&#34;&gt;SpeakerDeck&lt;/a&gt;, and I have a repo on Github named &lt;a href=&#34;https://github.com/nyghtowl/Neural_Net_Newbies&#34;&gt;Neural Nets for Newbies&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Targeting Email with Random Forest at Change.org</title>
      <link>https://nyghtowl.com/posts/2015/02/targeting-email-with-random-forest-at-change-org/</link>
      <pubDate>Tue, 17 Feb 2015 09:49:19 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2015/02/targeting-email-with-random-forest-at-change-org/</guid>
      <description>&lt;p&gt;Last fall, a couple of my colleagues (Kristiane Skiolmen, Scott Lau) and I presented Change’s machine learning email optimization approach as a lecture in &lt;a href=&#34;http://hci.stanford.edu/courses/cs547/speaker.php?date=2014-10-10&#34;&gt;Stanford’s Human Computer Interaction Semina&lt;/a&gt;r for CS grad students.&lt;/p&gt;&#xA;&lt;p&gt;The video gives an overview of how Change.org uses email to drive petition engagement from the business and social perspective to the specific technical optimization we made. It starts with an overview of Change and examples of petitions that have literally improved and saved lives.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Graphlab &amp; ODBC</title>
      <link>https://nyghtowl.com/posts/2015/01/graphlab-odbc/</link>
      <pubDate>Sun, 25 Jan 2015 22:33:27 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2015/01/graphlab-odbc/</guid>
      <description>&lt;p&gt;For those out there working with Dato(Graphlab) and trying to setup an ODBC connection to just pull all the data straight into the SFrame, here are some tips I’ve learned from troubleshooting.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;What is ODBC?&lt;/strong&gt;&lt;br&gt;&#xA;Open Database Connectivity which is a middleware API to help standardize and simplify access to database management systems.&lt;/p&gt;&#xA;&lt;p&gt;**Connection Pointers:**There are a number of links on odbc setup but it was a little tricky to get it to work with Graphlab, Linux and OSX and Graphlab’s documentation is a little sparse in that area right now.&lt;/p&gt;</description>
    </item>
    <item>
      <title>MapReduce, MRJob &amp; AWS EMR Pointers</title>
      <link>https://nyghtowl.com/posts/2014/07/mapreduce-mrjob-aws-emr-pointers/</link>
      <pubDate>Mon, 07 Jul 2014 22:45:32 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2014/07/mapreduce-mrjob-aws-emr-pointers/</guid>
      <description>&lt;p&gt;Over the last couple weeks, I’ve been playing around with MapReduce, MRJob and AWS to answer some questions about event data. Granted this is definitely more data engineering focused than data science, but using these tools can be very beneficial if you are analyzing a ton of data (esp. event log data).&lt;/p&gt;&#xA;&lt;p&gt;This is more of an overview with a few lessons learned on how to setup a MapReduce job using MRJob and AWS EMR. This post focuses more on process and less about the script logic.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PyCon 2014 – How to get started with Machine Learning</title>
      <link>https://nyghtowl.com/posts/2014/04/pycon-2014-how-to-get-started-with-machine-learning/</link>
      <pubDate>Sun, 13 Apr 2014 23:14:26 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2014/04/pycon-2014-how-to-get-started-with-machine-learning/</guid>
      <description>&lt;p&gt;Following up on the talk I just gave at PyCon 2014 in Montreal, I’ve explained parts of my presentation and provided a few additional clarifications. You can catch the talk at &lt;a href=&#34;http://pyvideo.org/video/2604/how-to-get-started-with-machine-learning&#34;&gt;Pyvideo.org&lt;/a&gt;, my &lt;a href=&#34;https://github.com/nyghtowl/PyCon_2014&#34;&gt;github repo PyCon2014&lt;/a&gt; holds the sample code, and the &lt;a href=&#34;https://speakerdeck.com/nyghtowl/how-to-get-started-with-machine-learning&#34;&gt;slides&lt;/a&gt; are on SpeakerDeck.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Machine Learning (ML) Overview&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Arthur Samuel defined machine learning as, “Field of study that gives computers the ability to learn without being explicitly programmed”. Its about applying algorithm(s) in a program to solve the problem you are faced with and address the type of data that you have. You create a model that will help conduct pattern matching and/or predict results. Then evaluate the model and iterate on it as needed to create the right type of solution for the problem.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Jeeves is Talking!</title>
      <link>https://nyghtowl.com/posts/2014/03/jeeves-is-talking/</link>
      <pubDate>Sun, 30 Mar 2014 14:57:47 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2014/03/jeeves-is-talking/</guid>
      <description>&lt;p&gt;Coolest moment this week was when I figured out that I just needed to add  one line of code to my program to get my computer to talk in my Jeeves project (thus video above).&lt;/p&gt;&#xA;&lt;p&gt;This past week was all about fixing stuff, fine tuning, iterating and putting together a presentation and peripheral stuff for demo day which will be Thurs. Of course there is always more I could and would do, but I’ve been continually shifting priorities based on time and end goal.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Deep Learning Surface</title>
      <link>https://nyghtowl.com/posts/2014/02/deep-learning-surface/</link>
      <pubDate>Sat, 22 Feb 2014 08:53:56 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2014/02/deep-learning-surface/</guid>
      <description>&lt;p&gt;Deep Learning is a tool in the Machine Learning (ML) toolbelt which is a tool in AI and Data Science toolbets. Think of it as an algorithm subset of a larger picture of algorithms and it’s area of expertise is solving some of the more complex problems out there like natural language processing (NLP), computer vision and automatic speech recognition (ASR). Like when you talk to the customer service computer voice on the phone vs. push a button.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Silicon Chef Hackathon – Leaprobo Project (aka Gizgig goes for a walk)</title>
      <link>https://nyghtowl.com/posts/2013/10/silicon-chef-hackathon/</link>
      <pubDate>Sun, 13 Oct 2013 09:22:30 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2013/10/silicon-chef-hackathon/</guid>
      <description>&lt;p&gt;Last weekend at Silicon Chef, the first all women hardware hackathon, there were over 100 participants and 20 projects demoed. My team built an Arduino on Parallax wheels controlled by a Leap Motion (3D programmable motion sensor). Check out the video to see our robot car.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Leaprobo Project Idea&lt;/strong&gt;I bought the Parallax kit several months ago with the intent of attaching it to my Arduino because I think everything is better with wheels (almost everything). However, I was too busy with so many other projects and things to study that I didn’t get around to assembling it until now. When the hackathon came up, it seemed like the perfect motivator to break out the wheel kit. Plus, my team had heard about Leap Motion and controlling things with a sensor seemed like a fun. Thus, the idea for the Leaprobo project came together.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How Flask, Heroku &amp; Alembic Play Together</title>
      <link>https://nyghtowl.com/posts/2013/09/how-flask-heroku-alembic-play-together/</link>
      <pubDate>Sun, 15 Sep 2013 01:24:02 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2013/09/how-flask-heroku-alembic-play-together/</guid>
      <description>&lt;p&gt;I just spent a couple days getting up to speed on database migrations in general, how to make it work with Flask and Postgres and how to make them work on Heroku. There is some information out there but it took a little time hunting down what I needed; thus, I’ve summarized some of the main steps to help get others up and running with Flask, Heroku and Alembic.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Why migrate?&lt;/strong&gt; Best practice is to avoid recreating your database(s). Usually you just want to make changes to the existing database(s) and track those changes. If at any time you need to go back to a previous version, the migration docs will help you easily revert to an old version / schema and then upgrade back to the most recent depending on your needs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Deployment is not the Devil (Flask &amp; Heroku Tips)</title>
      <link>https://nyghtowl.com/posts/2013/09/deployment-is-not-the-devil/</link>
      <pubDate>Sun, 01 Sep 2013 23:20:49 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2013/09/deployment-is-not-the-devil/</guid>
      <description>&lt;p&gt;On a previous post I claimed deployment is the devil because after several successful (not always easy) deployments, pushing up my Sun Finder app proved elusive. I seriously wanted to scratch my eyes out at times with all the errors and issues. Still it was a good learning experience (one that I fought against but a good one all the same), and I did finally deploy as of last week! Check it out at &lt;a href=&#34;http://sunfinder.io&#34; title=&#34;Sun Finder&#34;&gt;sunfinder.io&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Flask Mega Tutorial, Sun Finder and SheCodes</title>
      <link>https://nyghtowl.com/posts/2013/08/flask-mega-tutorial-sun-finder-and-shecodes/</link>
      <pubDate>Sat, 10 Aug 2013 16:28:13 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2013/08/flask-mega-tutorial-sun-finder-and-shecodes/</guid>
      <description>&lt;p&gt;It has been a busy several weeks and I’ve written just as lengthy of a blog post as last time from all of it. After deploying my Rails app, I switched gears to refocus on Sun Finder (through an indirect route). I signed up to present the app at SheCodes Conference on August 9th (yesterday) and I wanted to spiff it up a bit.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Flask Mega Tutorial (detour)&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Before going back to Sun Finder, I spent a week finally going through the &lt;a href=&#34;http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world&#34; title=&#34;Flask Mega Tutorial&#34;&gt;Flask Mega Tutorial&lt;/a&gt; which I had wanted to do since March. I highly recommend it because it goes from setting up a virtual environment through full stack development to a variety of deployment options. Going through that after the Rails tutorial was valuable because it solidified common concepts around web application structure (e.g. configuration, app instance setup, db setup and integration, where to delineate between view and controller). And of course it was helpful to contrast the differences to better understand how much Rails does for you behind the scenes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ruby on Rails &amp; Python Trek</title>
      <link>https://nyghtowl.com/posts/2013/07/ruby-on-rails-python-trek/</link>
      <pubDate>Sat, 20 Jul 2013 11:40:14 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2013/07/ruby-on-rails-python-trek/</guid>
      <description>&lt;p&gt;Wow its been a while since I last posted. Lots going on with interviews last month and then deciding to teach myself Ruby on Rails and being obsessed with Julython. I completed and launched my first Rails app (technically second after the sample app from the tutorial) at the beginning of this week. It is a simple thing that literally is just a button and I couldn’t be prouder.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;What is Python Trek?&lt;/strong&gt;&lt;br&gt;&#xA;Python Trek is a mashup of Stark Trek and Monty Python scripts, quotes, etc. I built a program to generate random sentence or sentences using a Markov Chain algorithm and post those to the Twitter account @pythontrek. I used Ruby to build the program that generates the tweets and I applied Rails to set up a webpage where anyone can press a button that will generate the random tweet and post it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What to Do When You are Hacked</title>
      <link>https://nyghtowl.com/posts/2013/06/what-to-do-when-you-are-hacked/</link>
      <pubDate>Thu, 20 Jun 2013 12:42:29 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2013/06/what-to-do-when-you-are-hacked/</guid>
      <description>&lt;p&gt;I am someone who practices pretty decent technical security hygiene, but I had my Yahoo account hacked this week (despite using two factor identification).  This post focuses on sharing what I did to deal with the attack, what I think went wrong and some steps and resources you can use for security.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Summary of attack…&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;The attacker logged in at 4:57PM PST and sent off 28 emails to about 5 recipients in each email from 4:58PM to 5:05PM. I learned about the attack from a friend at 5:08PM and logged in and changed my password at 5:10PM. The attacker appeared to pull email addresses from my account (I’m guessing from my contacts and sent file folders) to use in the spam emails.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sun Finder – Where is it now?</title>
      <link>https://nyghtowl.com/posts/2013/06/sun-finder-where-is-it-now/</link>
      <pubDate>Sun, 09 Jun 2013 08:52:20 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2013/06/sun-finder-where-is-it-now/</guid>
      <description>&lt;p&gt;For those following along, I have made very little progress on my Sun Finder application since Career Day about a month ago. Since hindsight is 20/20, I probably could have seen this coming, but I was living in a blissful imaginary world that said: “There will be all this time after I graduate to do all these things”. The reality is that all that time was about to be commandeered by interviews, practice &amp;amp; studying for interview and a bunch of life stuff that you can never plan for.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hackathon Quick Bits for Beginners</title>
      <link>https://nyghtowl.com/posts/2013/04/hackathon-quick-bits-for-beginners/</link>
      <pubDate>Wed, 17 Apr 2013 16:49:00 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2013/04/hackathon-quick-bits-for-beginners/</guid>
      <description>&lt;p&gt;I participated in my first hackathon a week ago, Gates &amp;amp; Facebook HackEd 2.0, with several of my fellow classmates. The hackathon’s focus was about building apps to improve education especially around college going, retention and social learning outside of school.  There are others who were there that wrote some great overviews on the experience like KWu’s &lt;a href=&#34;http://kwugirl.blogspot.com/2013/04/my-first-hackathon-hacked-20.html&#34; title=&#34;My First Hackathon: HackEd 2.0&#34;&gt;post&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I just have a couple quick bits to share about this experience and what I understand so far about hackathons.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ode to .shutil.move() – ‘Oh how you frustrate me’</title>
      <link>https://nyghtowl.com/posts/2013/03/ode-to-shutil-move/</link>
      <pubDate>Tue, 12 Mar 2013 04:44:00 +0000</pubDate>
      <guid>https://nyghtowl.com/posts/2013/03/ode-to-shutil-move/</guid>
      <description>&lt;p&gt;In Hackbright, we had a project from our first week that I was finishing this weekend, and it asked us to use the &lt;a href=&#34;http://docs.python.org/library/shutil.html#shutil.move&#34;&gt;.shutil.move()&lt;/a&gt; function. Based on the reading for this function (linked above), it says &lt;em&gt;“The destination directory must not already exist.”&lt;/em&gt; This threw me off for a while because you should have the directory already existing to move a file to it.&lt;/p&gt;&#xA;&lt;p&gt;My experience with coding it and understanding at this point is that you need to create the directory before you reference it in the function and the quote I pulled is more to warn that if something already exists, it will be overwritten. If anyone has a different take on this function let me know and I’ll update the post.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
