<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Posts on Ash Tewari</title><link>https://www.tewari.info/posts/</link><description>Recent content in Posts on Ash Tewari</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Tue, 20 Oct 2026 01:52:51 +0000</lastBuildDate><atom:link href="https://www.tewari.info/posts/feed.xml" rel="self" type="application/rss+xml"/><item><title>All Things Open 2026 - Session Recommendations</title><link>https://www.tewari.info/2026/10/19/all-things-open-2026-session-recommendations/</link><pubDate>Tue, 20 Oct 2026 01:52:51 +0000</pubDate><guid isPermaLink="false">https://www.tewari.info/?p=1591</guid><description>&lt;p&gt;&lt;a href="https://2026.allthingsopen.org/"&gt;All Things Open 2026&lt;/a&gt; is on in Raleigh! With more than 100 sessions and speakers, choosing what to attend is not easy.&lt;/p&gt;
&lt;p&gt;I went through the conference program and shortlisted the sessions that caught my attention. My interests lean toward AI agents, software architecture, developer productivity, security, and data engineering, practical engineering challenges, along with a few interesting topics on model training, real-time AI, and emerging user interfaces.&lt;/p&gt;
&lt;p&gt;AI coding assistants have evolved considerably. We&amp;rsquo;re now moving toward autonomous agents that can modify repositories, execute commands, provision infrastructure, and even deploy applications. But giving an agent the ability to write code is relatively easy. Making it reliable, secure, efficient, and useful in a real engineering environment is a much harder problem.&lt;/p&gt;</description></item><item><title>Who needs Surface Ultra RTX?</title><link>https://www.tewari.info/2026/10/07/who-needs-surface-ultra-rtx/</link><pubDate>Thu, 08 Oct 2026 01:38:44 +0000</pubDate><guid isPermaLink="false">https://www.tewari.info/?p=1585</guid><description>&lt;p&gt;Microsoft announced the new &lt;a href="https://www.microsoft.com/en-us/surface/devices/surface-laptop-ultra"&gt;Surface Ultra RTX Laptop&lt;/a&gt; today. Of course I want the RTX Spark Machine! Who doesn&amp;rsquo;t? It is awesome! I am being nostalgic about my original Microsoft Surface Pro from 2013 though. I have fond memories of developing and testing &lt;a href="https://www.tewari.info/tag/windows-8/"&gt;Windows 8&lt;/a&gt; &lt;a href="https://www.tewari.info/tag/xaml/"&gt;Apps&lt;/a&gt; and &lt;a href="https://www.tewari.info/category/xamarin/"&gt;Windows&lt;/a&gt; &lt;a href="https://www.tewari.info/tag/windows-phone/"&gt;Phone&lt;/a&gt; &lt;a href="https://www.tewari.info/tag/wp7/"&gt;Apps&lt;/a&gt;(remember those?) on it.&lt;/p&gt;
&lt;p&gt;The spec sheet of my &lt;a href="https://en.wikipedia.org/wiki/Surface_Pro_(1st_generation)"&gt;Surface Pro 1 from 2013&lt;/a&gt; is ancient: 3rd-gen Intel Core i5, 4 GB of RAM, 128 GB SSD. Windows support ended years ago.&lt;/p&gt;</description></item><item><title>Agentic finetuning using a custom harness</title><link>https://www.tewari.info/2026/09/24/agentic-finetuning-using-a-custom-harness/</link><pubDate>Fri, 25 Sep 2026 02:56:11 +0000</pubDate><guid isPermaLink="false">https://www.tewari.info/?p=1557</guid><description>&lt;p&gt;The goal was to figure out whether a small model running on my own hardware could do the job of intent classification and structured parameter extraction  well enough for one of my use-cases - read a request like &amp;ldquo;add 8 spare tent stakes to the camping box&amp;rdquo; and turn it into something the application can act on.&lt;/p&gt;
&lt;p&gt;I created an agentic fine-tuning and evaluation loop with a custom evaluation harness: an AI agent proposes one change at a time, a custom evaluation harness measures it against a frozen test set, and every run gets appended to a log with its settings, result and next decision. The agent does the all the work of dataset generation, training, evaluation and diagnosis.&lt;/p&gt;</description></item><item><title>Giving OpenClaw Secure Access to Cloud Services Without Sharing Your Password</title><link>https://www.tewari.info/2026/04/06/device-code-auth-flow-with-openclaw/</link><pubDate>Mon, 06 Apr 2026 04:48:17 +0000</pubDate><guid isPermaLink="false">https://www.tewari.info/?p=1498</guid><description>&lt;p&gt;Device Code Flow has been built into OAuth2 for years, originally designed for TVs and game consoles. It works just as well for a Docker container. It requires no credentials stored on the agent machine. It gives you narrow, revocable access that the agent cannot exceed.&lt;/p&gt;
&lt;p&gt;I have OpenClaw deployed in a sandboxed docker container on a dedicated host. I communicate with it via a Telegram bot, in a locked-down chat.&lt;/p&gt;</description></item><item><title>OpenflowSight - Log Analysis for Snowflake Openflow Telemetry</title><link>https://www.tewari.info/2026/01/24/openflowsight-log-analysis-for-snowflake-openflow-telemetry/</link><pubDate>Sat, 24 Jan 2026 17:10:58 +0000</pubDate><guid isPermaLink="false">https://www.tewari.info/?p=1485</guid><description>&lt;p&gt;&lt;strong&gt;OpenflowSight&lt;/strong&gt; is a Streamlit application for searching, filtering, and analyzing Openflow telemetry data, inspired by &lt;a href="https://learn.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview"&gt;Azure App Insights&lt;/a&gt; Search UX.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s a log explorer focused on Openflow telemetry. It helps you quickly identify relevant events, see when they spiked, and which processors were involved. Search, group similar events, and export results for deeper offline analysis.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.snowflake.com/en/user-guide/data-integration/openflow/monitor"&gt;Openflow&lt;/a&gt; is an exciting new unified data integration tool from Snowflake based on Apache NiFi. Logs, traces, and metrics emitted at runtime are written to the &lt;a href="https://docs.snowflake.com/en/developer-guide/logging-tracing/event-table-setting-up"&gt;Event table&lt;/a&gt; which supports the &lt;a href="https://docs.snowflake.com/en/developer-guide/logging-tracing/event-table-columns"&gt;OpenTelemetry data model&lt;/a&gt;. OpenflowSight surfaces this data to enable convenient, efficient monitoring and analysis of Openflow operations from a graphical dashboard—instead of using SQL queries.&lt;/p&gt;</description></item><item><title>Understanding RAG @ All Things Open AI 2025</title><link>https://www.tewari.info/2025/03/30/understanding-rag-all-things-open-ai-2025/</link><pubDate>Mon, 31 Mar 2025 02:29:39 +0000</pubDate><guid isPermaLink="false">https://www.tewari.info/?p=1468</guid><description>&lt;p&gt;&lt;strong&gt;What I learned while creating Bookshelf (open source RAG Application)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I had the opportunity to speak at the &lt;a href="https://allthingsopen.ai/"&gt;AllThingsOpen.ai 2025 Conference&lt;/a&gt; recently. It was a wonderful experience to learn from and share with so many amazing fellow presenters and attendees. All Things Open AI 2025 session recordings are available now.&lt;/p&gt;
&lt;p&gt;I spoke about several key aspects of Retrieval-Augmented Generation (RAG) and vector databases. The main topics I addressed included The Core Concepts of RAG, Embedding Models vs. Inference Models, Handling Multiple Embeddings and various Optimizations Beyond Naive RAG such as chunking strategies, enrichment with metadata, auto-merging retriever, and reranking models. Finally, I touched on Local Execution and GPU Utilization.&lt;/p&gt;</description></item><item><title>SPCHR: Speech To Text App for Windows</title><link>https://www.tewari.info/2025/02/09/spchr-speech-to-text-app-for-windows/</link><pubDate>Mon, 10 Feb 2025 04:32:25 +0000</pubDate><guid isPermaLink="false">https://www.tewari.info/?p=1456</guid><description>&lt;p&gt;I&amp;rsquo;m excited to announce the release of SPCHR. Pronounced as &amp;ldquo;speaker&amp;rdquo;. I know, I know. My apologies, it was too late at night and that&amp;rsquo;s the best I could come up with ;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It is a Windows desktop application for speech-to-text transcription.&lt;/li&gt;
&lt;li&gt;You can use it to &amp;ldquo;add&amp;rdquo; voice input to applications that don’t natively support it. It works anywhere you can type or paste text.&lt;/li&gt;
&lt;li&gt;You can use it entirely locally on your PC if you like, so it is private and secure.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="key-features"&gt;Key Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Flexible&lt;/strong&gt;: SPCHR can use either Azure Speech Services or a local OpenAI Whisper model, giving you the flexibility to choose between cloud-based and local transcription.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zero Configuration&lt;/strong&gt;: The application works immediately with local Whisper processing - no account setup required!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Global Hotkey&lt;/strong&gt;: Start and stop recording from &lt;em&gt;any&lt;/em&gt; application with Ctrl+Alt+L.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seamless Integration&lt;/strong&gt;: Transcribed text is automatically pasted into your active window.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="getting-started"&gt;Getting Started&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Clone the repository&lt;/li&gt;
&lt;li&gt;Build the solution using Visual Studio and run it&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Press Ctrl+Alt+L and start speaking&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Watch as your words appear in your active window&lt;/li&gt;
&lt;li&gt;For those wanting cloud-based transcription, simply add your Azure Speech Services credentials to the configuration file.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="open-source"&gt;Open Source&lt;/h2&gt;
&lt;p&gt;SPCHR is released under the MIT License, and I welcome contributions from the community. Whether you&amp;rsquo;re interested in adding features, fixing bugs, or improving documentation, your help is appreciated.&lt;/p&gt;</description></item><item><title>WhichBox - AI Assistant App</title><link>https://www.tewari.info/2024/08/04/whichbox-ai-assistant-app/</link><pubDate>Sun, 04 Aug 2024 17:37:56 +0000</pubDate><guid isPermaLink="false">https://www.tewari.info/?p=1427</guid><description>&lt;p&gt;Do you remember which one of those boxes in the garage has your old phone? Or that toy your child wants to play with again? Or the tripod you need for your weekend trip? Oh what about that massager that you could really use right now! You would probably have to dig through those boxes to find it. Same problem when moving. There are always some boxes that you don&amp;rsquo;t want to open right away, but you wish you could open just the right one when you need something.&lt;/p&gt;</description></item><item><title>AI Powered Bookshelf</title><link>https://www.tewari.info/2024/04/28/ai-powered-bookshelf/</link><pubDate>Mon, 29 Apr 2024 00:25:55 +0000</pubDate><guid isPermaLink="false">https://www.tewari.info/?p=1405</guid><description>&lt;p&gt;Bookshelf is a Generative AI application built as a rudimentary, but fairly capable, &lt;a href="https://docs.llamaindex.ai/en/stable/use_cases/q_and_a/"&gt;RAG&lt;/a&gt; implementation written in &lt;a href="https://www.python.org/doc/"&gt;python&lt;/a&gt;. It can use an open source LLM model (running locally or in the cloud) or a GPT model via OpenAI&amp;rsquo;s API.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The application is created using &lt;a href="https://streamlit.io/"&gt;streamlit&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I used &lt;a href="https://www.llamaindex.ai/"&gt;llama-index&lt;/a&gt; for orchestrating the loading of documents into the &lt;a href="https://en.wikipedia.org/wiki/Vector_database"&gt;vector database&lt;/a&gt;. Only TokenTextSplitter is currently used. It does not optimize for PDF, html and other formats.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.trychroma.com/"&gt;ChromaDb&lt;/a&gt; is the vector database to store the embedding vectors and metadata of the document nodes.&lt;/li&gt;
&lt;li&gt;You can use any open source embeddings model from &lt;a href="https://huggingface.co/models?other=embeddings"&gt;HuggingFace&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Bookshelf will automatically use the GPU when creating local embeddings, if the GPU is available on your machine.&lt;/li&gt;
&lt;li&gt;You can use &lt;a href="https://platform.openai.com/docs/guides/embeddings"&gt;OpenAI embeddings&lt;/a&gt; as well. There is no way to use a specific OpenAI embedding model or configure the parameters yet.&lt;/li&gt;
&lt;li&gt;Use OpenAI API or any OpenAI compatible LLM API (using &lt;a href="https://lmstudio.ai/"&gt;LMStudio&lt;/a&gt;, &lt;a href="https://ollama.com/"&gt;Ollama&lt;/a&gt; or &lt;a href="https://github.com/oobabooga/text-generation-webui"&gt;text-generation-webui&lt;/a&gt;) of your choice.&lt;/li&gt;
&lt;li&gt;There is a live demo on streamlit cloud - &lt;a href="https://bookshelf.streamlit.app/"&gt;https://bookshelf.streamlit.app/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The demo allows only OpenAI integration. You can run it locally for accessing Open Source embedding models and LLMs.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Live demo - &lt;a href="https://bookshelf.streamlit.app/"&gt;https://bookshelf.streamlit.app/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Iterative Prompt Engineering with LLMStudio</title><link>https://www.tewari.info/2024/02/04/iterative-prompt-engineering-with-llmstudio/</link><pubDate>Mon, 05 Feb 2024 01:10:11 +0000</pubDate><guid isPermaLink="false">https://www.tewari.info/?p=1370</guid><description>&lt;p&gt;Creating the ideal prompt can be the key to transforming a less than average outcome into one that is remarkably relevant. Discovering the right prompt often involves numerous revisions and a method of trial and error. I felt the need to refer to my past attempts, modifications made to prompts, LLM models I tried and other LLM settings as well relative cost of these combinations. There are a few options to help with this : &lt;a href="https://github.com/microsoft/promptflow"&gt;promptflow&lt;/a&gt;, &lt;a href="https://www.langchain.com/langsmith"&gt;langsmith&lt;/a&gt;, &lt;a href="https://github.com/TensorOpsAI/LLMStudio"&gt;LLMStudio&lt;/a&gt; and others.&lt;/p&gt;</description></item><item><title>Prompt Engineering and Security - Custom GPT</title><link>https://www.tewari.info/2024/01/21/prompt-engineering-and-security-custom-gpt/</link><pubDate>Sun, 21 Jan 2024 23:01:24 +0000</pubDate><guid isPermaLink="false">https://www.tewari.info/?p=1357</guid><description>&lt;p&gt;I have been delving into Advanced Prompt Engineering and Security techniques for Large Language Models (LLMs). As an exercise, I have created a custom GPT in &lt;a href="https://openai.com/blog/introducing-gpts"&gt;ChatGPT&lt;/a&gt; to help practice spelling of English words. &lt;a href="https://bit.ly/3Ua0oib"&gt;Spell It&lt;/a&gt; GPT is secured with Advanced Prompt Engineering techniques to guard against common attack vectors, including Direct Prompt Injection, Prompt Leaking, Role Playing, Simulation, DAN and Code Injection.&lt;/p&gt;
&lt;figure&gt;
&lt;img loading="lazy" src="https://www.tewari.info/wp-content/spell-it-gpt-256.png"
alt="Spell-It-GPT"/&gt; &lt;figcaption&gt;
&lt;p&gt;Spell-It-GPT&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Play with the &lt;a href="https://bit.ly/3Ua0oib"&gt;Spell It&lt;/a&gt; GPT and try to break it. It is not impossible but (probably) fairly difficult to do ;) Regardless, practice spelling and have fun!&lt;/p&gt;</description></item><item><title>Get an NFT at All Things Open 2022</title><link>https://www.tewari.info/2022/10/31/get-an-nft-at-all-things-open-2022/</link><pubDate>Mon, 31 Oct 2022 22:02:30 +0000</pubDate><guid isPermaLink="false">https://www.tewari.info/?p=1346</guid><description>&lt;p&gt;You can get a free commemorative NFT if you met me at &lt;a href="https://2022.allthingsopen.org/"&gt;All Things Open&lt;/a&gt; Conference in Raleigh, NC.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DM me at &lt;a href="https://twitter.com/ashtewari"&gt;@ashtewari&lt;/a&gt; for the code to redeem your &lt;a href="https://poap.xyz/"&gt;POAP NFT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Visit &lt;a href="https://app.poap.xyz/claim/"&gt;https://app.poap.xyz/claim/&lt;/a&gt; and enter your code&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;
&lt;img loading="lazy" src="https://www.tewari.info/wp-content/image-26.png"/&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;Enter your Ethereum address (or ENS/Email)&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;
&lt;img loading="lazy" src="https://www.tewari.info/wp-content/image-24.png"
alt="Mint POAP NFT"/&gt; &lt;figcaption&gt;
&lt;p&gt;Mint POAP NFT&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;Check [Free minting on Gnosis] for free minting of NFT on xDAI chain
&lt;ul&gt;
&lt;li&gt;If you uncheck this box you can migrate to &lt;a href="https://ethereum.org/en/nft/"&gt;Ethereum&lt;/a&gt; mainnet now but you will have to pay for that transaction. You can also migrate to mainnet later if you wish.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Click on Mint POAP button&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Your NFT will be confirmed after the minting is complete.&lt;/p&gt;</description></item><item><title>Security Analysis of Etheruem Smart Contracts with Mythril</title><link>https://www.tewari.info/2022/05/22/security-analysis-of-etheruem-smart-contracts-with-mythril/</link><pubDate>Sun, 22 May 2022 23:32:20 +0000</pubDate><guid isPermaLink="false">https://www.tewari.info/?p=1311</guid><description>&lt;p&gt;&lt;a href="https://github.com/ConsenSys/mythril"&gt;Mythril&lt;/a&gt; is an open-source security analysis tool for EVM bytecode, courtesy of &lt;a href="https://consensys.net/diligence/tools/"&gt;ConsenSys&lt;/a&gt;. It is also a component of their Security Analysis Service - &lt;a href="https://mythx.io/"&gt;Mythx&lt;/a&gt;. Mythril detects security vulnerabilities in smart contracts built for Ethereum and other EVM-compatible blockchains.&lt;/p&gt;
&lt;p&gt;Vulnerabilities found by Mythril are reported with reference to the weaknesses listed on the Smart Contract Weakness Classification Registry (&lt;a href="https://swcregistry.io/"&gt;SWC Registry&lt;/a&gt;). I will use two entries from SWC Registry for the examples in this article:&lt;/p&gt;</description></item><item><title>KHEL Coin on Ethereum</title><link>https://www.tewari.info/2022/05/09/khel-coin-on-ethereum/</link><pubDate>Tue, 10 May 2022 01:41:59 +0000</pubDate><guid isPermaLink="false">https://www.tewari.info/?p=1301</guid><description>&lt;p&gt;KhelCoin (KHEL) is an &lt;a href="https://ethereum.org/en/developers/docs/standards/tokens/erc-20/"&gt;ERC-20 token&lt;/a&gt; available on &lt;a href="https://ethereum.org/en/"&gt;Ethereum&lt;/a&gt; blockchain. It is a &lt;a href="https://ethereum.org/en/smart-contracts/"&gt;Smart Contract&lt;/a&gt; created with &lt;a href="https://docs.soliditylang.org/en/latest/"&gt;Solidity&lt;/a&gt;, &lt;a href="https://www.openzeppelin.com/contracts"&gt;OpenZeppelin&lt;/a&gt;, &lt;a href="https://trufflesuite.com/"&gt;Truffle&lt;/a&gt;, &lt;a href="https://trufflesuite.com/ganache/"&gt;Ganache&lt;/a&gt;, &lt;a href="https://remix.ethereum.org/"&gt;Remix&lt;/a&gt;, &lt;a href="https://web3js.readthedocs.io/"&gt;web3.js&lt;/a&gt; and &lt;a href="https://code.visualstudio.com/"&gt;VSCode&lt;/a&gt;. It is currently available on &lt;a href="https://rinkeby.etherscan.io/token/0x15AFeB0A2caD2caC3A8140c342789C310Ad82A83"&gt;Rinkeby&lt;/a&gt; test network. It will be launched on the Mainnet in the near future.&lt;/p&gt;
&lt;p&gt;You can get KHEL coins from this website - &lt;a href="https://ashtewari.github.io/khelcoin"&gt;KHEL Coin ICO&lt;/a&gt;&lt;/p&gt;
&lt;figure&gt;
&lt;img loading="lazy" src="https://www.tewari.info/wp-content/khelcoin-ico-metamask.png"
alt="KhelCoin ICO page prompting to install Metamask"/&gt;
&lt;/figure&gt;
&lt;p&gt;Head over to the ICO website. You will be prompted to install &lt;a href="https://metamask.io/"&gt;Metamask&lt;/a&gt; and connect to your account on Rinkeby testnet. Click on &amp;ldquo;Buy KHEL Coins&amp;rdquo; button to get your own coins!&lt;/p&gt;</description></item><item><title>Kusto Queries on AKS Clusters</title><link>https://www.tewari.info/2021/04/25/kusto-queries-on-aks-clusters/</link><pubDate>Sun, 25 Apr 2021 19:40:55 +0000</pubDate><guid isPermaLink="false">https://www.tewari.info/?p=1279</guid><description>&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/"&gt;Kusto&lt;/a&gt; query language can be used to get &lt;a href="https://docs.microsoft.com/en-us/azure/azure-monitor/containers/container-insights-log-search"&gt;insights&lt;/a&gt; into Azure Kubernetes Service (&lt;a href="https://azure.microsoft.com/en-us/services/kubernetes-service/"&gt;AKS&lt;/a&gt;) clusters. &lt;a href="https://docs.microsoft.com/en-us/azure/azure-monitor/containers/container-insights-overview"&gt;Container insights&lt;/a&gt; collects data from AKS clusters and forwards it to &lt;a href="https://docs.microsoft.com/en-us/azure/azure-monitor/logs/log-analytics-tutorial"&gt;Log Analytics&lt;/a&gt; workspace, if enabled for a cluster. This data is available for querying in the &lt;a href="https://docs.microsoft.com/en-us/azure/azure-monitor/logs/data-platform-logs"&gt;Azure Monitor&lt;/a&gt;. Here is an example of how you can query the pods not in running state in specific namespaces.&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;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;KubePodInventory
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| where Namespace in (&amp;#34;dv&amp;#34;,&amp;#34;test&amp;#34;,&amp;#34;prod&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| where ContainerStatus != &amp;#34;Running&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| where ContainerStatusReason !in (&amp;#34;&amp;#34;, &amp;#34;Completed&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| distinct Namespace, Name
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;figure&gt;
&lt;img loading="lazy" src="https://www.tewari.info/wp-content/image-7.png"
alt="Log Analytics query results listing pods not in running state by namespace"/&gt;
&lt;/figure&gt;
&lt;p&gt;The following query includes the name of the AKS cluster and renders the output as a stacked bar chart.&lt;/p&gt;</description></item><item><title>AKS - Adding SSH Keys to VMSS Nodes</title><link>https://www.tewari.info/2021/03/27/aks-adding-ssh-keys-to-vmss-nodes/</link><pubDate>Sun, 28 Mar 2021 03:33:11 +0000</pubDate><guid isPermaLink="false">https://www.tewari.info/?p=1274</guid><description>&lt;p&gt;You can connect to Azure Kubernetes Service (AKS) nodes using ssh. It is documented here: &lt;a href="https://docs.microsoft.com/en-us/azure/aks/ssh"&gt;Connect with SSH to Azure Kubernetes Service (AKS) cluster nodes for maintenance or troubleshooting&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I needed to access nodes on the System node pool for collecting some logs recently, but the process documented above was not working for me. It turns out that there were two different issues, both related to adding your SSH keys to the nodes in a virtual machine scale set (VMSS).&lt;/p&gt;</description></item><item><title>AKS Supported Kubernetes Versions</title><link>https://www.tewari.info/2020/11/08/aks-supported-kubernetes-versions/</link><pubDate>Mon, 09 Nov 2020 03:08:17 +0000</pubDate><guid isPermaLink="false">https://www.tewari.info/?p=1259</guid><description>&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/azure/aks/"&gt;Azure Kubernetes Service&lt;/a&gt; (AKS) &lt;a href="https://docs.microsoft.com/en-us/azure/aks/supported-kubernetes-versions"&gt;supports specific versions&lt;/a&gt; of &lt;a href="https://kubernetes.io/"&gt;Kubernetes&lt;/a&gt;.&lt;br&gt;
It is necessary to regularly monitor the release of new versions and upgrade your AKS clusters to supported versions in order to remain in compliance with &lt;a href="https://docs.microsoft.com/en-us/azure/aks/supported-kubernetes-versions#kubernetes-version-support-policy"&gt;AKS Kubernetes Version Support Policy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/azure/aks/supported-kubernetes-versions#release-and-deprecation-process"&gt;AKS announces&lt;/a&gt; the planned date of a new minor version release and corresponding old version deprecation via AKS &lt;a href="https://github.com/Azure/AKS/releases"&gt;Release notes&lt;/a&gt; at least 30 days prior to removal. An email notification is sent to the subscription administrators with the planned version removal dates. You get 30 days from version removal to upgrade to a supported minor version release. Patch versions can be released anytime and you get 30 days from the removal date to upgrade to a supported patch version.&lt;/p&gt;</description></item><item><title>Universal Windows Platform Application on Raspberry Pi</title><link>https://www.tewari.info/2020/05/22/universal-windows-platform-application-on-raspberry-pi/</link><pubDate>Sat, 23 May 2020 02:57:40 +0000</pubDate><guid isPermaLink="false">https://www.tewari.info/?p=1206</guid><description>&lt;p&gt;Universal Windows Platform (UWP) provides a common app platform on every device that runs Windows 10. The core APIs in UWP are the same on all Windows devices – including Desktop PC, Mobile Phone, XBox, Hololens, IOT devices and &lt;a href="https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide"&gt;others&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can target specific device capabilities of a device family with &lt;a href="https://docs.microsoft.com/en-us/uwp/extension-sdks/device-families-overview#extension-sdks"&gt;extension SDKs&lt;/a&gt;, but you don&amp;rsquo;t have to do that if you are only using core APIs. Those core APIs include a very &lt;a href="https://docs.microsoft.com/en-us/windows/uwp/design/controls-and-patterns/"&gt;impressive&lt;/a&gt; set of UI capabilities. What that means is that you can create a UWP application using C# and XAML which will run on an ARM based processor on Raspberry Pi – because &lt;a href="https://docs.microsoft.com/en-us/windows/iot-core/develop-your-app/buildingappsforiotcore"&gt;Windows 10 IOT Core&lt;/a&gt; runs on that.&lt;/p&gt;</description></item><item><title>Getting started with Blockchain</title><link>https://www.tewari.info/2019/05/22/getting-started-with-blockchain/</link><pubDate>Wed, 22 May 2019 14:00:48 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=1195</guid><description>&lt;p&gt;Washington DC - May 2019&lt;/p&gt;
&lt;p&gt;In this session, we will introduce you to the world of Blockchain technology. We will start with the fundamentals and explain the characteristics and use cases of Blockchains and Decentralized applications. We will explain public Blockchains as well as permissioned Blockchains - with examples from Ethereum and Hyperledger. You will learn how to create a private blockchain to get started. You will learn about Ethereum and how to program Smart Contracts for Ethereum Blockchain. We will also share best practices for secure and effective Smart Contracts development.&lt;/p&gt;</description></item><item><title>TRINUG - Programming Smart Contracts on Ethereum Blockchain</title><link>https://www.tewari.info/2018/08/08/programming-smart-contracts-on-ethereum-blockchain-2/</link><pubDate>Wed, 08 Aug 2018 21:30:50 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=1184</guid><description>&lt;p&gt;TRINUG - Main Meeting : Programming Smart Contracts on Ethereum Blockchain - August 2018&lt;/p&gt;
&lt;p&gt;In this session, Ash will introduce you to the world of Blockchain programming. You will learn about Ethereum and how to program Smart Contracts for Ethereum Blockchain. You will learn how to deploy and test your Contracts on a public Ethereum Testnet. Ash will share best practices for Smart Contract development. You will be able to participate in a hands-on walk-through in the latter half of the session.&lt;/p&gt;</description></item><item><title>Charlotte IOT - Programming Smart Contracts on Ethereum Blockchain</title><link>https://www.tewari.info/2018/07/10/programming-smart-contracts-on-ethereum-blockchain/</link><pubDate>Tue, 10 Jul 2018 22:00:00 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=1182</guid><description>&lt;p&gt;Charlotte IOT - July 2018&lt;/p&gt;
&lt;p&gt;You will not want to miss this chance to learn about &lt;em&gt;Blockchain&lt;/em&gt;, a technology enabling an entire IoT ecosystem! It has a distributed database for all the transactions, which eliminates the need for the third party to authenticate the transactions. The database ledger is a continuously growing list of records, called blocks, which are linked and secured using cryptography.
Charlotte IoT wants to thank Ash Tewari for traveling from Raleigh to share his extensive knowledge and experience around &lt;em&gt;Blockchain&lt;/em&gt;. In this session, Ash will introduce you to the world of &lt;em&gt;Blockchain&lt;/em&gt; programming. You will learn about Ethereum and how to program Smart Contracts on Ethereum &lt;em&gt;Blockchain&lt;/em&gt;. You will learn how to deploy and test your code on a public Ethereum Testnet. Ash will complete the session with sharing some best practices for Smart Contract development. You will be able to participate in a hands-on walkthrough in the latter half of the session.&lt;/p&gt;</description></item><item><title>Blockchains for Enterprise</title><link>https://www.tewari.info/2017/11/24/blockchains-for-enterprise/</link><pubDate>Sat, 25 Nov 2017 01:53:28 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=1141</guid><description>&lt;p&gt;Permissioned blockchains are being developed and used in Enterprise scenarios in which higher transaction throughput, lower latency, versatile confidentiality and governance models are more important than supporting low trust levels among participants. These Enterprise requirements are not being met adequately by the public and permission-less blockchain ledgers. Enterprise scenarios typically have known actors and the trust level between these actors is very high. This allows for trade-offs between trust levels and transaction throughput, speed, confidentiality and privacy, which in turn enables alternate solutions via &lt;a href="https://www.ibm.com/blogs/blockchain/2017/05/the-difference-between-public-and-private-blockchain/"&gt;permissioned blockchains&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Paste Table from Microsoft Excel to Confluence Wiki</title><link>https://www.tewari.info/2017/09/18/paste-table-from-microsoft-excel-to-confluence-wiki/</link><pubDate>Mon, 18 Sep 2017 21:52:02 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=1121</guid><description>&lt;p&gt;1. Create the table in Microsoft Excel.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.tewari.info/wp-content/paste-table-confluence-excel.png"&gt;&lt;img alt="paste-table-confluence-excel" loading="lazy" src="https://www.tewari.info/wp-content/paste-table-confluence-excel.png"&gt;&lt;/a&gt;&lt;a href="https://www.tewari.info/wp-content/paste-table-confluence-toolbar.png"&gt;&lt;img alt="paste-table-confluence-toolbar" loading="lazy" src="https://www.tewari.info/wp-content/paste-table-confluence-toolbar.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2. Open this page in browser: &lt;a href="http://excel2jira.bluurgh.com/"&gt;http://excel2jira.bluurgh.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3. Paste the table from Microsoft Excel into the input box on the page.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.tewari.info/wp-content/paste-table-confluence-convert-markup.png"&gt;&lt;img alt="paste-table-confluence-convert-markup" loading="lazy" src="https://www.tewari.info/wp-content/paste-table-confluence-convert-markup.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;4. Click on “Convert Me Now” button&lt;/p&gt;
&lt;p&gt;5. Place the cursor at the intended insertion point in the wiki document.&lt;/p&gt;
&lt;p&gt;6. Click on “Insert more content” (+) button on Wiki toolbar&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.tewari.info/wp-content/paste-table-confluence-toolbar.png"&gt;&lt;img alt="paste-table-confluence-toolbar" loading="lazy" src="https://www.tewari.info/wp-content/paste-table-confluence-toolbar.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;7. Click on “Markup”&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.tewari.info/wp-content/paste-table-confluence-markup-cmd.png"&gt;&lt;img alt="paste-table-confluence-markup-cmd" loading="lazy" src="https://www.tewari.info/wp-content/paste-table-confluence-markup-cmd.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;8. Paste converted markup from step 2  in the left pane and verify the preview.&lt;/p&gt;</description></item><item><title>Ethereum Blockchain-As-A-Service in Azure Cloud</title><link>https://www.tewari.info/2016/10/18/ethereum-blockchain-as-a-service-in-azure-cloud/</link><pubDate>Tue, 18 Oct 2016 21:24:56 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=1119</guid><description>&lt;p&gt;&lt;a href="https://www.ethereum.org/"&gt;Ethereum&lt;/a&gt; Blockchain (EBaas) as a Service provided by Microsoft Azure and &lt;a href="https://consensys.net/ventures/core-components/"&gt;ConsenSys&lt;/a&gt; allows for enterprise customers and partners to play, learn, and fail fast at a low cost in a ready-made dev/test/production environment. It will allow them to create private, public and consortium based &lt;a href="https://en.wikipedia.org/wiki/Blockchain"&gt;Blockchain&lt;/a&gt; environments very quickly in Azure. In this session, you will learn how to get started with prototyping building blocks of a decentralized application using &lt;a href="http://https://azure.microsoft.com/en-us/blog/ethereum-blockchain-as-a-service-now-on-azure/"&gt;EBaas&lt;/a&gt; in Windows Azure.&lt;/p&gt;</description></item><item><title>Getting Started with Smart Contracts on Ethereum Blockchain using Visual Studio</title><link>https://www.tewari.info/2016/09/30/getting-started-with-smart-contracts-on-ethereum-blockchain-using-visual-studio/</link><pubDate>Fri, 30 Sep 2016 21:19:11 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=1117</guid><description>&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Smart_contract"&gt;Smart Contracts&lt;/a&gt; are an exciting innovation built on blockchain technology. It is a way to execute code in a trustless, decentralized and transparent system. &lt;a href="https://www.ethereum.org/"&gt;Ethereum&lt;/a&gt; is a decentralized platform to run smart contracts using a variation of Bitcoin&amp;rsquo;s blockchain technology.&lt;/p&gt;
&lt;p&gt;In this session, you will learn how to write smart contracts in Visual Studio. You will learn how to deploy them to public Ethereum blockchain and a private/consortium blockchain as a service in Azure. You will be introduced you to &lt;a href="https://solidity.readthedocs.io/en/develop/"&gt;Solidity&lt;/a&gt;- the programming language used to write smart contracts. You will get familiar with the tools and technology around this exciting, promising and relatively new innovation.&lt;/p&gt;</description></item><item><title>KeyNode with Node.js and Microsoft Azure</title><link>https://www.tewari.info/2016/03/10/keynode-with-node-js-and-microsoft-azure/</link><pubDate>Fri, 11 Mar 2016 00:23:06 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=1077</guid><description>&lt;p&gt;&lt;a href="https://github.com/ashtewari/keynode" title="KeyNode"&gt;KeyNode&lt;/a&gt; is a application to issue and verify software license keys. Technology stack for KeyNode is &lt;a href="https://nodejs.org/" title="Node.js"&gt;Node.j&lt;/a&gt; s, &lt;a href="https://www.mongodb.org/" title="MongoDB"&gt;MongoDB&lt;/a&gt; and &lt;a href="https://azure.microsoft.com/" title="Microsoft Azure"&gt;Microsoft Azure&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I had built this functionality with &lt;a href="https://c9.io" title="C9.io"&gt;C9.io&lt;/a&gt; (a cloud-based IDE with a built-in source code repository and debugger), &lt;a href="http://www.prnewswire.com/news-releases/mongohq-becomes-compose-270174611.html"&gt;mongohq&lt;/a&gt; (MongoDB as a service - now part of &lt;a href="https://www.compose.io/" title="compose.io"&gt;compose.io&lt;/a&gt;) and &lt;a href="https://www.ctl.io/appfog/" title="AppFog"&gt;appfog&lt;/a&gt; (Cloud PAAS built on top of &lt;a href="https://www.cloudfoundry.org/" title="CloudFoundry"&gt;CloudFoundry&lt;/a&gt;). It used SMTP/gmail to email license files. That was the version I created a couple of years ago to issue tamper-proof signed xml license files for &lt;a href="http://codedemo.net/"&gt;CodeDemo&lt;/a&gt; (a code snippet tool for developers, presenters and instructors).&lt;/p&gt;</description></item><item><title>Using Powershell with Splunk</title><link>https://www.tewari.info/2016/02/22/using-powershell-with-splunk/</link><pubDate>Tue, 23 Feb 2016 03:20:14 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=1060</guid><description>&lt;p&gt;&lt;a href="http://dev.splunk.com/view/splunk-powershell-resource-kit/SP-CAAADRU" title="Splunk Powershell Resource Kit"&gt;Splunk Powershell Resource Kit&lt;/a&gt; is a convenient and very capable wrapper over &lt;a href="http://www.splunk.com/"&gt;Splunk&lt;/a&gt; &lt;a href="http://dev.splunk.com/restapi"&gt;REST API&lt;/a&gt;. You can use the &lt;a href="https://msdn.microsoft.com/en-us/powershell"&gt;Powershell&lt;/a&gt; commandlets exposed by this resource kit to deploy, check and manage splunk services as well as execute splunk searches. In this post, you will be introduced to the Splunk Powershell Resource Kit, you will learn how to use powershell commandlets to connect to a splunk instance and execute searches.&lt;/p&gt;
&lt;p&gt;1. First, you will need to download the resource kit from &lt;a href="https://github.com/splunk/splunk-reskit-powershell"&gt;github&lt;/a&gt;.
2. Installation is very simple. All you have to do is download and extract the files from the zip archive and double click on install.bat to install the splunk powershell module.
3. Open Windows Powershell console from Windows Start menu.
4. Verify that the Splunk module is installed by executing Get-Module commandlet.&lt;/p&gt;</description></item><item><title>PackRaft with Xamarin and Microsoft Azure</title><link>https://www.tewari.info/2015/12/19/packraft-with-xamarin-and-microsoft-azure/</link><pubDate>Sun, 20 Dec 2015 03:22:26 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=1026</guid><description>&lt;p&gt;PackRaft is a cross-platform mobile application built with &lt;a href="http://developer.xamarin.com/"&gt;Xamarin&lt;/a&gt;. It integrates with Microsoft Azure services, such as &lt;a href="https://azure.microsoft.com/en-us/services/storage/tables/"&gt;Azure Table Storage&lt;/a&gt; and &lt;a href="https://azure.microsoft.com/en-us/services/app-service/"&gt;Azure App Service&lt;/a&gt;. It is created with &lt;a href="http://developer.xamarin.com/guides/cross-platform/xamarin-forms/"&gt;Xamarin.Forms&lt;/a&gt; for iOS and Android (Windows version will be coming soon).&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.tewari.info/wp-content/packraft-android-riders.png"&gt;&lt;img alt="packraft-android-riders" loading="lazy" src="https://www.tewari.info/wp-content/packraft-android-riders.png"&gt;&lt;/a&gt;&lt;a href="https://www.tewari.info/wp-content/packraft-iphone-assignments.png"&gt;&lt;img alt="packraft-iphone-assignments" loading="lazy" src="https://www.tewari.info/wp-content/packraft-iphone5.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The purpose of creating this sample application was to expand expertise in cross-platform mobile development with Windows Azure integration, specifically with Xamarin.Forms and Azure App Service. With Xamarin.Forms, it is possible to achieve close to 100% code reuse across these platforms for certain type of apps. Azure App Service provide a set of rich cloud backend services for your mobile applications.&lt;/p&gt;</description></item><item><title>Does Xamarin have a future?</title><link>https://www.tewari.info/2015/11/07/does-xamarin-have-a-future/</link><pubDate>Sat, 07 Nov 2015 17:33:01 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=998</guid><description>&lt;p&gt;&lt;a href="https://xamarin.com/"&gt;Xamarin&lt;/a&gt;&amp;rsquo;s cross-platform mobile application framework has Xamarin.iOS and Xamarin.Android at its core. Both &lt;a href="https://en.wikipedia.org/wiki/Xamarin"&gt;Xamarin.Android and Xamarin.iOS&lt;/a&gt; are based on Mono. &lt;a href="https://en.wikipedia.org/wiki/Mono_(software)"&gt;Mono&lt;/a&gt; is an open source implementation of .NET (&lt;a href="https://en.wikipedia.org/wiki/Common_Language_Infrastructure"&gt;CLI&lt;/a&gt; and CLS). Xamarin&amp;rsquo;s customers are Microsoft (.NET) shops. Microsoft is open sourcing .NET itself. What does all this mean for Xamarin?&lt;/p&gt;
&lt;p&gt;Is Xamarin&amp;rsquo;s competitive advantage going to be undermined by the open source .NET? Microsoft&amp;rsquo;s Universal Application Platform (UAP) and the promise of making .NET applications run on Mac and Linux seems to indicate that Microsoft may be emerging as a threat to Xamarin.&lt;/p&gt;</description></item><item><title>Creating Android Apps using C# and Xamarin</title><link>https://www.tewari.info/2015/02/21/creating-android-apps-using-c-and-xamarin/</link><pubDate>Sat, 21 Feb 2015 17:30:25 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=977</guid><description>&lt;p&gt;You can create native Android and iOS applications using C#, with Xamarin. I explored the capabilities of Xamarin tools and the development experience with Xamarin to create an Android version of CensusMapper. CensusMapper displays U.S. Census data on a Map. I created the original application for Windows 8 (WinRT) using C#. I have since converted it to an MVVM (C#) application, HTML/Javascript (WinJS) version and more recently to a &lt;a href="https://www.tewari.info/2014/11/12/universal-apps/"&gt;Universal Windows App&lt;/a&gt; running on Windows Phone 8.1 and Windows 8.1. In that tradition, now it is faithfully ported to run on Android devices, using C# and Xamarin. CensusMapper is available on &lt;a href="https://play.google.com/store/search?q=CensusMapper"&gt;Google Play Store&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Universal Apps</title><link>https://www.tewari.info/2014/11/12/universal-apps/</link><pubDate>Thu, 13 Nov 2014 02:50:36 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=818</guid><description>&lt;p&gt;The story of Windows Universal Apps is the result of advancements in three areas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The platform convergence between Windows 8.1 and Windows Phone 8.1&lt;/li&gt;
&lt;li&gt;The (ongoing) unification of Windows and Windows Phone stores.&lt;/li&gt;
&lt;li&gt;Shared Projects and other enhancements in Visual Studio 2013 Update 2 to support cross-platform development.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="https://www.tewari.info/wp-content/universal-apps-titile.png"&gt;&lt;img loading="lazy" src="https://www.tewari.info/wp-content/universal-apps-titile.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I have written about my experience in converting an existing Windows 8 app, &lt;a href="http://blog.appliedis.com/2012/10/22/censusmapper-app-mashup-census-data-with-bing-maps/"&gt;CensusMapper&lt;/a&gt;, to a Universal App on the &lt;a href="http://blog.appliedis.com/author/ash-tewari/"&gt;AIS Blog&lt;/a&gt;. &lt;a href="http://blog.appliedis.com/2014/10/05/censusmapper-is-a-universal-app/"&gt;Read the article here&lt;/a&gt;. I have also created another Universal App, LRMS, using Windows &lt;a href="http://appstudio.windows.com/"&gt;App Studio&lt;/a&gt;. This app is available in both &lt;a href="http://apps.microsoft.com/windows/en-us/app/454df9ae-7a9d-40f2-8caf-5266649939d9"&gt;Windows&lt;/a&gt; and &lt;a href="http://www.windowsphone.com/en-us/store/app/lrms/497cb5bb-1d37-4c66-a200-912b39872f6c"&gt;Windows Phone&lt;/a&gt; Stores.&lt;/p&gt;</description></item><item><title>Should my barber do a technology upgrade?</title><link>https://www.tewari.info/2014/07/12/should-my-barber-do-a-technology-upgrade/</link><pubDate>Sat, 12 Jul 2014 22:57:56 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=785</guid><description>&lt;p&gt;I noticed a barber shop sign at a local strip mall last year and stepped inside, hoping to get a haircut. The lone barber turned away from the customer in his chair, looked at me and said, &amp;ldquo;Sorry, man. It is by appointment only&amp;rdquo;. It was relatively spacious place. There were no other waiting customers there. It felt peaceful and quiet. &lt;a href="http://wunc.org/"&gt;Local NPR station&lt;/a&gt; was playing on the radio. I took his card and left. I got my haircut somewhere else that weekend. Over the next month or so, I called him on Saturdays, for the hair cut appointment. He was booked. Every single weekend. I wised up and called him on Friday. I got the appointment for the next day. I did not get the slot I wanted, but I picked from a couple of open slots. I showed up for my appointment, and I have been going to him ever since.&lt;/p&gt;</description></item><item><title>Announcing New CodeDemo Feature - ZoomIt Integration</title><link>https://www.tewari.info/2014/06/15/codedemo-zoomit-integration/</link><pubDate>Mon, 16 Jun 2014 01:15:01 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=761</guid><description>&lt;p&gt;I am very excited to announce a new feature of &lt;a href="http://www.codedemo.net"&gt;CodeDemo&lt;/a&gt;. This feature integrates with &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897434.aspx"&gt;ZoomIt&lt;/a&gt; and enables you to use ZoomIt much more fluently.&lt;/p&gt;
&lt;p&gt;ZoomIt is a great presentation tool. It helps speakers and presenters deliver very effective presentations. But many presenters are not using this great tool as much and as effectively as it can be used. The reason is that ZoomIt has a bit of a learning curve. It takes practice to use it fluently. You have a lot going on in your mind while you are doing a presentation. Using ZoomIt distracts you from your presentation. Practice helps you get over this distraction. A lot of presenters use ZoomIt very effectively with practice. But for the rest of us, ZoomIt mastery has been elusive.&lt;/p&gt;</description></item><item><title>Do not learn another programming language</title><link>https://www.tewari.info/2014/05/31/do-not-learn-another-programming-language/</link><pubDate>Sat, 31 May 2014 22:43:20 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=718</guid><description>&lt;p&gt;As software developers, many of us &lt;a href="http://www.sitepoint.com/best-programming-language-learn-2014/"&gt;agonize&lt;/a&gt; over which &lt;a href="http://mashable.com/2014/01/21/learn-programming-languages/"&gt;programming&lt;/a&gt; &lt;a href="http://beta.slashdot.org/story/08/03/18/1633229/what-programming-languages-should-you-learn-next"&gt;language&lt;/a&gt; we should &lt;a href="http://www.reddit.com/r/learnprogramming/comments/1y02s2/which_programming_language_should_i_learn_next/"&gt;learn&lt;/a&gt; &lt;a href="http://www.streamhead.com/what-programming-language-to-learn-next/"&gt;next&lt;/a&gt;. I have a suggestion - don&amp;rsquo;t learn another programming language. Learn a creative design skill - graphics design, 3-D modelling or Game Development. Learn basic photo editing skills instead of F#. I know &lt;a href="https://twitter.com/jamie_dixon"&gt;Jamie&lt;/a&gt; and &lt;a href="https://twitter.com/ChipBurris"&gt;Chip&lt;/a&gt; will agree with me ;).&lt;/p&gt;
&lt;p&gt;I have a bit of a designer inside me. Not a lot. Just a bit. I was probably 15 when I learned how to do architectural perspective drawings. I created a few of the house renovation my dad was doing at the time. One of my dad&amp;rsquo;s friend asked me to create a drawing for the addition he was doing to his house. More recently, I have designed some logos (for my own use), as well as UI design of &lt;a href="http://www.windigoapp.com/"&gt;Windigo&lt;/a&gt;, a Windows Phone app I created a couple of years ago. These are some of the logos I have created :&lt;/p&gt;</description></item><item><title>Extending Bootstrap - Book Review</title><link>https://www.tewari.info/2014/05/26/extending-bootstrap-book-review/</link><pubDate>Mon, 26 May 2014 19:36:36 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=684</guid><description>&lt;p&gt;&lt;a href="http://www.packtpub.com/extending-bootstrap/book"&gt;Extending Bootstrap&lt;/a&gt; is a new &lt;a href="http://getbootstrap.com/"&gt;Bootstrap&lt;/a&gt; book by &lt;a href="http://crisu83.me/"&gt;Christoffer Niska&lt;/a&gt;, published by &lt;a href="http://www.packtpub.com/"&gt;Packt Publishing&lt;/a&gt;. The publisher contacted me to review the book after reading my &lt;a href="http://blog.appliedis.com/2013/02/04/bootstrap-with-less/"&gt;blog post&lt;/a&gt; about my experiences with Bootstrap and LESS. I am glad I accepted to do this book review. I learned several ways to extend and use Bootstrap by reading this book.&lt;/p&gt;
&lt;p&gt;The book is for intermediate to advanced level users of Bootstrap. It is a quick and to-the-point read. It may feel opinionated to some readers. It is a concise distillation of author&amp;rsquo;s real-world experience with the current state of the Bootstrap technology. It is perfect for individuals and teams who are looking to go beyond the basics with Bootstrap on their projects.&lt;/p&gt;</description></item><item><title>NoSQL in Windows Azure</title><link>https://www.tewari.info/2014/05/02/nosql-in-windows-azure/</link><pubDate>Fri, 02 May 2014 19:36:21 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=961</guid><description>&lt;p&gt;You may have questions like these - What are my NoSQL options in Windows Azure? Can I run MongoDB on linux on Windows Azure? Why would I want to do that? Which one of the NoSQL options are available as managed services? Are all kinds of NoSQL databases available? Are there any limitations? What are options for data analytics?
Or may be you have questions like these - Is it true that NoSQL databases don&amp;rsquo;t have schema? Do they have indexes? What about Views? Should I choose MongoDB or Redis? What is eventual consistency?
In this presentation, you will learn all about NoSQL technologies in Windows Azure Cloud Platform. And you will get get answers to questions like these.
Carolina Code Camp - 2014&lt;/p&gt;</description></item><item><title>Announcing CodeDemo</title><link>https://www.tewari.info/2014/03/09/announcing-codedemo/</link><pubDate>Mon, 10 Mar 2014 01:58:22 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=671</guid><description>&lt;p&gt;It is a challenge to use code snippets in presentations, demos and live coding sessions. I have struggled with this and seen many speakers jumping through hoops to assimilate code snippets in their demos. I had to create something to ease this pain.&lt;/p&gt;
&lt;p&gt;Today, I am announcing the general availability of &lt;a href="http://codedemo.net/" title="CodeDemo website"&gt;CodeDemo&lt;/a&gt;. A tool for instructors, presenters and speakers who create instructional demos, record screen-casts or do live presentations. CodeDemo pastes code snippets into your favorite IDE without getting in your way.&lt;/p&gt;</description></item><item><title>Creating Windows 8 applications with MVVM</title><link>https://www.tewari.info/2014/01/11/creating-windows-8-applications-with-mvvm/</link><pubDate>Sat, 11 Jan 2014 20:10:52 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=967</guid><description>&lt;p&gt;TRINUG January Main Meeting&lt;/p&gt;
&lt;p&gt;You will learn how to use MVVM in your own Windows 8 application - desktop/mobile
You will learn MVVM fundamentals. You will see the contrast between an MVVM application and a non-MVVM application.&lt;/p&gt;</description></item><item><title>Using Layer Diagrams – Keeping your MVVM code from turning into spaghetti</title><link>https://www.tewari.info/2013/11/09/raleigh-code-camp-2013/</link><pubDate>Sat, 09 Nov 2013 20:46:16 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=650</guid><description>&lt;p&gt;&lt;a href="http://codecamp.org/Raleigh" title="Raleigh Code Camp"&gt;Raleigh Code Camp 2013&lt;/a&gt; is wrapping up this afternoon. The venue and the crowd was phenomenal. I really enjoyed &lt;a href="http://codecamp.org/Raleigh/Sessions"&gt;presenting&lt;/a&gt;&amp;ldquo;Using Layer Diagrams - Keeping your MVVM code from turning into spaghetti&amp;rdquo;. Thanks to everyone who attended the presentation.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.tewari.info/wp-content/codecamp2013.png"&gt;&lt;img loading="lazy" src="https://www.tewari.info/wp-content/codecamp2013.png"&gt;&lt;/a&gt;&lt;a href="https://twitter.com/jsonmez"&gt;John Sonmez&lt;/a&gt;, Our Keynote Speaker, made my day by accepting my request to attend my presentation. It was awesome to have him in the audience and to get feedback from him!&lt;/p&gt;</description></item><item><title>NCDevCon 2013 Schedule</title><link>https://www.tewari.info/2013/09/09/ncdevcon-2013-schedule/</link><pubDate>Mon, 09 Sep 2013 21:43:53 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=563</guid><description>&lt;p&gt;&lt;a href="http://ncdevcon.com/"&gt;NCDevCon 2013&lt;/a&gt; (tentative) session &lt;a href="http://www.ncdevcon.com/page.cfm/schedule"&gt;schedule&lt;/a&gt; is up. The &lt;a href="http://ncdevcon.com/page.cfm/sessions-2013"&gt;topics&lt;/a&gt; seem quite interesting and varied : From &amp;ldquo;Web Penetration and Hacking Tools&amp;rdquo; (David Epler) to &amp;ldquo;Better UI/UX with Bootstrap : A Developer&amp;rsquo;s Primer&amp;rdquo; (Steve Keator) to &amp;ldquo;Getting Control of Your Asynchronous JavaScript&amp;rdquo; (Bucky Schwarz).&lt;/p&gt;
&lt;p&gt;I am picking the sessions to attend.  Looks like I will be able attend around 11 sessions in 2 days, if that is all I do while I am there. Sometimes, there are good reasons to not attend a session :&lt;/p&gt;</description></item><item><title>DQS - Data Quality Services in SQL Server 2012</title><link>https://www.tewari.info/2013/07/20/dqs-data-quality-services-in-sql-server-2012/</link><pubDate>Sat, 20 Jul 2013 20:22:06 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=972</guid><description>&lt;p&gt;TRINUG - Data SIG, July 2013&lt;/p&gt;
&lt;p&gt;SQL Server Data Quality Services (DQS) is a knowledge-driven data quality product. DQS enables you to build a knowledge base and use it to perform a variety of critical data quality tasks, including correction, enrichment, standardization, and de-duplication of your data.&lt;/p&gt;</description></item><item><title>Get Your Windows 8 Start Menu Back With Pokki</title><link>https://www.tewari.info/2013/05/23/get-your-windows-8-start-menu-back-with-pokki/</link><pubDate>Fri, 24 May 2013 05:34:39 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=447</guid><description>&lt;p&gt;I like the new Windows 8 experience. Start screen with live tiles is awesome. But I have been missing the Start Menu when I am on the desktop. There are &lt;a href="http://www.redorbit.com/news/technology/1112841701/microsoft-bringing-back-the-start-button-for-windows-8-050913/"&gt;plenty&lt;/a&gt; of &lt;a href="http://bits.blogs.nytimes.com/2013/05/07/after-bumpy-start-microsoft-rethinks-windows-8/"&gt;rumours&lt;/a&gt; that Microsoft will bring back the Start Menu in the next version of Windows - &lt;a href="http://www.zdnet.com/microsofts-windows-8-plan-blue-bring-back-the-start-button-boot-to-desktop-7000014075/"&gt;Windows Blue&lt;/a&gt;. Until then, you can use one of many third party utilities for that functionality - &lt;a href="http://www.classicshell.com/"&gt;ClassicShell&lt;/a&gt;, &lt;a href="http://www.stardock.com/products/start8/"&gt;Start8&lt;/a&gt; and &lt;a href="https://www.pokki.com/windows-8-start-menu"&gt;Pokki&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I started using &lt;a href="https://www.pokki.com/windows-8-start-menu"&gt;Pokki&lt;/a&gt;. And I love it. It feels like my world is whole again. Pokki is &lt;a href="https://www.pokki.com/windows-8-start-menu"&gt;free&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Refactoring to MVVM (Windows 8)</title><link>https://www.tewari.info/2013/05/05/refactoring-to-mvvm-windows-8/</link><pubDate>Sun, 05 May 2013 19:47:09 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=963</guid><description>&lt;p&gt;Carolina Code Camp - 2013
You will learn how to structure your app&amp;rsquo;s code in a way that
- improves maintainability
- enables testability of your app&amp;rsquo;s UI behavior
- reduces maintenance cost
- enables cross-platform deployment&lt;/p&gt;</description></item><item><title>The Site44 Workflow</title><link>https://www.tewari.info/2013/02/06/the-site44-workflow/</link><pubDate>Wed, 06 Feb 2013 17:32:50 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=418</guid><description>&lt;p&gt;A light weight development workflow with real-time website deployment.&lt;/p&gt;
&lt;p&gt;I recently built &lt;a href="http://ash.site44.com/hero.html"&gt;a sample website&lt;/a&gt; to illustrate &lt;a href="http://blog.appliedis.com/2013/02/04/bootstrap-with-less/"&gt;how clean, semantic html&lt;/a&gt; markup can be maintained when using &lt;a href="http://twitter.github.com/bootstrap/index.html"&gt;Bootstrap&amp;rsquo;s&lt;/a&gt; &lt;a href="http://twitter.github.com/bootstrap/scaffolding.html#gridSystem"&gt;grid system&lt;/a&gt;. The solution is to use a &lt;a href="http://lesscss.org"&gt;css pre-processor&lt;/a&gt; to incorporate Bootstrap&amp;rsquo;s &lt;a href="http://lesscss.org"&gt;LESS&lt;/a&gt; based &lt;a href="http://twitter.github.com/bootstrap/extend.html#built-with-less"&gt;mixins&lt;/a&gt; into your own .less files and push the Bootstrap instructions down into your stylesheets. There are two ways to &amp;ldquo;compile&amp;rdquo; .less stylesheets - use a &lt;a href="http://winless.org/"&gt;stand-alone LESS compiler&lt;/a&gt; or use &lt;a href="https://github.com/cloudhead/less.js"&gt;less.js&lt;/a&gt;. I found it very convenient to use &lt;a href="https://raw.github.com/cloudhead/less.js/master/dist/less-1.3.3.min.js"&gt;less.js&lt;/a&gt; (note that it is not recommended in production deployment). As I started working on developing the sample code I found it a bit cumbersome to work with an entire web application project in Visual Studio, considering I was working with some really simple sample client-side html, css. As I craved for an alternative, I stumbled on to a development workflow that is incredibly simple and a lot of fun. I call it the Site44 workflow. Site44 turns your dropbox folders into websites. And it is awesome! Here is what you do -&lt;/p&gt;</description></item><item><title>Understanding and Using System.Transactions</title><link>https://www.tewari.info/2012/10/17/understanding-and-using-system-transactions/</link><pubDate>Wed, 17 Oct 2012 16:10:42 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=380</guid><description>&lt;p&gt;These are some resources to help grasp &lt;a href="http://msdn.microsoft.com/en-us/library/vstudio/system.transactions(v=vs.90).aspx" title="System.Transactions Namespace"&gt;System.Transactions&lt;/a&gt; functionality and use it effectively in your projects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/vstudio/ee818755(v=vs.100).aspx"&gt;Features Provided by System.Transactions&lt;/a&gt; to &lt;a href="http://msdn.microsoft.com/en-us/library/vstudio/ee818751(v=vs.100).aspx"&gt;create transactional applications&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/vstudio/ee818746(v=vs.100).aspx"&gt;Implementing an Implicit Transaction using Transaction Scope&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;MSDN Magazine Articles by &lt;a href="http://www.johnpapa.net/"&gt;John Papa&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163847.aspx"&gt;ADO.NET and System.Transactions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163527.aspx"&gt;Revisiting System.Transactions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;These are specific to &lt;a href="http://msdn.microsoft.com/en-us/library/vstudio/system.transactions.transactionscope(v=vs.100).aspx"&gt;TransactionScope&lt;/a&gt;(the way to go in most cases):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Here is a practical example of &lt;a href="http://thewayofcode.wordpress.com/2011/12/11/handling-transactions-in-net-using-transactionscope/"&gt;Using TransactionScope to handle transactions in .net&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;This &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc300805.aspx"&gt;article in MSDN Magazine&lt;/a&gt; gets in depth with the way a TransactionScope like functionality can be implemented. Gives you a good understanding of what is happening under the hood when using TransactionScope in some Repository implementations in multi-threaded scenarios.&lt;/li&gt;
&lt;li&gt;This CodeProject article is another example of &lt;a href="http://www.codeproject.com/Articles/31270/A-Transactional-Repository-Implementation-in-NET"&gt;implementing a transactional repository&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;There are &lt;a href="http://blogs.msdn.com/b/dbrowne/archive/2010/06/03/using-new-transactionscope-considered-harmful.aspx"&gt;excellent tips here&lt;/a&gt; about configuring TransactionScope when using it with SQL Server.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;This is a good resource for &lt;a href="http://www.codeproject.com/Articles/55472/Committable-Transactions-in-C-SQL"&gt;understanding CommitableTransaction&lt;/a&gt; usage.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;And this one on the CodeProject has brilliant, in-depth and under-the-hood coverage - &lt;a href="http://www.codeproject.com/Articles/35087/Truly-Understanding-NET-Transactions-and-WCF-Imple"&gt;Truly Understanding .NET Transactions and WCF Implementation&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Protecting Your Api Keys</title><link>https://www.tewari.info/2012/09/02/protecting-your-api-keys/</link><pubDate>Mon, 03 Sep 2012 03:14:38 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=354</guid><description>&lt;p&gt;I am working on a Windows 8 app (details to follow in a subsequent post) and the code is published in a public repo on &lt;a href="http://www.github.com/"&gt;github&lt;/a&gt;. My app uses third-party APIs and after I committed the first cut to github, I realized that I had included my api keys in the code. The whole world had access to my keys. I did not want to publish the developer keys for those APIs to the entire world.&lt;/p&gt;</description></item><item><title>Favorite Excel Keyboard Shortcuts</title><link>https://www.tewari.info/2012/08/24/favorite-excel-keyboard-shortcuts/</link><pubDate>Fri, 24 Aug 2012 21:46:23 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=347</guid><description>&lt;p&gt;I am a big fan of keyboard shortcuts. Here are some of my favorites keyboard shortcuts in Excel.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://www.tewari.info/images/F2toeditselectedcell.png"&gt;&lt;img loading="lazy" src="https://www.tewari.info/images/Ctrl5tostrikethrough.png"&gt;&lt;img loading="lazy" src="https://www.tewari.info/images/shiftspacetoselectrow.png"&gt;&lt;img loading="lazy" src="https://www.tewari.info/images/ctrlspacetoselectcolumn.png"&gt;&lt;img loading="lazy" src="https://www.tewari.info/images/ctrlminustodeleteselectedrowcolumn.png"&gt;&lt;img loading="lazy" src="https://www.tewari.info/images/dragcopy-b4.png"&gt;&lt;img loading="lazy" src="https://www.tewari.info/images/dragcopyafter.png"&gt;&lt;/p&gt;</description></item><item><title>Solution to the fetch puzzle</title><link>https://www.tewari.info/2012/01/03/solution-to-the-fetch-puzzle/</link><pubDate>Wed, 04 Jan 2012 03:00:38 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=330</guid><description>&lt;p&gt;Here is a brute force solution to the fetch problem -&lt;/p&gt;
&lt;p&gt;Basically, at each step there are three possibilities :&lt;/p&gt;
&lt;p&gt;1. You can fill a bucket.&lt;/p&gt;
&lt;p&gt;2. You can transfer water from one bucket to the other one.&lt;/p&gt;
&lt;p&gt;3. You can dump out the water from a bucket.&lt;/p&gt;
&lt;p&gt;In this brute force solution, I try each one of these steps and then try all three again after each one of the previous steps. And on&lt;/p&gt;</description></item><item><title>Solve puzzle with code</title><link>https://www.tewari.info/2011/12/26/solve-puzzle-with-code/</link><pubDate>Tue, 27 Dec 2011 04:44:17 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=322</guid><description>&lt;p&gt;Here is a quite common programming interview puzzle - You have two buckets. A 3 gallon bucket and a 5 gallon bucket. Buckets are not marked or graduated. You are to fetch 4 gallon of water in a single trip to the river. How will you do it?&lt;/p&gt;
&lt;p&gt;Obviousy, this question is asked by changing the capacities of the two buckets and the amount of water to be fetched.&lt;/p&gt;
&lt;p&gt;Your mission, should you choose to accept it, is to write a program to solve this puzzle in a generic way. Your program should take 3 inputs - capacities of the two buckets and the amount of water to be fetched. After solving the puzzle, your program must write out the solution step-by-step. You can use any programming language, any platform, any programming technique to write the program. Use whatever you like - C#, VB, C, C++, Java, Ruby, Python, F#, Boo, Javascript or any other language of your choice. Use design patterns, TDD, BDD, MVVM, Linq or whatever. Make it blazing fast, exploit multiple cores, use artificial intelligence. Go nuts! If you want to write the whole program in T-sql, powershell script or a batch script, go ahead. Heck ! you can even do it with regular expressions, if that your thing!&lt;/p&gt;</description></item><item><title>Windigo 1.1 Released</title><link>https://www.tewari.info/2011/12/05/windigo-1-1-released/</link><pubDate>Mon, 05 Dec 2011 13:59:47 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=313</guid><description>&lt;p&gt;&lt;a href="http://www.windowsphone.com/en-US/apps/fa40440c-a974-4329-b650-cf46d7c6eae4"&gt;&lt;img alt="windigo-samsung" loading="lazy" src="https://www.tewari.info/wp-content/windigo_10-3-2011_0.52.40.563.png"&gt;&lt;/a&gt;&lt;a href="http://www.windowsphone.com/en-US/apps/fa40440c-a974-4329-b650-cf46d7c6eae4" title="windigo-marketplace"&gt;Windigo&lt;/a&gt; is a windows phone app to access your &lt;a href="http://www.diigo.com" title="diigo-website-url"&gt;diigo&lt;/a&gt; account on windows phone 7.&lt;/p&gt;
&lt;p&gt;Create, edit and search diigo bookmarks. Slick, to-the-point interface. Browse and search public bookmarks of other diigo users. Tap on the bookmark for details, including tags. Tap on any tag to narrow your search. Trial version is available.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowsphone.com/en-US/apps/fa40440c-a974-4329-b650-cf46d7c6eae4" title="windigo-download-link"&gt;Windigo 1.1&lt;/a&gt; is out on the windows phone marketplace now.  Highlights of this update :&lt;/p&gt;
&lt;p&gt;- Last SearchScope used is now persistent&lt;/p&gt;</description></item><item><title>Call For Windigo Beta Testers</title><link>https://www.tewari.info/2011/10/08/call-for-windigo-beta-testers/</link><pubDate>Sat, 08 Oct 2011 19:06:36 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=295</guid><description>&lt;p&gt;Windigo is a windows phone app. It lets you access your &lt;a href="http://www.diigo.com/"&gt;Diigo&lt;/a&gt; bookmarks on the go from your windows phone. You can browse, edit and create new bookmarks. Search your and other&amp;rsquo;s (public) bookmarks. Drill-down using tags. Share your bookmarks with your friends.&lt;/p&gt;
&lt;p&gt;I have completed developing this app and I would like to get it in the hands of a few more people to get some additional feedback before I submit it in windows phone marketplace. If you have a windows phone and a windows live id, you can help with this. Your phone does not need to be a developer (unlocked) phone.&lt;/p&gt;</description></item><item><title>ChildWindow Positioning</title><link>https://www.tewari.info/2011/06/07/childwindow-positioning/</link><pubDate>Tue, 07 Jun 2011 11:23:52 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=269</guid><description>&lt;p&gt;Silverlight &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.childwindow(v=vs.95).aspx" title="MSDN_Silverlight_ChildWindow"&gt;ChildWindow&lt;/a&gt; is centered over the parent control. I have extended ChildWindow to open it at a specific position.&lt;/p&gt;
&lt;figure&gt;
&lt;img loading="lazy" src="https://www.tewari.info/images/PositionedChildWindow-screenshot.png"
alt="Positioned ChildWindow"/&gt; &lt;figcaption&gt;
&lt;p&gt;Positioned ChildWindow&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Here is a live demo : &lt;a href="https://www.tewari.info/childwindow-positioning-demo/"&gt;childwindow-positioning-demo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And here is the code :&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;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;public partial class ChildWindowEx : ChildWindow
&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&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Point _pt = new Point(0,0);
&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; public ChildWindowEx()
&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; InitializeComponent();
&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&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; public ChildWindowEx(Point pt) : this()
&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; _pt = pt;
&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&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; protected override Size ArrangeOverride(Size finalSize)
&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; Grid grid = Utils.FindChild(this, &amp;#34;ContentRoot&amp;#34;);
&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; if (grid != null)
&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; grid.Arrange(new Rect(_pt.X, _pt.Y, grid.DesiredSize.Width, grid.DesiredSize.Height));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; return finalSize;
&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&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; return base.ArrangeOverride(finalSize);
&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&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Visual Studio 2010 Solution : &lt;a href="https://www.tewari.info/downloads/PositionedChildWindow.zip"&gt;download&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Remove ListBoxItem Highlighting</title><link>https://www.tewari.info/2011/04/29/remove-listboxitem-highlighting/</link><pubDate>Sat, 30 Apr 2011 03:25:58 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=239</guid><description>&lt;p&gt;A Silverlight/Wpf ListBoxItem is highlighted when selected or when the mouse hovers over it.&lt;/p&gt;
&lt;p&gt;I need to display a list of items that are not highlighted when selected. This is a common scenario when displaying an inactive list for simply listing out some information.&lt;/p&gt;
&lt;p&gt;ListBoxItem&amp;rsquo;s default template can be easily inspected and modified using Expression Blend - Select a ListBoxItem in Objects and Timeline pane, Right click and select Edit template &amp;gt; Edit a Copy. Name you template and save it at the scope of your choice.&lt;/p&gt;</description></item><item><title>Sideload Windows Phone</title><link>https://www.tewari.info/2010/11/25/sideload-windows-phone/</link><pubDate>Thu, 25 Nov 2010 21:02:12 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=222</guid><description>&lt;p&gt;1. Create your AppHub account here - &lt;a href="http://create.msdn.com"&gt;http://create.msdn.com&lt;/a&gt;. Registration walk through is &lt;a href="http://create.msdn.com/en-US/home/about/developer_registration_walkthrough" title="registration-walk-through"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;2. Unlock your phone - using PhoneReg.exe (usually) located here - &amp;ldquo;C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.0\Tools\Phone Registration\PhoneReg.exe&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;img alt="wp-Start-WPDevTools" loading="lazy" src="https://www.tewari.info/wp-content/wp-Start-WPDevTools.png"&gt;&lt;img alt="wp-dev-phone-registration" loading="lazy" src="https://www.tewari.info/wp-content/wp-dev-phone-registration.png"&gt;&lt;/p&gt;
&lt;p&gt;3. Sideload xap into your phone. Use XapDeploy.exe (usually) located here - &amp;ldquo;C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.0\Tools\XAP Deployment\XapDeploy.exe&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;img alt="wp-app-deployment" loading="lazy" src="https://www.tewari.info/wp-content/wp-app-deployment.png"&gt;&lt;/p&gt;
&lt;p&gt;You can also deploy straight from Visual Studio to Windows Phone Device. Connect your phone to your computer.
Make sure Visual Studio deployment target is &amp;ldquo;Windows Phone 7 Device&amp;rdquo; :&lt;/p&gt;</description></item><item><title>Getting Started with MVVM</title><link>https://www.tewari.info/2010/11/06/getting-started-with-mvvm/</link><pubDate>Sat, 06 Nov 2010 16:29:24 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=220</guid><description>&lt;p&gt;I just finished presenting here at &lt;a href="http://codecamp.org/"&gt;RDU Code Camp&lt;/a&gt;. It was a great crowd ! Here are the slides -&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.slideshare.net/ashtewari/getting-started-with-mvvm" title="Getting started with MVVM"&gt;Getting started with MVVM&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/ashtewari"&gt;ashtewari&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Win Advanced MVVM Book</title><link>https://www.tewari.info/2010/05/09/win-advanced-mvvm-book/</link><pubDate>Mon, 10 May 2010 03:33:06 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=200</guid><description>&lt;p&gt;&lt;a href="http://joshsmithonwpf.wordpress.com/advanced-mvvm/"&gt;&lt;img alt="Advanced MVVM Cover" loading="lazy" src="https://www.tewari.info/wp-content/advancedmvvmcover.jpg"&gt;&lt;/a&gt; I am presenting a session on Building WPF Application using MVVM (&lt;a href="http://en.wikipedia.org/wiki/Model_View_ViewModel" title="Wikipedia-MVVM"&gt;Model-View-ViewModel&lt;/a&gt;) on May 15th at the &lt;a href="http://codecamp.developersguild.org/" title="Carolina Code Camp 2010"&gt;Carolina Code Camp&lt;/a&gt; 2010.&lt;/p&gt;
&lt;p&gt;I will dissect a Sample WPF MVVM application and then highlight the most important aspects of the MVVM by coding a brand new ViewModel and incorporating it into the application. You will learn about the Roles of the MVVM triad, the advantages of using MVVM and Characteristics of the ViewModel.&lt;/p&gt;</description></item><item><title>SVN Merge - Selecting Changesets</title><link>https://www.tewari.info/2010/04/25/svn-merge-selecting-changesets/</link><pubDate>Mon, 26 Apr 2010 00:15:31 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/2010/04/25/svn-merge-selecting-changesets/</guid><description>&lt;p&gt;Here is a simple scenario – I have already merged changesets 45-55 from the trunk to branch b1. After this merge, more changes (56-60) were submitted into the trunk and I now need to merge those changes also to branch b1.&lt;/p&gt;
&lt;p&gt;Which changesets do you select to merge ? 56-60, right ? Well, not exactly. It depends. If you are using &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; merge command, you will need to specify 55-60. If you are using &lt;a href="http://tortoisesvn.net/"&gt;TortoiseSVN&lt;/a&gt;, you will select 56-60. You should keep this in mind if you are used to TortoiseSVN and you are attempting a merge using SVN merge command. Otherwise, you will end up with a merge without change 56.&lt;/p&gt;</description></item><item><title>Code Validation in TortoiseSVN pre_commit_hook</title><link>https://www.tewari.info/2010/03/31/code-validation-in-tortoisesvn-pre_commit_hook/</link><pubDate>Thu, 01 Apr 2010 04:32:10 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=178</guid><description>&lt;p&gt;If you want to abort a commit if your code fails certain rule and you don&amp;rsquo;t have access to the &lt;a href="http://subversion.tigris.org/" title="svn"&gt;SVN&lt;/a&gt; Server to configure a hook. What do you do ?&lt;/p&gt;
&lt;p&gt;Assuming you are using &lt;a href="http://tortoisesvn.tigris.org/" title="tortoisesvn"&gt;TortoiseSVN&lt;/a&gt;, you can configure a &lt;a href="http://tortoisesvn.tigris.org/tsvn_1.5_releasenotes.html#client-side-hooks" title="tortoisesvn-client-side-hook"&gt;Client-Side hook&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here is an example - Say you want to abort commit if you have a comment in your code that starts with &lt;strong&gt;//Do Not Commit&lt;/strong&gt;. You can create a &lt;a href="http://en.wikipedia.org/wiki/Windows_PowerShell" title="wikipedia-powershell"&gt;PowerShell&lt;/a&gt; script that validates all the files in your changeset and use this script as a Client-Side pre_commit_hook in TortoiseSVN.&lt;/p&gt;</description></item><item><title>Using Model-View-ViewModel in WPF Applications</title><link>https://www.tewari.info/2010/01/25/using-model-view-viewmodel-in-wpf-applications/</link><pubDate>Mon, 25 Jan 2010 22:23:39 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=155</guid><description>&lt;p&gt;I am presenting at &lt;a href="http://www.socalcodecamp.com/" title="socalcodecamp website"&gt;SoCalCodeCamp&lt;/a&gt; this weekend (January 30th, 2010) - &lt;a href="http://www.socalcodecamp.com/socalcodecamp/session.aspx?sid=0b2ee44f-595d-4f55-a5d6-2b1293f546d0" title="WPF MVVM Presntation "&gt;Advanced WPF - Using Model-View-ViewModel in WPF Applications&lt;/a&gt;.&lt;/p&gt;
&lt;figure&gt;
&lt;img loading="lazy" src="https://www.tewari.info/wp-content/tasklist.png"
alt="tasklist-mockup"/&gt; &lt;figcaption&gt;
&lt;p&gt;tasklist-mockup&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Agenda :&lt;/p&gt;
&lt;p&gt;1. Roles of the M-V-VM triad&lt;/p&gt;
&lt;p&gt;2. Why use M-V-VM ?&lt;/p&gt;
&lt;p&gt;3. Characteristics of the ViewModel&lt;/p&gt;
&lt;p&gt;4. Build a Sample WPF Application using M-V-VM&lt;/p&gt;
&lt;p&gt;Resources :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx" title="MSDN Magazine Article"&gt;MSDN Magazine Article&lt;/a&gt; and Sample Application &lt;a href="http://code.msdn.microsoft.com/mag200902MVVM/Release/ProjectReleases.aspx" title="Download Demo Application Code"&gt;Download&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://martinfowler.com/eaaDev/PresentationModel.html" title="MartinFowler.com"&gt;Martin Fowler’s description of the ‘Presentation Model ‘&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://codebetter.com/blogs/jeremy.miller/archive/2007/07/25/the-build-your-own-cab-series-table-of-contents.aspx" title="Jeremy Miller's - Build Your CAB"&gt;Jeremy Miller’s ‘Build Your Own CAB’ series&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Use Legacy Printer From Windows 7</title><link>https://www.tewari.info/2010/01/23/use-legacy-printer-from-windows-7/</link><pubDate>Sun, 24 Jan 2010 01:10:04 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=150</guid><description>&lt;p&gt;I have NEC SuperScript 870 laser printer connected to my Home PC. I was not able to print to this printer from my new HP dv6-1375dx Windows 7 laptop. My machines are connected via &lt;a href="http://www.LogMeIn.com" title="hamachi"&gt;Hamachi&lt;/a&gt;. Here is what I did to get around the lack of NEC driver for Windows 7 (I found this tip &lt;a href="http://social.technet.microsoft.com/Forums/en/w7itprohardware/thread/c2650495-a9f6-4ead-a1d0-aa9c0b265af3" title="social.technet.microsoft.com"&gt;here&lt;/a&gt;) -&lt;/p&gt;
&lt;p&gt;1. Created a new printer (pointing to the same LPT port that is connected to NEC 870) on my Home PC using HP Laser Jet III driver.&lt;/p&gt;</description></item><item><title>Should you get into Silverlight or Flash ?</title><link>https://www.tewari.info/2009/11/22/should-you-get-into-silverlight-or-flash/</link><pubDate>Mon, 23 Nov 2009 04:31:44 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=139</guid><description>&lt;p&gt;Take a look at these trend lines from Indeed.com (Yes, you read that right. That is &lt;strong&gt;EIGHTY THOUSAND percent&lt;/strong&gt; growth in silverlight jobs) -&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.indeed.com/jobtrends?q=silverlight&amp;amp;relative=1&amp;amp;relative=1" title="silverlight Job Trends"&gt;&lt;img alt="silverlight Job Trends graph" loading="lazy" src="http://www.indeed.com/trendgraph/jobgraph.png?q=silverlight&amp;relative=1"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here is the trend line for Flash jobs -&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.indeed.com/jobtrends?q=flash&amp;amp;relative=1&amp;amp;relative=1" title="flash Job Trends"&gt;&lt;img alt="flash Job Trends graph" loading="lazy" src="http://www.indeed.com/trendgraph/jobgraph.png?q=flash&amp;relative=1"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Growth is there but the total number of jobs are clearly stabilizing. Here are the absolute number of jobs -&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.indeed.com/jobtrends?q=silverlight%2C+flash" title="silverlight, flash Job Trends"&gt;&lt;img alt="silverlight, flash Job Trends graph" loading="lazy" src="http://www.indeed.com/trendgraph/jobgraph.png?q=silverlight%2C+flash"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Session Recommendations for SoCal Code Camp @ USC</title><link>https://www.tewari.info/2009/11/12/session-recommendations-for-socal-code-camp-usc/</link><pubDate>Thu, 12 Nov 2009 07:02:24 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=137</guid><description>&lt;p&gt;&lt;a href="http://www.socalcodecamp.com/" title="SoCal Code Camp Home"&gt;SoCal Code Camp&lt;/a&gt; is coming up on November 21st &amp;amp; 22nd 2009 at University of Southern California, Los Angeles. There is just an incredible lineup of sessions. If you are trying to make up your mind about the &lt;a href="http://www.socalcodecamp.com/sessions.aspx" title="SoCal Code Camp Sessions"&gt;sessions&lt;/a&gt; to attend, here are my recommendations -&lt;/p&gt;
&lt;p&gt;1. Attend as many of &lt;a href="http://www.socalcodecamp.com/presenters.aspx#LlewellynFalco" title="Llewellyn Falco"&gt;Llewellyn Falco&amp;rsquo;s&lt;/a&gt; and &lt;a href="http://www.socalcodecamp.com/presenters.aspx#WoodyZuill" title="Woody Zuill"&gt;Woody Zuill&lt;/a&gt;&amp;rsquo;s sessions as you can. Specially, &lt;a href="http://www.socalcodecamp.com/session.aspx?sid=9517fe67-b29d-4e24-b707-c62f53c133a3" title="Unit Testing Session"&gt;Unit Testing The Easy Way&lt;/a&gt; and one of the &lt;a href="http://www.socalcodecamp.com/session.aspx?sid=84c8777a-e7d8-4ba1-90e1-637f9f213ad5" title="sunday"&gt;Dojo&lt;/a&gt; &lt;a href="http://www.socalcodecamp.com/session.aspx?sid=8b0f26e9-c5a5-4c7f-b81f-66e13704ff84" title="sat"&gt;sessions&lt;/a&gt;. Any one of these sessions will make your entire trip worthwhile.&lt;/p&gt;</description></item><item><title>Using DbUpdater with MySql</title><link>https://www.tewari.info/2009/09/28/using-dbupdater-with-mysql/</link><pubDate>Mon, 28 Sep 2009 07:13:02 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=129</guid><description>&lt;p&gt;&lt;a href="https://www.tewari.info/dbupdater/" title="DbUpdater Page"&gt;DbUpdater&lt;/a&gt; can be used with &lt;a href="http://www.mysql.com/" title="mysql.com"&gt;mysql&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here are the files you need to jumpstart the integration - &lt;a href="https://www.tewari.info/downloads/DbUpdater-MySql.zip" title="DbUpdater-MySql.zip"&gt;DbUpdater-MySql.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;1. You might need to change the path to mysql.exe in mysql-exec.bat.&lt;/p&gt;
&lt;p&gt;2. Modify values in mysql-sample-command-line.bat.&lt;/p&gt;
&lt;p&gt;Make sure mysql.data.dll is placed in GAC or in the same directory as DbUpdater.exe. Connector binaries can be downloaded from here -
&lt;a href="http://dev.mysql.com/downloads/connector/net/6.1.html" title="MySql .NET Connector Download"&gt;http://dev.mysql.com/downloads/connector/net/6.1.html&lt;/a&gt;&lt;/p&gt;</description></item><item><title>SQL Azure Notes</title><link>https://www.tewari.info/2009/09/10/sql-azure-notes/</link><pubDate>Fri, 11 Sep 2009 03:45:26 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=102</guid><description>&lt;p&gt;My invitation code for &lt;a href="http://www.microsoft.com/azure/sql.mspx"&gt;SQL Azure CTP&lt;/a&gt; finally arrived. I had been waiting for this.&lt;/p&gt;
&lt;p&gt;&lt;img alt="sqlazure-manage.png" loading="lazy" src="https://www.tewari.info/images/sqlazure-manage.png"&gt;&lt;/p&gt;
&lt;p&gt;You can create a database in from the SQL Azure Management page, shown above.&lt;/p&gt;
&lt;p&gt;After you have created the database, of course, you can use &lt;a href="https://www.tewari.info/dbupdater/"&gt;DbUpdater&lt;/a&gt; with your SQL Azure databases. Here is the command-line :
DbUpdater.exe ..\SqlScripts /server:&amp;ldquo;tcp:SERVER.ctp.database.windows.net&amp;rdquo; /db:DATABASE /user:&amp;ldquo;USER@SERVER&amp;rdquo; /password:PASSWORD /confirm:true&lt;/p&gt;
&lt;p&gt;And you will need this DbUpdater.exe.config file :&lt;/p&gt;
&lt;?xml version="1.0" encoding="utf-8" ?&gt;
&lt;configuration&gt;
&lt;appSettings&gt;
&lt;add key="file-prefix" value="db" /&gt;
&lt;add key="file-extension" value="sql" /&gt;
&lt;add key="schema-versions-name" value="schema-versions-table.sql" /&gt;
&lt;add key="baseline-name" value="baseline.sql" /&gt;
&lt;add key="post-script-prefix" value="post" /&gt;
&lt;add key="post-script-always-apply" value="true" /&gt;
&lt;add key="exe-file" value="C:\\Program Files\\Microsoft SQL Server\\90\\Tools\\Binn\\SQLCMD.EXE" /&gt;
&lt;add key="exe-args" value='-U %UserName% -P %Password% -S "%ServerName%" -d %DbName% -i "%SqlFile%"' /&gt;
&lt;add key="dialect" value="NHibernate.Dialect.MsSql2000Dialect" /&gt;
&lt;add key="driver\_class" value="NHibernate.Driver.SqlClientDriver" /&gt;
&lt;add key="connection\_string" value="Server=%ServerName%;Database=%DbName%;User ID=%UserName%;Password=%Password%;Trusted\_Connection=False;" /&gt;
&lt;/appSettings&gt;
&lt;/configuration&gt;
&lt;p&gt;You can run sqlcmd.exe directly to execute t-sql scripts on SQL Azure. Here is a sample command :
sqlcmd.exe -S SERVER.ctp.database.windows.net -U USER@SERVER -P PASSWORD -d DB -i &amp;ldquo;baseline.sql&amp;rdquo;&lt;/p&gt;</description></item><item><title>Online Backup Solution</title><link>https://www.tewari.info/2009/08/25/online-backup-solution/</link><pubDate>Wed, 26 Aug 2009 05:40:40 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=80</guid><description>&lt;p&gt;Finalized online backup solution : &lt;a href="http://www.jungledisk.com" title="jungledisk"&gt;JungleDisk&lt;/a&gt;. I can run it on all of my machines &lt;a href="http://jungledisk.com/desktop/how.aspx" title="jungledisk-features"&gt;without paying extra&lt;/a&gt;. I get to keep the ownership of my data - by using my own &lt;a href="http://aws.amazon.com/s3/" title="amazon-s3"&gt;Amazon S3&lt;/a&gt; storage. Backed up all family photos - all 30 GBs. Feeling good :)&lt;/p&gt;</description></item><item><title>Switched to Thematic</title><link>https://www.tewari.info/2009/08/24/switched-to-thematic/</link><pubDate>Tue, 25 Aug 2009 05:36:31 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/?p=78</guid><description>&lt;p&gt;I have switched to &lt;a href="http://themeshaper.com/thematic/" title="Thematic"&gt;Thematic&lt;/a&gt; theme on this blog over the weekend. I created a child theme after playing around with the customization hooks. I added a widgetized area below main asides, did some css modifications and created a three column, flexible layout just the way I wanted. I am so glad I switched to Thematic. &lt;a href="http://themeshaper.com/forums/" title="ThemeShaper Forums"&gt;ThemeShaper Forums&lt;/a&gt;&lt;a href="http://themeshaper.com/" title="ThemeShaper"&gt;ThemeShaper&lt;/a&gt; forums are very helpful. These articles were just what I needed to get started : &lt;a href="http://op111.net/53" title="op111.net"&gt;How to make a child theme for WordPress&lt;/a&gt; and &lt;a href="http://themeshaper.com/functions-php-wordpress-child-themes/" title="ThemeShaper.com"&gt;How I used a WordPress Child Theme To Redesign My Blog&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Is Scrum Bad For Developers ?</title><link>https://www.tewari.info/2009/06/30/is-scrum-bad-for-developers/</link><pubDate>Wed, 01 Jul 2009 06:22:25 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/2009/06/30/is-scrum-bad-for-developers/</guid><description>&lt;p&gt;&lt;a href="http://www.socalcodecamp.com/" title="http://www.socalcodecamp.com/"&gt;SoCal CodeCamp&lt;/a&gt; was a blast. Thanks to everyone who attended my presentation : &lt;a href="http://www.socalcodecamp.com/session.aspx?sid=bb64801e-7bbe-4b9f-9ca3-4f8975270ff0" title="http://www.socalcodecamp.com/session.aspx?sid=bb64801e-7bbe-4b9f-9ca3-4f8975270ff0"&gt;If it walks like a Scrum&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The slide-deck can be downloaded from &lt;a href="https://www.tewari.info/downloads/If_it_walks_like_a_Scrum.7z" title="download-If_it_walks_like_a_Scrum.7z"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt="If it walks like a Scrum.png" loading="lazy" src="https://www.tewari.info/images/If%20it%20walks%20like%20a%20Scrum.png"&gt;&lt;/p&gt;</description></item><item><title>GUI Prototyping Tools</title><link>https://www.tewari.info/2009/05/16/gui-prototyping-tools/</link><pubDate>Sun, 17 May 2009 05:34:41 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/2009/05/16/gui-prototyping-tools/</guid><description>&lt;p&gt;Special purpose UI prototyping tools, like the ones listed on &lt;a href="http://c2.com/cgi/wiki?GuiPrototypingTools"&gt;C2 Wiki&lt;/a&gt;, offer a convenient blend of usability and flexibility. I have tried some of these tools. I was looking for something that -&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;doesn&amp;rsquo;t become unwieldy when used to prototype a large and complex GUI&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;allows me to use my own screenshots/images/icons&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;allows me to modify the prototype without making it a hair-pulling experience.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;can prototype all aspects and artifacts of &lt;a href="http://www.balsamiq.com/products/mockups/examples"&gt;modern web and desktop interfaces&lt;/a&gt;, specially -&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;tree controls  - you will be surprised how many prototyping tools don&amp;rsquo;t have this. &lt;a href="http://www.evolus.vn/Pencil/"&gt;Pencil&lt;/a&gt;, I am looking at you :)&lt;/li&gt;
&lt;li&gt;tabbed panels  - can you position your tabs at the bottom ? on the right edge ?&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/miscctrl/CustomFilmstripControl.aspx"&gt;film strips&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.devexpress.com/Products/NET/Controls/WinForms/Bars/Features_Ribbon.xml"&gt;ribbons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.devexpress.com/Products/NET/Controls/WinForms/NavBar/"&gt;NavBars&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Create Games From Scratch</title><link>https://www.tewari.info/2009/04/11/create-games-from-scratch/</link><pubDate>Sat, 11 Apr 2009 16:31:26 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/2009/04/11/create-games-from-scratch/</guid><description>&lt;p&gt;My 18 month old son woke me up at 4 in the morning. I got him to go back to sleep, but &amp;hellip; and here I am writing.&lt;/p&gt;
&lt;p&gt;A few weeks ago, I downloaded &lt;a href="http://scratch.mit.edu/"&gt;Scratch&lt;/a&gt; from M.I.T&amp;rsquo;s website. Scratch is a programming language for kids. You drag/drop and (literally) snap together programming constructs to create games. Within a couple of minutes, I had a diver chasing a ball bouncing around on the screen.&lt;/p&gt;</description></item><item><title>RIA with Silverlight and WCF - Los Angeles .NET Developers Group</title><link>https://www.tewari.info/2009/03/26/ria-with-silverlight-and-wcf-los-angeles-net-developers-group/</link><pubDate>Fri, 27 Mar 2009 04:43:01 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/2009/03/26/ria-with-silverlight-and-wcf-los-angeles-net-developers-group/</guid><description>&lt;p&gt;I will be attending &lt;a href="http://geekswithblogs.net/jberes/Default.aspx" title="Jason Beres' Blog"&gt;Jason Beres&amp;rsquo;&lt;/a&gt; &amp;ldquo;RIA with Silverlight and WCF&amp;rdquo; lecture on Saturday the 4th. Check-out the details here : &lt;a href="http://ladotnet.org/default.asp" title="Los Angeles .NET Developers Group"&gt;Los Angeles .NET Developers Group.&lt;/a&gt; Let me know If you are planning to be there. It will be a great opportunity to meet.&lt;/p&gt;</description></item><item><title>Job Opening - Windows GUI Developer</title><link>https://www.tewari.info/2009/03/09/job-opening-windows-gui-developer/</link><pubDate>Mon, 09 Mar 2009 21:04:30 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/2009/03/09/job-opening-windows-gui-developer/</guid><description>&lt;p&gt;We have a 3-4 month contract position open for a Windows GUI Developer in our group at &lt;a href="http://maps.google.com/maps?q=calabasas,+CA&amp;amp;oe=utf-8&amp;amp;rls=org.mozilla:en-US:official&amp;amp;client=firefox-a&amp;amp;um=1&amp;amp;ie=UTF-8&amp;amp;split=0&amp;amp;gl=us&amp;amp;ei=SYK1SbXHGM-jtgf9jaXqDA&amp;amp;sa=X&amp;amp;oi=geocode_result&amp;amp;resnum=1&amp;amp;ct=title" title="calabasas-map"&gt;Calabasas, California&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2+ years experience developing C++/C# Windows thick-client applications&lt;/li&gt;
&lt;li&gt;Expert in GUI development on Windows&lt;/li&gt;
&lt;li&gt;Expert in Object Oriented Analysis and Design (OOA/OOD)&lt;/li&gt;
&lt;li&gt;Deep understanding of client-server software development&lt;/li&gt;
&lt;li&gt;Experience in multithreading, and thread synchronization&lt;/li&gt;
&lt;li&gt;Excellent communication skills (written and verbal)&lt;/li&gt;
&lt;li&gt;Highly organized and detail oriented&lt;/li&gt;
&lt;li&gt;BSCS/BSEE or equivalent&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are interested, &lt;a href="https://www.tewari.info/contact-me/" title="Contact Ash Tewari"&gt;contact me&lt;/a&gt;. The position is available now.&lt;/p&gt;</description></item><item><title>Scrum Tools</title><link>https://www.tewari.info/2009/03/08/scrum-tools/</link><pubDate>Sun, 08 Mar 2009 19:41:10 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/2009/03/03/scrum-tools/</guid><description>&lt;p&gt;List of Scrum Tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.versionone.com/index.asp" title="VersionOne"&gt;http://www.versionone.com/index.asp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.targetprocess.com/" title="TargetProcess"&gt;http://www.targetprocess.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://studios.thoughtworks.com/mingle-agile-project-management" title="Mingle"&gt;http://studios.thoughtworks.com/mingle-agile-project-management&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bananascrum.com/" title="BananaScrum"&gt;http://www.bananascrum.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.danube.com/scrumworks" title="ScrumWorks"&gt;http://www.danube.com/scrumworks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rallydev.com/" title="Rally"&gt;http://www.rallydev.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.toolsforagile.com/" title="Silver Catalyst"&gt;http://www.toolsforagile.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other Lists:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://weblogs.asp.net/bsimser/archive/2006/10/21/Scrum-Tools-Roundup.aspx"&gt;Scrum Tools-Roundup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/dave_froslie/archive/2005/12/15/504251.aspx"&gt;dave_froslie&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>ReSharper vs CodeRush + Refactor Pro</title><link>https://www.tewari.info/2009/02/21/resharper-vs-coderush-refactor-pro/</link><pubDate>Sat, 21 Feb 2009 17:43:03 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/2009/02/21/resharper-vs-coderush-refactor-pro/</guid><description>&lt;p&gt;I have been playing with JetBrains &lt;a href="http://www.jetbrains.com/resharper/"&gt;ReSharper&lt;/a&gt;(version 4.1) and DevExpress &lt;a href="http://devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/"&gt;CodeRush + Refactor! Pro&lt;/a&gt; (version 3.2.2) lately. I wanted to decide on which one to go with. Here are some notes -&lt;/p&gt;
&lt;p&gt;R# = ReSharper
CodeRush = CodeRush + Refactor! Pro&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;R# seems to be better for refactoring, because it does not assume that I follow a rigid work flow when writing code. For example, I don&amp;rsquo;t always decide on the class hierarchies upfront. I do discover them as I write code. So, when I discover that I need to extract a base class from the class I am working on, I can do so with R#. I couldn&amp;rsquo;t find a way to do extract a base/super class with CodeRush.&lt;/li&gt;
&lt;li&gt;In R#, I can create an overloaded constructor using &amp;ldquo;Change Signature&amp;rdquo; refactoring (Ctrl+R, S). I couldn&amp;rsquo;t find a way to do this in CodeRush. CodeRush does allow me to create overloaded methods.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;However, comparisons that only focus on how many refactorings each tool can do are not very important to me. After all, it should be easy for the individual missing refactorings to be implemented in the subsequent releases of these tools. I want to know which one is a better investment in the long run. The investment is not just a couple of hundred dollars, it is going to be an investment of time too.&lt;/p&gt;</description></item><item><title>Using NHibernate With SQLite in DbUpdater</title><link>https://www.tewari.info/2008/09/09/using-nhibernate-with-sqlite-in-dbupdater/</link><pubDate>Wed, 10 Sep 2008 04:46:39 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/2008/09/09/using-nhibernate-with-sqlite-in-dbupdater/</guid><description>&lt;p&gt;&lt;a href="https://www.tewari.info/dbupdater/"&gt;DbUpdater&lt;/a&gt; (&lt;a href="http://sourceforge.net/projects/dbupdater/"&gt;version 1.3&lt;/a&gt; onwards) can be used with &lt;a href="http://www.sqlite.org/"&gt;sqlite3&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Review the files included in &lt;a href="https://www.tewari.info/downloads/DbUpdater-sqlite3.zip"&gt;DbUpdater-sqlite3.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;1. DbUpdater.exe.config must be modified. Note changes to the following keys - exe-file, exe-args, dialect, driver_class, connetion_string.
2. SchemaVersion.hbm.xml must be modified. The &amp;lsquo;class&amp;rsquo; attributes value for the &amp;lsquo;generator&amp;rsquo; of &amp;lsquo;id&amp;rsquo; must be changed to &amp;lsquo;identity&amp;rsquo;. No other changes are needed here.
3. \SqlScripts\schema-version-table.sql is modified. Note that the datatypes of all columns are changed to TEXT, except for SchemaChangeId, which is changed to integer primary key. integer primary key is used for auto-incremented columns in sqlite.
4. \SqlScripts\baseline.sql is modified. Note the use of current_timestamp function. The actual sql syntax in this file must conform to sqlite dialect.
5. All other .sql scripts in \SqlScripts directory are also modified to conform to sqlite dialect.&lt;/p&gt;</description></item><item><title>DbUpdater on SourceForge</title><link>https://www.tewari.info/2008/07/27/dbupdater-on-sourceforge/</link><pubDate>Sun, 27 Jul 2008 07:36:35 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/2008/07/27/dbupdater-on-sourceforge/</guid><description>&lt;p&gt;By popular demand, &lt;a href="https://www.tewari.info/dbupdater/" title="DbUpdater : Database Schema Version Control"&gt;DbUpdater&lt;/a&gt; is now up on the &lt;a href="https://sourceforge.net/projects/dbupdater" title="DbUpdater-on-SourceForge"&gt;sourceforge&lt;/a&gt;. Latest download (v1.2) is now available from &lt;a href="https://sourceforge.net/project/showfiles.php?group_id=232631" title="DbUpdater-Download"&gt;there&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Internship Position Available</title><link>https://www.tewari.info/2008/06/18/internship-position-available/</link><pubDate>Thu, 19 Jun 2008 05:39:17 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/2008/06/18/internship-position-available/</guid><description>&lt;p&gt;We have a position open for a 6 month internship in our group in Calabasas, CA. We do cutting edge Network Performance Analysis work. A candidate with C#/C++/C background on Windows/Linux is preferred. If you are interested, &lt;a href="https://www.tewari.info/contact-me/" title="Contact-AshTewari"&gt;contact me&lt;/a&gt;. The position is available now.&lt;/p&gt;</description></item><item><title>Dial Gauge is a ProgressBar</title><link>https://www.tewari.info/2008/06/10/dial-gauge-is-a-progressbar/</link><pubDate>Wed, 11 Jun 2008 06:49:43 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/2008/06/10/dial-gauge-is-a-progressbar/</guid><description>&lt;p&gt;I am not just being philosophical here. In &lt;a href="http://msdn.microsoft.com/en-us/netframework/aa663326.aspx" title="MSDN-WPF"&gt;WPF&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163497.aspx" title="Using Templates to Customize WPF Controls"&gt;ControlTemplates&lt;/a&gt; allow you to transform a control&amp;rsquo;s appearance. This is not the same as applying stylesheets. This is an entirely new level of customization. What you see in the screenshot below looks like a Dial but is actually a simple ProgressBar control wearing a &amp;ldquo;Dial&amp;rdquo; template. The Dial template was created using &lt;a href="http://www.microsoft.com/expression/products/Overview.aspx?key=blend" title="Microsoft-Expression-Blend"&gt;Microsoft Expression Blend&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;&lt;img alt="dial-is-a-progressbar.PNG" loading="lazy" src="https://www.tewari.info/images/dial-is-a-progressbar.PNG"&gt;&lt;/p&gt;
&lt;p&gt;Include the ControlTemplate as a Window.Resource and then assign it to ProgressBar element&amp;rsquo;s Template attribute :&lt;/p&gt;</description></item><item><title>PostSharp with SharpDevelop</title><link>https://www.tewari.info/2008/04/28/postsharp-with-sharpdevelop/</link><pubDate>Tue, 29 Apr 2008 05:04:43 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/2008/04/28/postsharp-with-sharpdevelop/</guid><description>&lt;p&gt;&lt;a href="http://sharpdevelop.net/OpenSource/SD/Default.aspx" title="SharpDevelop HomePage"&gt;SharpDevelop3.0&lt;/a&gt; uses &lt;a href="http://en.wikipedia.org/wiki/MSBuild" title="MSBuild on wikipedia"&gt;MSBuild&lt;/a&gt;. Including PostSharp in your build process is transparent if you are doing a global install using PostSharp installer. If you are doing a per-project installation using &amp;ldquo;Binary - No Installer&amp;rdquo;&lt;a href="http://www.postsharp.org/download/" title="postsharp download"&gt;download&lt;/a&gt;, you will need to import the PostSharp targets into your .csproj file -&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;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&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; True
&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;C:\code\PostSharp-1.0.8.316-Binary\
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For more details, read the install instructions included in the PostSharp &lt;a href="http://www.postsharp.org/download/" title="postsharp download"&gt;download&lt;/a&gt; and &lt;a href="http://www.postsharp.org/blog/2008/01/under-hood-of-msbuild-integration.html" title="under-hood-of-msbuild-integration"&gt;under-the-hood-of-msbuild-integration&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To use local PostSharp binaries (relative to your project) , modify your .csproj file as follows -&lt;/p&gt;</description></item><item><title>Using Custom Converter in XAML</title><link>https://www.tewari.info/2008/04/15/using-custom-converter-in-xaml/</link><pubDate>Wed, 16 Apr 2008 05:22:12 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/2008/04/15/using-custom-converter-in-xaml/</guid><description>&lt;p&gt;In my previous post : &lt;a href="https://www.tewari.info/2008/03/07/wpf-linq-to-sql-sample/" title="wpf-linq-to-sql-sample"&gt;WPF-LINQ To SQL Sample&lt;/a&gt;, I had to resort to modifying .dbml file to get the images stored as varbinary into the WPF ListView control. I had to change the Type of image fields to System.Byte[], instead of using System.Data.Linq.Binary. A better way to do this is to use a custom converter. WPF allows you to specify custom converter as part of the Binding in .xaml, like this -&lt;/p&gt;</description></item><item><title>WPF - LINQ to SQL Sample</title><link>https://www.tewari.info/2008/03/07/wpf-linq-to-sql-sample/</link><pubDate>Fri, 07 Mar 2008 07:15:35 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/2008/03/07/wpf-linq-to-sql-sample/</guid><description>&lt;p&gt;This exercise in binding a WPF ListView control with LINQ to SQL was a lot of fun ! The following image shows data from &lt;a href="http://www.codeplex.com/MSFTDBProdSamples" title="MSSQL Sample Databases"&gt;AdventureWorks&lt;/a&gt; sample database displayed in the ListView control. The end result is very admirable, even in this very basic demo. Feeling a complete sense of freedom is unavoidable when working with WPF.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Linq2SqlSample1.Png" loading="lazy" src="https://www.tewari.info/images/Linq2SqlSample1.Png"&gt;&lt;/p&gt;
&lt;p&gt;This sample demonstrates :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;LINQ to SQL mapping.&lt;/li&gt;
&lt;li&gt;WPF ListView Control DataBinding.&lt;/li&gt;
&lt;li&gt;Displaying images stored in database as varbinary in WPF control.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The sample code can be downloaded here : &lt;a href="https://www.tewari.info/downloads/Linq2SqlSample.zip" title="Linq2SqlSample.zip"&gt;WPF-LINQ to SQL Sample&lt;/a&gt;
License : &lt;a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/"&gt;Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.&lt;/a&gt; &lt;a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/"&gt;&lt;img alt="Creative Commons License" loading="lazy" src="http://i.creativecommons.org/l/by-nc-sa/3.0/us/88x31.png"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Customize log4net Output Path</title><link>https://www.tewari.info/2008/03/06/customize-log4net-output-path/</link><pubDate>Fri, 07 Mar 2008 00:56:55 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/2008/03/06/customize-log4net-output-path/</guid><description>&lt;p&gt;The default log4net output path is relative to the startup directory of your executable. To customize the output path, you can override the base Appender&amp;rsquo;s File property in your own Appender class. The following example describes how to route the log files relative to the temp folder :&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;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; public class MyOwnAppender : log4net.Appender.RollingFileAppender
&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; public override string File
&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; get
&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; return base.File;
&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&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; set
&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; if (Path.IsPathRooted(value))
&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; base.File = value;
&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; else
&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; base.File = Path.Combine(Path.GetTempPath(), value);
&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&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&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Your log4net config file must be modified so that log4net can locate and use your custom Appender. If MyOwnAppender is in MyNamespace and you have implemented it in MyLoggerLib.dll :&lt;/p&gt;</description></item><item><title>Career Advice</title><link>https://www.tewari.info/2008/02/29/career-advice/</link><pubDate>Sat, 01 Mar 2008 02:04:11 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/2008/02/29/career-advice/</guid><description>&lt;p&gt;The value of any advice is tied to the degree of its relevance to your particular situation and circumstances. Very specific advice, like legal and medical advice, is very expensive. It is very relevant to the individual&amp;rsquo;s situation and therefore quite valuable. The degree of relevance of inexpensive/free advice to your specific circumstances is usually very low. Inexpensive/free advice, as in sayings and quotes, but also in everyday personal and business communication, is very generic. The same message is usually perceived differently by different people. Especially when the entire message is very succinct and pithy. Various aspects of the message are accentuated differently as it is filtered through individual perception.&lt;/p&gt;</description></item><item><title>Database Schema Version Control Tool</title><link>https://www.tewari.info/2008/02/18/dbupdater-database-schema-version-control/</link><pubDate>Tue, 19 Feb 2008 03:05:52 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/2008/02/18/dbupdater-database-schema-version-control/</guid><description>&lt;p&gt;It is essential to treat database schema as source code and apply all the norms and best practices applicable to it. From what I hear and read, database schema version control is non-existent in too many projects.&lt;/p&gt;
&lt;p&gt;Various techniques to accomplish version control of database schemas have been discussed and published. Martin Fowler and Pramod Sadagale has written a comprehensive article on &lt;a href="http://martinfowler.com/articles/evodb.html"&gt;Evolutionary Database Design&lt;/a&gt;. It is a must-read for everyone involved with database development.&lt;/p&gt;</description></item><item><title>Printing Blog Posts</title><link>https://www.tewari.info/2008/01/24/printing-blog-posts/</link><pubDate>Fri, 25 Jan 2008 03:44:14 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/2008/01/24/printing-blog-posts/</guid><description>&lt;p&gt;I like printing blog posts and reading them later, but too many blogs don&amp;rsquo;t provide functionality to print well formatted posts. I end up printing sidebars, advertisements and other clutter along with the post, thanks to lousy print formatting in browsers. What a waste !&lt;/p&gt;
&lt;p&gt;It is actually quite easy to add a &amp;ldquo;Print This Post&amp;rdquo; button to a &lt;a href="http://wordpress.org" title="WordPress Site"&gt;WordPress&lt;/a&gt; blog. One great option (the one I use on this blog) is &lt;a href="http://lesterchan.net/wordpress/readme/wp-print.html" title="WP-Print download"&gt;WP-Print&lt;/a&gt;. Make sure you read Installation and Usage instructions. Brilliant job !&lt;/p&gt;</description></item><item><title>OpenSimSim 1.0-RC is out</title><link>https://www.tewari.info/2007/12/24/opensimsim-10-rc-is-out/</link><pubDate>Mon, 24 Dec 2007 17:04:31 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/2007/12/24/opensimsim-10-rc-is-out/</guid><description>&lt;p&gt;&lt;a href="http://opensimsim.sourceforge.net" title="OpenSimSim Website"&gt;OpenSimSim&lt;/a&gt; : Your Password Solution. Download 1.0 Release Candidate here : &lt;a href="https://sourceforge.net/project/showfiles.php?group_id=194886" title="OpenSimSim 1.0-RC"&gt;OpenSimSim 1.0-RC&lt;/a&gt;&lt;img alt="opensimsim-screenshot" loading="lazy" src="http://opensimsim.sourceforge.net/opensimsim-screenshot-1.png"&gt;&lt;/p&gt;</description></item><item><title>Leveraging XPATH Axes</title><link>https://www.tewari.info/2007/12/20/leveraging-xpath-axes/</link><pubDate>Fri, 21 Dec 2007 01:14:29 +0000</pubDate><guid isPermaLink="false">http://www.tewari.info/2007/12/20/leveraging-xpath-axes/</guid><description>&lt;p&gt;XPATH axes come in very handy when nodes need to be selected based on (attribute&amp;rsquo;s or child element&amp;rsquo;s) values that must match those of other nodes elsewhere in the xml tree. Consider the following log4net configuration file :&lt;/p&gt;
&lt;hr&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;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34;?&amp;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;&amp;lt;configuration&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;configSections&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;section name=&amp;#34;nhibernate&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; type=&amp;#34;System.Configuration.NameValueSectionHandler, System,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Version=2.0.0.0,Culture=neutral, PublicKeyToken=b77a5c561934e089&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;section name=&amp;#34;log4net&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; type=&amp;#34;log4net.Config.Log4NetConfigurationSectionHandler,log4net&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/configSections&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;nhibernate&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;add key=&amp;#34;hibernate.connection.provider&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; value=&amp;#34;NHibernate.Connection.DriverConnectionProvider&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;add key=&amp;#34;hibernate.connection.driver_class&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; value=&amp;#34;NHibernate.Driver.SqlClientDriver&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;add key=&amp;#34;hibernate.connection.connection_string&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; value=&amp;#34;Server=servername; Database=dbname;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; User=username; Password=secret;&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;add key=&amp;#34;hibernate.connection.isolation&amp;#34; value=&amp;#34;ReadCommitted&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;add key=&amp;#34;hibernate.dialect&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; value=&amp;#34;NHibernate.Dialect.MsSql2000Dialect&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/nhibernate&amp;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; &amp;lt;log4net&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;appender name=&amp;#34;NHibernateFileLog&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; type=&amp;#34;log4net.Appender.RollingFileAppender&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;file value=&amp;#34;Logs/nhibernate.txt&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;appendToFile value=&amp;#34;true&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;rollingStyle value=&amp;#34;Size&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;maxSizeRollBackups value=&amp;#34;10&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;maximumFileSize value=&amp;#34;100KB&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;staticLogFileName value=&amp;#34;true&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;layout type=&amp;#34;log4net.Layout.PatternLayout&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;conversionPattern
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; value=&amp;#34;%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/layout&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/appender&amp;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; &amp;lt;appender name=&amp;#34;GeneralLog&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; type=&amp;#34;log4net.Appender.RollingFileAppender&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;file value=&amp;#34;Logs/general.txt&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;appendToFile value=&amp;#34;true&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;maximumFileSize value=&amp;#34;100KB&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;rollingStyle value=&amp;#34;Size&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;maxSizeRollBackups value=&amp;#34;5&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;layout type=&amp;#34;log4net.Layout.PatternLayout&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;conversionPattern
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; value=&amp;#34;%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/layout&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/appender&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;appender name=&amp;#34;DataLog&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; type=&amp;#34;log4net.Appender.RollingFileAppender&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;file value=&amp;#34;Logs/data.txt&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;appendToFile value=&amp;#34;true&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;maximumFileSize value=&amp;#34;100KB&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;rollingStyle value=&amp;#34;Size&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;maxSizeRollBackups value=&amp;#34;5&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;layout type=&amp;#34;log4net.Layout.PatternLayout&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;conversionPattern
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; value=&amp;#34;%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/layout&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/appender&amp;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; &amp;lt;!-- levels: DEBUG, INFO, WARN, ERROR, FATAL --&amp;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; &amp;lt;root&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;level value=&amp;#34;DEBUG&amp;#34;/&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;appender-ref ref=&amp;#34;GeneralLog&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/root&amp;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; &amp;lt;logger name=&amp;#34;NHibernate&amp;#34; additivity=&amp;#34;false&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;level value=&amp;#34;DEBUG&amp;#34;/&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;appender-ref ref=&amp;#34;NHibernateFileLog&amp;#34;/&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/logger&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;logger name=&amp;#34;Pushable.Data&amp;#34; additivity=&amp;#34;false&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;level value=&amp;#34;DEBUG&amp;#34;/&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;appender-ref ref=&amp;#34;DataLog&amp;#34;/&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/logger&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/log4net&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/configuration&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;The &lt;appender&gt;s are referenced by &lt;logger&gt;s using &amp;lsquo;ref&amp;rsquo; attribute of their &amp;lsquo;appender-ref&amp;rsquo; child elements, using the same value as the &amp;rsquo;name&amp;rsquo; attribute of the &lt;appender&gt;. This type of linking is quite common in xml documents. Now, The first question is : How to list files that are referenced by &lt;logger&gt;s ?
In order to solve this problem you will need to reach the &lt;appender&gt;s that are referenced by each &lt;logger&gt; and then extract the &amp;lsquo;value&amp;rsquo; of their &lt;file&gt;s.&lt;/p&gt;</description></item></channel></rss>