<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-21616302</atom:id><lastBuildDate>Mon, 30 Mar 2026 15:41:08 +0000</lastBuildDate><title>Lavanya Deepak</title><description>Technology for Better Business and Higher Standards of Life</description><link>http://lavanyadeepak.blogspot.com/</link><managingEditor>noreply@blogger.com (Deepak Vasudevan)</managingEditor><generator>Blogger</generator><openSearch:totalResults>716</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-5656732552198977326</guid><pubDate>Mon, 30 Mar 2026 15:16:08 +0000</pubDate><atom:updated>2026-03-30T11:16:08.084-04:00</atom:updated><title>When Threads Silences Your Temple Bell</title><description>&lt;meta charset=&quot;UTF-8&quot; /&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot; /&gt;&lt;title&gt;When Threads Silences Your Temple Bell — A Dev&#39;s Workaround&lt;/title&gt;&lt;style&gt; @import url(&#39;https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,700;1,400&amp;family=Source+Code+Pro:wght@400;600&amp;family=Lora:wght@400;500&amp;display=swap&#39;); :root { --saffron: #e8650a; --deep-maroon: #2c0a0a; --warm-cream: #fdf6ec; --gold: #c9912a; --ink: #1a1008; --muted: #7a5c3a; --code-bg: #1e1208; --code-text: #f0c97a; --border: #d4a96a40; } * { margin: 0; padding: 0; box-sizing: border-box; } body { background: var(--warm-cream); color: var(--ink); font-family: &#39;Lora&#39;, georgia, serif; line-height: 1.8; } /* ── Hero ── */ .hero { background: var(--deep-maroon); padding: 80px 24px 60px; text-align: center; position: relative; overflow: hidden; } .hero::before { content: &quot;ॐ&quot;; position: absolute; font-size: 320px; color: rgba(255,255,255,0.03); top: 50%; left: 50%; transform: translate(-50%, -50%); pointer-events: none; font-family: serif; } .hero-tag { display: inline-block; background: var(--saffron); color: #fff; font-family: &#39;Source Code Pro&#39;, monospace; font-size: 11px; letter-spacing: 2px; text-transform: uppercase; padding: 5px 14px; border-radius: 2px; margin-bottom: 28px; } .hero h1 { font-family: &#39;Playfair Display&#39;, georgia, serif; font-size: clamp(28px, 5vw, 52px); color: var(--warm-cream); line-height: 1.2; max-width: 760px; margin: 0 auto 20px; } .hero h1 em { color: var(--gold); font-style: italic; } .hero-sub { color: #bca882; font-size: 17px; max-width: 540px; margin: 0 auto 36px; } .hero-meta { display: flex; justify-content: center; gap: 28px; font-family: &#39;Source Code Pro&#39;, monospace; font-size: 12px; color: #7a6050; letter-spacing: 1px; } .hero-meta span::before { content: &quot;— &quot;; } /* ── Layout ── */ .container { max-width: 740px; margin: 0 auto; padding: 60px 24px 80px; } /* ── Section headers ── */ h2 { font-family: &#39;Playfair Display&#39;, serif; font-size: 26px; color: var(--deep-maroon); margin: 52px 0 16px; padding-bottom: 10px; border-bottom: 2px solid var(--saffron); display: inline-block; } h3 { font-family: &#39;Playfair Display&#39;, serif; font-size: 19px; color: var(--deep-maroon); margin: 32px 0 10px; } p { margin-bottom: 20px; color: #2e1a0a; font-size: 17px; } /* ── Pull quote ── */ blockquote { border-left: 4px solid var(--saffron); background: #fff3e4; padding: 20px 24px; margin: 32px 0; border-radius: 0 6px 6px 0; } blockquote p { font-family: &#39;Playfair Display&#39;, serif; font-style: italic; font-size: 19px; color: var(--deep-maroon); margin: 0; } /* ── Code blocks ── */ .code-wrap { background: var(--code-bg); border-radius: 8px; overflow: hidden; margin: 28px 0; border: 1px solid #3a2010; } .code-label { background: #2e1408; color: var(--saffron); font-family: &#39;Source Code Pro&#39;, monospace; font-size: 11px; letter-spacing: 2px; text-transform: uppercase; padding: 8px 18px; border-bottom: 1px solid #3a2010; } pre { padding: 22px 20px; overflow-x: auto; font-family: &#39;Source Code Pro&#39;, monospace; font-size: 13.5px; line-height: 1.75; color: var(--code-text); } .kw { color: #e07b4f; } .fn { color: #89d4a8; } .str { color: #d4c27a; } .cm { color: #5a5040; font-style: italic; } .num { color: #9fcfe8; } /* ── Info boxes ── */ .info-box { background: #fff8ee; border: 1px solid var(--gold); border-radius: 6px; padding: 20px 24px; margin: 28px 0; } .info-box .label { font-family: &#39;Source Code Pro&#39;, monospace; font-size: 11px; letter-spacing: 2px; text-transform: uppercase; color: var(--saffron); margin-bottom: 8px; } /* ── Flow diagram ── */ .flow { display: flex; align-items: center; gap: 0; margin: 32px 0; flex-wrap: wrap; justify-content: center; } .flow-step { background: var(--deep-maroon); color: var(--warm-cream); padding: 14px 18px; border-radius: 6px; text-align: center; font-size: 13px; font-family: &#39;Source Code Pro&#39;, monospace; min-width: 130px; } .flow-step .icon { font-size: 22px; display: block; margin-bottom: 4px; } .flow-arrow { color: var(--saffron); font-size: 24px; padding: 0 8px; font-weight: bold; } /* ── Footer ── */ footer { background: var(--deep-maroon); color: #7a6050; text-align: center; padding: 32px 24px; font-family: &#39;Source Code Pro&#39;, monospace; font-size: 12px; letter-spacing: 1px; } footer a { color: var(--gold); text-decoration: none; } /* ── Divider ── */ .divider { text-align: center; color: var(--gold); font-size: 22px; margin: 40px 0 20px; letter-spacing: 12px; } ul { padding-left: 22px; margin-bottom: 20px; } li { margin-bottom: 8px; font-size: 17px; color: #2e1a0a; } .tag-row { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 40px; } .tag { background: #fff0dc; border: 1px solid #d4a96a50; color: var(--muted); font-family: &#39;Source Code Pro&#39;, monospace; font-size: 12px; padding: 4px 12px; border-radius: 20px; } &lt;/style&gt;&lt;!-- HERO --&gt;&lt;header class=&quot;hero&quot;&gt;   &lt;div class=&quot;hero-tag&quot;&gt;Dev Story · Text as Image&lt;/div&gt;    &lt;h1&gt;&lt;/h1&gt;    &lt;p class=&quot;hero-sub&quot;&gt;How a century-old daily ritual met a modern platform algorithm — and a Node.js script won.&lt;/p&gt;    &lt;div class=&quot;hero-meta&quot;&gt;&lt;span&gt;March 2025&lt;/span&gt; &lt;span&gt;Node.js · Canvas API&lt;/span&gt; &lt;span&gt;5 min read&lt;/span&gt; &lt;/div&gt; &lt;/header&gt;&lt;!-- BODY --&gt;&lt;main class=&quot;container&quot;&gt;   &lt;h2&gt;The Daily Ritual&lt;/h2&gt;      &lt;p&gt; Every morning, before sunrise, a panchangam — the sacred Hindu almanac — is compiled and shared across WhatsApp groups, Instagram pages, and social media feeds. It lists the tithi (lunar day), nakshatra (star), auspicious times, and the daily sankalpam that devout families recite before prayers. For thousands of families, this small block of text is as essential as morning coffee. &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Nagai Narasimhan&lt;/strong&gt;, who has been compiling and sharing this daily almanac for years, encountered a strange wall: &lt;em&gt;Threads&lt;/em&gt; kept silently suppressing his posts. Every other platform — Instagram, WhatsApp, Facebook — accepted the content without complaint. But Threads? Crickets. &lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;&amp;quot;The panchangam reaches people who depend on it daily. An algorithm shouldn&#39;t decide whether someone knows Rahu Kalam today.&amp;quot;&lt;/p&gt;   &lt;/blockquote&gt;    &lt;h2&gt;Why Threads Blocks It&lt;/h2&gt;      &lt;p&gt; Threads (and many other platforms) run text through natural language classifiers at upload time. These systems look for patterns: density of non-Latin Unicode characters, repetition, structured formatting, or blocks of religious text that may trigger overzealous spam filters. The panchangam, written in a Tamil-English mix with diacritical characters, structured time tables, and repeated formatting marks like &lt;code&gt;=====&lt;/code&gt; — ticks many of those boxes. &lt;/p&gt;    &lt;p&gt; The irony is sharp: this is not spam. It is a curated cultural document, hand-compiled daily. But the algorithm sees patterns, not intent. &lt;/p&gt;    &lt;div class=&quot;info-box&quot;&gt;     &lt;div class=&quot;label&quot;&gt;Root cause&lt;/div&gt;      &lt;p style=&quot;margin: 0px; font-size: 15px;&quot;&gt;Text classifiers on social platforms operate on Unicode character distributions and formatting heuristics. Dense Tamil script mixed with structured repeated symbols closely resembles patterns associated with bulk/spam posting — regardless of the actual content.&lt;/p&gt;   &lt;/div&gt;    &lt;h2&gt;The Fix: Render Text as an Image&lt;/h2&gt;      &lt;p&gt; The solution is elegantly simple. If the platform can&#39;t read your text, don&#39;t give it text. Render your content onto a canvas as pixels — to a human it is perfectly legible; to a text classifier, it is just a JPEG. &lt;/p&gt; &lt;!-- FLOW DIAGRAM --&gt;    &lt;div class=&quot;flow&quot;&gt;     &lt;div class=&quot;flow-step&quot;&gt;&lt;span class=&quot;icon&quot;&gt;&lt;/span&gt;panchangam.txt&lt;/div&gt;      &lt;div class=&quot;flow-arrow&quot;&gt;→&lt;/div&gt;      &lt;div class=&quot;flow-step&quot;&gt;&lt;span class=&quot;icon&quot;&gt;️&lt;/span&gt;Node Canvas&lt;/div&gt;      &lt;div class=&quot;flow-arrow&quot;&gt;→&lt;/div&gt;      &lt;div class=&quot;flow-step&quot;&gt;&lt;span class=&quot;icon&quot;&gt;&lt;/span&gt;panchangam.png&lt;/div&gt;      &lt;div class=&quot;flow-arrow&quot;&gt;→&lt;/div&gt;      &lt;div class=&quot;flow-step&quot;&gt;&lt;span class=&quot;icon&quot;&gt;✅&lt;/span&gt;Post to Threads&lt;/div&gt;   &lt;/div&gt;    &lt;h2&gt;The Code&lt;/h2&gt;      &lt;p&gt; The implementation uses the &lt;code&gt;canvas&lt;/code&gt; npm package, which provides a Node.js binding to the Cairo graphics library — the same engine behind most Linux desktop rendering. Here&#39;s the full script: &lt;/p&gt;    &lt;div class=&quot;code-wrap&quot;&gt;     &lt;div class=&quot;code-label&quot;&gt;texttoimage.js — Node.js&lt;/div&gt;      &lt;pre&gt;&lt;span class=&quot;cm&quot;&gt;// install with: npm install canvas&lt;/span&gt;
&lt;span class=&quot;kw&quot;&gt;const&lt;/span&gt; { createCanvas } = &lt;span class=&quot;fn&quot;&gt;require&lt;/span&gt;(&lt;span class=&quot;str&quot;&gt;&#39;canvas&#39;&lt;/span&gt;);
&lt;span class=&quot;kw&quot;&gt;const&lt;/span&gt; fs = &lt;span class=&quot;fn&quot;&gt;require&lt;/span&gt;(&lt;span class=&quot;str&quot;&gt;&#39;fs&#39;&lt;/span&gt;);
&lt;span class=&quot;kw&quot;&gt;const&lt;/span&gt; path = &lt;span class=&quot;fn&quot;&gt;require&lt;/span&gt;(&lt;span class=&quot;str&quot;&gt;&#39;path&#39;&lt;/span&gt;);

&lt;span class=&quot;cm&quot;&gt;// Read the panchangam text file&lt;/span&gt;
&lt;span class=&quot;kw&quot;&gt;const&lt;/span&gt; text = fs.&lt;span class=&quot;fn&quot;&gt;readFileSync&lt;/span&gt;(
  path.&lt;span class=&quot;fn&quot;&gt;join&lt;/span&gt;(__dirname, &lt;span class=&quot;str&quot;&gt;&#39;panchangam.txt&#39;&lt;/span&gt;), &lt;span class=&quot;str&quot;&gt;&#39;utf8&#39;&lt;/span&gt;
);

&lt;span class=&quot;kw&quot;&gt;const&lt;/span&gt; lines = text.&lt;span class=&quot;fn&quot;&gt;split&lt;/span&gt;(&lt;span class=&quot;str&quot;&gt;&#39;\n&#39;&lt;/span&gt;);
&lt;span class=&quot;kw&quot;&gt;const&lt;/span&gt; width = &lt;span class=&quot;num&quot;&gt;800&lt;/span&gt;;
&lt;span class=&quot;kw&quot;&gt;const&lt;/span&gt; lineHeight = &lt;span class=&quot;num&quot;&gt;30&lt;/span&gt;;
&lt;span class=&quot;cm&quot;&gt;// Dynamic height — grows with content&lt;/span&gt;
&lt;span class=&quot;kw&quot;&gt;const&lt;/span&gt; height = (lines.length * lineHeight) + &lt;span class=&quot;num&quot;&gt;40&lt;/span&gt;;

&lt;span class=&quot;kw&quot;&gt;const&lt;/span&gt; canvas = &lt;span class=&quot;fn&quot;&gt;createCanvas&lt;/span&gt;(width, height);
&lt;span class=&quot;kw&quot;&gt;const&lt;/span&gt; ctx = canvas.&lt;span class=&quot;fn&quot;&gt;getContext&lt;/span&gt;(&lt;span class=&quot;str&quot;&gt;&#39;2d&#39;&lt;/span&gt;);

&lt;span class=&quot;cm&quot;&gt;// White background&lt;/span&gt;
ctx.fillStyle = &lt;span class=&quot;str&quot;&gt;&#39;#fff&#39;&lt;/span&gt;;
ctx.&lt;span class=&quot;fn&quot;&gt;fillRect&lt;/span&gt;(&lt;span class=&quot;num&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;num&quot;&gt;0&lt;/span&gt;, width, height);

&lt;span class=&quot;cm&quot;&gt;// Text styling — use a Unicode-capable font&lt;/span&gt;
ctx.fillStyle = &lt;span class=&quot;str&quot;&gt;&#39;#000&#39;&lt;/span&gt;;
ctx.font = &lt;span class=&quot;str&quot;&gt;&#39;20px &amp;quot;Nirmala UI&amp;quot;, &amp;quot;Latha&amp;quot;, Arial, sans-serif&#39;&lt;/span&gt;;
ctx.textBaseline = &lt;span class=&quot;str&quot;&gt;&#39;top&#39;&lt;/span&gt;;

&lt;span class=&quot;cm&quot;&gt;// Draw each line&lt;/span&gt;
&lt;span class=&quot;kw&quot;&gt;let&lt;/span&gt; y = &lt;span class=&quot;num&quot;&gt;20&lt;/span&gt;;
&lt;span class=&quot;kw&quot;&gt;for&lt;/span&gt; (&lt;span class=&quot;kw&quot;&gt;const&lt;/span&gt; line &lt;span class=&quot;kw&quot;&gt;of&lt;/span&gt; lines) {
  ctx.&lt;span class=&quot;fn&quot;&gt;fillText&lt;/span&gt;(line, &lt;span class=&quot;num&quot;&gt;20&lt;/span&gt;, y);
  y += lineHeight;
}

&lt;span class=&quot;cm&quot;&gt;// Save as PNG&lt;/span&gt;
&lt;span class=&quot;kw&quot;&gt;const&lt;/span&gt; buffer = canvas.&lt;span class=&quot;fn&quot;&gt;toBuffer&lt;/span&gt;(&lt;span class=&quot;str&quot;&gt;&#39;image/png&#39;&lt;/span&gt;);
fs.&lt;span class=&quot;fn&quot;&gt;writeFileSync&lt;/span&gt;(&lt;span class=&quot;str&quot;&gt;&#39;panchangam.png&#39;&lt;/span&gt;, buffer);
console.&lt;span class=&quot;fn&quot;&gt;log&lt;/span&gt;(&lt;span class=&quot;str&quot;&gt;&#39;Image saved as panchangam.png&#39;&lt;/span&gt;);&lt;/pre&gt;
  &lt;/div&gt;

  &lt;h2&gt;How It Works — Line by Line&lt;/h2&gt;
 

  &lt;h3&gt;1. Reading the Source File&lt;/h3&gt;

  &lt;p&gt; The script reads &lt;code&gt;panchangam.txt&lt;/code&gt; synchronously and splits it by newline. Each line becomes one row on the canvas. This approach handles both Tamil and English text in the same document, because the rendering is purely graphical — no encoding translation needed. &lt;/p&gt;

  &lt;h3&gt;2. Dynamic Canvas Height&lt;/h3&gt;

  &lt;p&gt; Rather than hardcoding an image size, the height is calculated as &lt;code&gt;(number of lines × 30px) + 40px padding&lt;/code&gt;. This means the script adapts automatically — a short day with few auspicious timings and a long day with a detailed sankalpam both produce correctly-sized images. &lt;/p&gt;

  &lt;h3&gt;3. Font Selection Matters&lt;/h3&gt;

  &lt;p&gt; The font stack &lt;code&gt;&amp;quot;Nirmala UI&amp;quot;, &amp;quot;Latha&amp;quot;, Arial&lt;/code&gt; is deliberate. &lt;strong&gt;Nirmala UI&lt;/strong&gt; and &lt;strong&gt;Latha&lt;/strong&gt; are system fonts on Windows that have full coverage of Tamil Unicode. On Linux/Mac servers, you may need to install a Tamil font and register it explicitly with the canvas library: &lt;/p&gt;

  &lt;div class=&quot;code-wrap&quot;&gt;
    &lt;div class=&quot;code-label&quot;&gt;registering a custom Tamil font&lt;/div&gt;

    &lt;pre&gt;&lt;span class=&quot;kw&quot;&gt;const&lt;/span&gt; { registerFont } = &lt;span class=&quot;fn&quot;&gt;require&lt;/span&gt;(&lt;span class=&quot;str&quot;&gt;&#39;canvas&#39;&lt;/span&gt;);
&lt;span class=&quot;fn&quot;&gt;registerFont&lt;/span&gt;(&lt;span class=&quot;str&quot;&gt;&#39;./fonts/Latha.ttf&#39;&lt;/span&gt;, { family: &lt;span class=&quot;str&quot;&gt;&#39;Latha&#39;&lt;/span&gt; });
&lt;span class=&quot;cm&quot;&gt;// Call BEFORE createCanvas()&lt;/span&gt;&lt;/pre&gt;
  &lt;/div&gt;

  &lt;h3&gt;4. The PNG Output&lt;/h3&gt;

  &lt;p&gt;&lt;code&gt;canvas.toBuffer(&#39;image/png&#39;)&lt;/code&gt; produces a lossless PNG. This is important for text — JPEG compression creates artefacts around sharp character edges (ringing), making Tamil letterforms harder to read. PNG keeps every pixel crisp. &lt;/p&gt;

  &lt;div class=&quot;divider&quot;&gt;· · ·&lt;/div&gt;

  &lt;h2&gt;Broader Applications&lt;/h2&gt;
 

  &lt;p&gt; This pattern — text → canvas → image — has a long history and many legitimate uses: &lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Daily almanacs &amp;amp; religious content&lt;/strong&gt; in minority-script languages that trip spam filters&lt;/li&gt;

    &lt;li&gt;&lt;strong&gt;Watermarked quotations&lt;/strong&gt; — render text with a logo overlay that plain text cannot carry&lt;/li&gt;

    &lt;li&gt;&lt;strong&gt;Code screenshots&lt;/strong&gt; in the style of Carbon.sh, for sharing syntax-highlighted snippets visually&lt;/li&gt;

    &lt;li&gt;&lt;strong&gt;Infographic text cards&lt;/strong&gt; with custom backgrounds and branding, generated server-side at scale&lt;/li&gt;

    &lt;li&gt;&lt;strong&gt;OG images&lt;/strong&gt; (Open Graph) — auto-generated preview cards for blog posts using the same canvas approach&lt;/li&gt;
  &lt;/ul&gt;

  &lt;h2&gt;Accessibility Note&lt;/h2&gt;
 

  &lt;p&gt; One tradeoff of this approach is that the text is no longer machine-readable inside the image. Screen readers cannot parse it, and search engines won&#39;t index the content. Best practice when using this technique: always include the full text in the post caption or as alt text on the image. Threads and Instagram both support alt text on images — fill it in. The algorithm won&#39;t block it; the content lives as pixels. But your audience who needs accessibility support, and search crawlers, can still find the text. &lt;/p&gt;

  &lt;div class=&quot;info-box&quot;&gt;
    &lt;div class=&quot;label&quot;&gt;Quick checklist before posting&lt;/div&gt;

    &lt;ul style=&quot;margin: 0px; padding-left: 18px;&quot;&gt;
      &lt;li&gt;Image rendered with a Unicode-capable font&lt;/li&gt;

      &lt;li&gt;Saved as PNG (not JPEG) for sharp text&lt;/li&gt;

      &lt;li&gt;Alt text filled with the full original text&lt;/li&gt;

      &lt;li&gt;Caption includes key timings for quick scanning&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;

  &lt;h2&gt;Running It Daily — Automation&lt;/h2&gt;
 

  &lt;p&gt; The final step is making this effortless. On any Linux/Mac system, a single cron job handles it: &lt;/p&gt;

  &lt;div class=&quot;code-wrap&quot;&gt;
    &lt;div class=&quot;code-label&quot;&gt;crontab — run every morning at 5:30 AM&lt;/div&gt;

    &lt;pre&gt;&lt;span class=&quot;num&quot;&gt;30 5&lt;/span&gt; * * * cd /home/user/panchangam &amp;amp;&amp;amp; node texttoimage.js&lt;/pre&gt;
  &lt;/div&gt;

  &lt;p&gt; Pair this with a social media scheduling tool (Buffer, Meta Business Suite, or a custom Threads API integration) and the image posts itself — every day, without manual intervention, without tripping any classifier. &lt;/p&gt;

  &lt;div class=&quot;divider&quot;&gt;· · ·&lt;/div&gt;

  &lt;h2&gt;Closing Thought&lt;/h2&gt;
 

  &lt;p&gt; There is something quietly poetic about this solution. Sanskrit and Tamil have been encoded in stone, palm leaf, and paper for thousands of years. Today, a few lines of JavaScript encode them as pixels to slip past a neural network. The medium changes; the message endures. &lt;/p&gt;

  &lt;p&gt; If you maintain a community page that shares culturally specific content in non-Latin scripts and you&#39;ve hit similar walls — this technique works. It&#39;s three npm installs and fifty lines of code. The daily panchangam will reach its readers. &lt;/p&gt;

  &lt;div class=&quot;tag-row&quot;&gt;&lt;span class=&quot;tag&quot;&gt;nodejs&lt;/span&gt; &lt;span class=&quot;tag&quot;&gt;canvas&lt;/span&gt; &lt;span class=&quot;tag&quot;&gt;tamil&lt;/span&gt; &lt;span class=&quot;tag&quot;&gt;panchangam&lt;/span&gt; &lt;span class=&quot;tag&quot;&gt;text-to-image&lt;/span&gt; &lt;span class=&quot;tag&quot;&gt;social-media&lt;/span&gt; &lt;span class=&quot;tag&quot;&gt;unicode&lt;/span&gt; &lt;span class=&quot;tag&quot;&gt;threads&lt;/span&gt; &lt;/div&gt;
&lt;/main&gt;&lt;footer&gt;
  &lt;p&gt;Inspired by the daily work of &lt;strong&gt;Nagai Narasimhan&lt;/strong&gt;&amp;#160; ·&amp;#160; +91 99675 04474&lt;/p&gt;

  &lt;p style=&quot;font-size: 11px; margin-top: 8px;&quot;&gt;Code is MIT licensed · Share freely&lt;/p&gt;
&lt;/footer&gt;</description><link>http://lavanyadeepak.blogspot.com/2026/03/when-threads-silences-your-temple-bell_0523631550.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-3564543565317117761</guid><pubDate>Wed, 10 May 2023 12:00:00 +0000</pubDate><atom:updated>2023-05-20T02:29:01.321-04:00</atom:updated><title>[Imported from Blogdrive]Online Virus Scanners</title><description>&lt;div id=&quot;93516_kdub2&quot;&gt;   &lt;h3&gt;Online Virus Scanners&lt;/h3&gt; Virus Scanners are no longer difficult to install, tedious to configure. There are easy to use Online Virus Scanners, which offer to scan your hard disks whilst you surf the Internet.     &lt;br /&gt;    &lt;br /&gt; Check out the following:     &lt;br /&gt;    &lt;br /&gt;    &lt;div&gt;FSecure Virus Scanner: &lt;a href=&quot;http://support.f-secure.com/enu/home/ols.shtml&quot; rel=&quot;nofollow&quot;&gt;http://support.f-secure.com/enu/home/ols.shtml&lt;/a&gt;       &lt;br /&gt; Trend Micro Housecall: &lt;a href=&quot;http://housecall.antivirus.com/&quot; rel=&quot;nofollow&quot;&gt;http://housecall.antivirus.com/&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt; Keep your system protected against spreading viruses...       &lt;br /&gt;&lt;/div&gt; &lt;/div&gt;  &lt;br /&gt;&lt;script language=&quot;javascript&quot;&gt;&lt;!-- 
bd_ad_type = &#39;inline&#39;;
bd_ad_id = &#39;93516&#39;;
//--&gt;
&lt;/script&gt;&lt;script language=&quot;JavaScript&quot; type=&quot;text/javascript&quot; src=&quot;http://ads.blogdrive.com/static/blogdrive_user_inline.js&quot;&gt;&lt;/script&gt;  &lt;div class=&quot;posted&quot;&gt; Posted at 05:30 pm by &lt;a href=&quot;http://profiles.blogdrive.com/deepak&quot;&gt;Deepak Kumar Vasudevan&lt;/a&gt;     &lt;br /&gt;&lt;/div&gt;  &lt;div&gt;&lt;/div&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt; Original BlogDrive Post on Tuesday, May 10, 2005    </description><link>http://lavanyadeepak.blogspot.com/2023/05/imported-from-blogdriveonline-virus.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-3725942861099705498</guid><pubDate>Thu, 01 Sep 2022 12:32:00 +0000</pubDate><atom:updated>2023-05-20T02:35:36.401-04:00</atom:updated><title>Some basic levels in Perimeter Protection</title><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;A basic home office setup with the following components can definitely offer a decent level of protection against Phishing.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;A Chromium based Web Browser&lt;/li&gt;    &lt;li&gt;AVG Antivirus &lt;/li&gt;    &lt;li&gt;Cisco Umbrella OpenDNS&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;A sample URL picked up Phishtank to test the same.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Opera (Chromium based Browser) presents a recommendation not to visit the URL. (Override-able by the user)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;a href=&quot;https://drive.google.com/uc?id=1mvJFhNeRzPdxamTXHaLTXr_T0xSb_q8K&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;margin: 0px; display: inline; background-image: none;&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://drive.google.com/uc?id=1KbE5CSx5dmBSB8tRz3CHNSwfpiqHQcFu&quot; width=&quot;244&quot; height=&quot;132&quot; /&gt;&lt;/a&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;TCP level protection by Web Shield component of AVG Antivirus (not override-able by the user without confirmation using administrative privileges)&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://drive.google.com/uc?id=1qQR_Eh5zVJoOveXK7ytO58VPb3pkmp4P&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;margin: 0px; display: inline; background-image: none;&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://drive.google.com/uc?id=1xbvcaWDsTp4_CD4f86zMO1VxHGwjrj4J&quot; width=&quot;244&quot; height=&quot;170&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If a link escapes these two protection by any chance, Cisco Umbrella to have its sway (not override-able by the user without confirmation using administrative privileges)&lt;/p&gt; &lt;a href=&quot;https://drive.google.com/uc?id=1P6HtIdWB8v_ALm_4NM-OuxIQJMZymi83&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;margin: 0px; display: inline; background-image: none;&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://drive.google.com/uc?id=1lLRCMTSY5AUZlyFiv00G3nf28zOL0rWt&quot; width=&quot;244&quot; height=&quot;187&quot; /&gt;&lt;/a&gt;</description><link>http://lavanyadeepak.blogspot.com/2022/09/some-basic-levels-in-perimeter.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-4820120389548076486</guid><pubDate>Mon, 30 May 2022 06:37:00 +0000</pubDate><atom:updated>2023-05-20T02:56:29.549-04:00</atom:updated><title>JSON Standard for Resume</title><description>&lt;p&gt;&lt;font size=&quot;4&quot;&gt;Innovations can never be stifled. And one innovation and its implementation always seeds another. We have been having our profiles (aka) &lt;em&gt;Curriculum Vitae &lt;/em&gt;(aka) &lt;em&gt;Resume &lt;/em&gt;in notepad text files a few years ago and then moved onto Word and PDF format files for rich presentation.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;4&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;4&quot;&gt;Then came video profiles which were more commonly used by media personnel.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;4&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;4&quot;&gt;Having seen a diverse set of formats to present the profiles the new trend now is an open standards for resume based on JSON You can find more details about it from &lt;a href=&quot;https://jsonresume.org/&quot;&gt;here&lt;/a&gt; and can contribute your technical excellence and/or feedback &lt;a href=&quot;https://github.com/jsonresume&quot;&gt;here&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;4&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;4&quot;&gt;A simple .JSON resume as a public gist at &lt;a href=&quot;https://gist.github.com/&quot;&gt;https://gist.github.com/&lt;/a&gt; can be used as an input to the parser hosted by JSON resume which supports a lot of themes to publish as a profile website.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;4&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;4&quot;&gt;For example this blogger has their JSON resume &lt;a href=&quot;https://json-resume-service.vercel.app/lavanyadeepak&quot;&gt;here&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;4&quot;&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;</description><link>http://lavanyadeepak.blogspot.com/2022/05/json-standard-for-resume.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-1501204695389128583</guid><pubDate>Sat, 12 Feb 2022 09:15:00 +0000</pubDate><atom:updated>2022-02-12T04:15:49.251-05:00</atom:updated><title>Switching SQL Server between Multi-User and Single User mode with a simple T-SQL</title><description>&lt;p&gt;&lt;font size=&quot;2&quot;&gt;Recently had to manage database deployments where the SQL Server was hosted with a cloud solution provider of repute. The database was quite huge and hence during backup and restore had to switch the same to Single User mode. However the database was so huge that even after service refresh the right click properties on the database was not able to open because of resource contingency.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot;&gt;Hence I chose to have this switch done through simple T-SQL which I would like to share the same here for everyone’s benefit.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot;&gt;To Switch to Single User Mode:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt; use master    &lt;br /&gt; go    &lt;br /&gt; alter database [YourDatabaseName] set single_user with rollback immediate&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot;&gt;To Return Back to Normal/Multi-User Mode:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;use master   &lt;br /&gt;go    &lt;br /&gt;alter database [YourDatabaseName] set single_user with rollback immediate&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot;&gt;Additionally there is one more argument called WITH NOWAIT which could be used if needed&lt;/font&gt;&lt;/p&gt;</description><link>http://lavanyadeepak.blogspot.com/2022/02/switching-sql-server-between-multi-user.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-2650172192312954848</guid><pubDate>Sat, 23 Oct 2021 13:38:00 +0000</pubDate><atom:updated>2021-10-23T09:38:31.158-04:00</atom:updated><title>Installing Visual Studio Code on Linux</title><description>&lt;p&gt;&amp;nbsp;As part of the LinuxMint journey described &lt;a href=&quot;https://lavanyadeepak.blogspot.com/2021/10/a-gentle-journey-with-linux-mint.html&quot;&gt;here&lt;/a&gt;, as part of setting up the development environment I chose to get Visual Studio Code on the system.&lt;/p&gt;&lt;p&gt;There are two ways to install the same. One way is to grab the *.deb (Debian) package from Microsoft Visual Studio code website.&lt;/p&gt;&lt;p&gt;Alternatively you can use the following from the command prompt&lt;/p&gt;&lt;p&gt;wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor &amp;gt; packages.microsoft.gpg&lt;/p&gt;&lt;p&gt;sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/&lt;/p&gt;&lt;p&gt;sudo sh -c &#39;echo &quot;deb [arch=amd64,arm64,armhf signed-by=/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main&quot; &amp;gt; /etc/apt/sources.list.d/vscode.list&#39;&lt;/p&gt;&lt;p&gt;&amp;nbsp; rm -f packages.microsoft.gpg&lt;/p&gt;&lt;p&gt;&amp;nbsp; sudo apt install apt-transport-https&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;sudo apt update&lt;/p&gt;&lt;p&gt;&amp;nbsp; sudo apt install code # or code-insiders&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</description><link>http://lavanyadeepak.blogspot.com/2021/10/installing-visual-studio-code-on-linux.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-2162143474657663731</guid><pubDate>Sat, 23 Oct 2021 13:35:00 +0000</pubDate><atom:updated>2021-10-23T09:35:16.298-04:00</atom:updated><title>Installing Opera with Linux</title><description>&lt;p&gt;&amp;nbsp;As part of starting the LinuxMint journey, the first software I got it on the computer was &lt;a href=&quot;https://www.opera.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Opera&lt;/a&gt;. However installing Opera is not straight-forward because the package is not configured out of the box from the Linux distribution. There are two ways to install the same.&lt;/p&gt;&lt;p&gt;1) Download the *.deb (Debian) package from Opera and install the same.&lt;/p&gt;&lt;p&gt;Alternatively follow these instructions on command prompt for the same.&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; sudo sh -c &#39;echo &quot;deb http://deb.opera.com/opera/ stable non-free&quot; &amp;gt;&amp;gt; /etc/apt/sources.list.d/opera.list&#39;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; sudo sh -c &#39;wget -O - http://deb.opera.com/archive.key | apt-key add -&#39;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; sudo apt-get update&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; sudo apt-get install opera-stable&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</description><link>http://lavanyadeepak.blogspot.com/2021/10/installing-opera-with-linux.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-7506301945977092680</guid><pubDate>Sat, 23 Oct 2021 13:19:00 +0000</pubDate><atom:updated>2021-10-23T09:19:54.309-04:00</atom:updated><title>A Gentle Journey with Linux Mint</title><description>&lt;p&gt;&amp;nbsp;Had a few assignments to complete through Linux platform and hence chose LinuxMint this time. The code name for 20.x version is #Uma (a sweet Indian name)&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihPaJ7Pm-3WDC92aJUAuUB2EK8uKCoOGjom4nNSckc2HUQHtZ3DaSQty_TilC4sgwDKM0KNpFEzhVjnoaSRc2KTn00RcQKoNWaNsixTcsheCk3PjyKXWGfTfuR_V27rVSE8bCzkQ/s802/image_2021-10-23_184804.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;547&quot; data-original-width=&quot;802&quot; height=&quot;218&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihPaJ7Pm-3WDC92aJUAuUB2EK8uKCoOGjom4nNSckc2HUQHtZ3DaSQty_TilC4sgwDKM0KNpFEzhVjnoaSRc2KTn00RcQKoNWaNsixTcsheCk3PjyKXWGfTfuR_V27rVSE8bCzkQ/s320/image_2021-10-23_184804.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;If I recall my first date with Linux Mint it was exactly 10 years ago (2011) but due to a lot of personal turbulence the exploration got totally and abruptly stopped and forgotten. And interestingly and with divine bless there is a reunion now.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description><link>http://lavanyadeepak.blogspot.com/2021/10/a-gentle-journey-with-linux-mint.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihPaJ7Pm-3WDC92aJUAuUB2EK8uKCoOGjom4nNSckc2HUQHtZ3DaSQty_TilC4sgwDKM0KNpFEzhVjnoaSRc2KTn00RcQKoNWaNsixTcsheCk3PjyKXWGfTfuR_V27rVSE8bCzkQ/s72-c/image_2021-10-23_184804.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-3046379899951308084</guid><pubDate>Mon, 16 Aug 2021 00:19:00 +0000</pubDate><atom:updated>2023-05-20T02:25:47.713-04:00</atom:updated><title>Overcoming Windows Block limitation of Downloaded Files</title><description>&lt;p&gt;The biggest trouble at times with Microsoft Windows is that after downloading a file it blocks you from opening the same citing unavailability of its listing in Microsoft Store Screenshot below&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://drive.google.com/uc?id=19_c7QQ7xnD4Jr61RJK48H2nZ6FOMm6sU&quot;&gt;&lt;img title=&quot;ms&quot; style=&quot;display: inline; background-image: none;&quot; border=&quot;0&quot; alt=&quot;ms&quot; src=&quot;https://drive.google.com/uc?id=1wA0Zajd9dhH4h2bir96J3bReEVO-V9X6&quot; width=&quot;244&quot; height=&quot;234&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Fortunately there is an easy way to address this situation. Locate the file where you have downloaded the same and navigate to properties. There will be a new checkbox called Unblock. Just select the same and click Apply/OK. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This tip is to overcome the limitation imposed by Microsoft Windows. However to make sure your computer is not inadvertently exposed to security risks, make sure there is a full fledged antivirus running in realtime to monitor all file activities.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;a href=&quot;https://drive.google.com/uc?id=1hDLX6R2khRJhCH-mZq2ApvYMcdwNmqUM&quot;&gt;&lt;img title=&quot;ms1&quot; style=&quot;display: inline; background-image: none;&quot; border=&quot;0&quot; alt=&quot;ms1&quot; src=&quot;https://drive.google.com/uc?id=18LV0dNwS88DPgj1KSJJo3soGeeoKllCN&quot; width=&quot;180&quot; height=&quot;244&quot; /&gt;&lt;/a&gt;</description><link>http://lavanyadeepak.blogspot.com/2021/08/overcoming-windows-block-limitation-of.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-6396065574676256686</guid><pubDate>Sun, 21 Mar 2021 13:19:00 +0000</pubDate><atom:updated>2021-03-21T09:19:37.478-04:00</atom:updated><title>Soft way to peek into the other branch in GIT</title><description>&lt;p&gt;&amp;nbsp;At times we may need to have a softer way to peek into the other branch of GIT particularly when trying to resolve Merge Conflicts with Azure DevOps because the latter does not have a friendly GUI for the same in its web-based Pull Request.&lt;/p&gt;&lt;p&gt;The following quick GIT commandline would help in here handy:&lt;/p&gt;&lt;p&gt;git pull --no-rebase origin&amp;nbsp;&amp;nbsp; &amp;lt;desired branch name to pull from&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description><link>http://lavanyadeepak.blogspot.com/2021/03/soft-way-to-peek-into-other-branch-in.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-7437328155262995668</guid><pubDate>Tue, 29 May 2018 14:09:00 +0000</pubDate><atom:updated>2018-05-29T10:09:28.965-04:00</atom:updated><title>Bringing Comfort to Blogging</title><description>&lt;p&gt;Next time you are choosing to blog WYSIWYG at the comfort of offline tool from your home, the disappearance of Windows Live Writer and similar set of tools should not disappoint you.&lt;/p&gt;&lt;p&gt;I recently came across a Windows Live Writer look alike called Open Live Writer which is similar in power and potential like Windows Live Writer.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmFRTlqy5D2rXFTMMwlUx6b0IFS8O0Sro31oLk-TcXxKhIQS0eLHUdAWSeCXIxVtSvuPvP0aFRMIJo4EgCrXMBJfiMI9LYqqeOKNnvP36FYnH-s_kPEC-gfkBeXN3wBb_fdlSqMg/s1600-h/olw%255B2%255D&quot;&gt;&lt;img width=&quot;244&quot; height=&quot;174&quot; title=&quot;olw&quot; style=&quot;display: inline; background-image: none;&quot; alt=&quot;olw&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlKdMIUVov8mA4b9HAu-2ba5zHJkaeE-XGK-GBfSHlInb4lbSPjpJBXABQ9tvqR37v2QeFsTjZZW_uDm936iGIL1drwU2e8eF_ERmL72pSFuSnxN2NgDQhKCD85jYixhC7xVZn2A/?imgmax=800&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://lavanyadeepak.blogspot.com/2018/05/bringing-comfort-to-blogging.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlKdMIUVov8mA4b9HAu-2ba5zHJkaeE-XGK-GBfSHlInb4lbSPjpJBXABQ9tvqR37v2QeFsTjZZW_uDm936iGIL1drwU2e8eF_ERmL72pSFuSnxN2NgDQhKCD85jYixhC7xVZn2A/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-1634422670397865145</guid><pubDate>Wed, 14 Jan 2015 19:33:00 +0000</pubDate><atom:updated>2015-01-14T14:33:09.410-05:00</atom:updated><title>Workaround for Wi-Fi bug in Samsung</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
If you have used Samsung smart phones the most notably irritant that you might have encountered is connection to a WiFi network is just impossible when the Wi-Fi secure key (aka password) is less than eight characters. Not sure how this bug has been prevailing in so many different Samsung devices and has gone unnoticed by their design/developers team.&lt;br /&gt;
&lt;br /&gt;
Fortunately there is a workaround for this bug. There is a &lt;a href=&quot;https://play.google.com/store/apps/details?id=org.kman.WifiManager&amp;amp;hl=en&quot;&gt;WiFi Manager app&lt;/a&gt; from Google PlayStore which helps to address it. It is actually a replacement for Wi-Fi component for Samsung. It does not require the device to be routed. Just go ahead and install this app and the abovesaid problem is sorted out for sure.&lt;/div&gt;
</description><link>http://lavanyadeepak.blogspot.com/2015/01/workaround-for-wi-fi-bug-in-samsung.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-343227310329433269</guid><pubDate>Wed, 04 Sep 2013 01:13:00 +0000</pubDate><atom:updated>2023-05-20T02:23:29.259-04:00</atom:updated><title>Free, Easy and Elegant MP4 Joiners ...</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Most of our handy smart phones now have the ability to record videos in MP4 high resolution formats. And in a significant number of occasions we would be having multiple MP4 files on a single occasion and in need to merge them as a single video before publishing and/or sharing with others.&lt;br /&gt;
&lt;br /&gt;
I have a recommendation of following tools which help in this direction:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Cross-Platform Joiner:&amp;nbsp;&lt;a href=&quot;http://www.mp4joiner.org/en/&quot;&gt;http://www.mp4joiner.org/en/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GPAC package on Ubuntu: To get this run the command sudo apt-get install gpac; And then to combine Mp4 files the commandline is MP4Box -cat 1.mp4 -cat 2.mp4 -new joined.mp4&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Trust these would be helpful to share your MP4 memories with others.&lt;/div&gt;
&lt;/div&gt;
</description><link>http://lavanyadeepak.blogspot.com/2013/09/free-easy-and-elegant-mp4-joiners.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-2970954379574085728</guid><pubDate>Wed, 28 Aug 2013 02:10:00 +0000</pubDate><atom:updated>2023-05-20T02:17:45.313-04:00</atom:updated><title>echo123 :: The hidden talk assistant in Skype</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
For those using Skype and when in need to troubleshoot audio call setting there is a good companion called &#39;Echo123&#39; Currently it supports audio call only. You can talk to it and it will read back your responses thus helping out troubleshoot your audio connections.&lt;br /&gt;
&lt;br /&gt;
With Skype 4.2 for Linux it even gives technical information regarding the call as illustrated below:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxMXos6Iz6wTJfIp-_9Jwq0ehoU_Zat7OmMTKMo8oal9-Pfx_FsOOu3Vc7uc_LHIU-_0wJ-7ewvMlY2nOvFXaydn1N7QibfCMkPgNsZ9QWmcYEUtFL2VoTP8X0esLHLKgU6GvOzg/s1600/Echo123.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;179&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxMXos6Iz6wTJfIp-_9Jwq0ehoU_Zat7OmMTKMo8oal9-Pfx_FsOOu3Vc7uc_LHIU-_0wJ-7ewvMlY2nOvFXaydn1N7QibfCMkPgNsZ9QWmcYEUtFL2VoTP8X0esLHLKgU6GvOzg/s320/Echo123.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://lavanyadeepak.blogspot.com/2013/08/echo123-hidden-talk-assistant-in-skype.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxMXos6Iz6wTJfIp-_9Jwq0ehoU_Zat7OmMTKMo8oal9-Pfx_FsOOu3Vc7uc_LHIU-_0wJ-7ewvMlY2nOvFXaydn1N7QibfCMkPgNsZ9QWmcYEUtFL2VoTP8X0esLHLKgU6GvOzg/s72-c/Echo123.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-4584675908529854670</guid><pubDate>Fri, 05 Apr 2013 17:51:00 +0000</pubDate><atom:updated>2023-05-20T02:23:34.173-04:00</atom:updated><title>Whois Windows Tool</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I was trying to learn a bit of Sockets programming with C# and as a test tool, I have made a small opensource product called &#39;Whois Helper&#39;. Check out the screenshot of the same below:&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7DabBMBQPZX2wSZhCpt1SFF96xlwEgnbmxn8axOt1mgPTzzT1YoHunuHxH1iGq0wgoHAsHwXwtJgCu59HSpI7GDDsKcexxWNn0igCGYLwioQbmlAiAOXUFVe23wk0dUuhTduYlw/s1600/Whois.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7DabBMBQPZX2wSZhCpt1SFF96xlwEgnbmxn8axOt1mgPTzzT1YoHunuHxH1iGq0wgoHAsHwXwtJgCu59HSpI7GDDsKcexxWNn0igCGYLwioQbmlAiAOXUFVe23wk0dUuhTduYlw/s320/Whois.PNG&quot; width=&quot;307&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
You can also grab a source of the same from Codeplex &lt;a href=&quot;https://whoistool.codeplex.com/&quot;&gt;here&lt;/a&gt;. The tool has the following features in its first version:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Built-in static database (embedded resource) of Whois servers for all TLDs in the world.&lt;/li&gt;
&lt;li&gt;An option for the user to override the built-in server and query the custom server.&lt;/li&gt;
&lt;li&gt;Optionally copy the output (automatically) to clipboard.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Feel free to send me your comments, suggestions and criticisms on the same.&lt;/div&gt;
&lt;/div&gt;
</description><link>http://lavanyadeepak.blogspot.com/2013/04/whois-windows-tool.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7DabBMBQPZX2wSZhCpt1SFF96xlwEgnbmxn8axOt1mgPTzzT1YoHunuHxH1iGq0wgoHAsHwXwtJgCu59HSpI7GDDsKcexxWNn0igCGYLwioQbmlAiAOXUFVe23wk0dUuhTduYlw/s72-c/Whois.PNG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-155747471149072520</guid><pubDate>Fri, 05 Apr 2013 01:10:00 +0000</pubDate><atom:updated>2023-05-20T02:18:24.367-04:00</atom:updated><title>OpenDNS Utilities</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
OpenDNS is an amazing cloud based computing infrastructure where in you can configure your internet enabled devices to use that service and through the best engineered anycast DNS service by the team, you can ensure your living room is safe and secure from malware and unwanted websites.&lt;br /&gt;
&lt;br /&gt;
I have made two small opensource utilities and have made the first draft of the same available through Codeplex (under Microsoft Public License). They are the following:&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: white; color: #444444; font-family: Calibri; font-size: 16px; line-height: 22px;&quot;&gt;Codeplex Share URL:&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://opendnsutils.codeplex.com/&quot;&gt;https://opendnsutils.codeplex.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: white; color: #444444; font-family: Calibri; font-size: 16px; line-height: 22px;&quot;&gt;autoupdate.php. You just need to host it on your WAMP or anywhere and it would pick your address and update to Dns-o-Matic (and hence OpenDNS). This comes in handy similar to OpenDNS updater.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: white; color: #444444; font-family: Calibri; font-size: 16px; line-height: 22px;&quot;&gt;When configuring OpenDNS on corporate laptops, it is a common problem that when we connect to our corporate networks, DNS configuration fails and we have to manually rollback the settings. Again we have to repeat the step in reverse when we are back at home. I have made a simple Windows Utility (using .NET framework 4.5) which manages this. If the system uses custom DNS servers, I am trying to preserve them too. It just uses a simple XML file to save the preferences and OpenDNS IPs:&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRfly2gDha_7WrI8rfF5bsgaCWjCJ3znjCn1diFE0H1dhnuRUkj1NGO5DIY0-DvjSm6Ffe-LdqRPRmhFWZpIESefcDZML3P4gcbTw-wFaS5X7EpojmNd-Jninl6z4gwTu33c5TqQ/s1600/data_xml.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;170&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRfly2gDha_7WrI8rfF5bsgaCWjCJ3znjCn1diFE0H1dhnuRUkj1NGO5DIY0-DvjSm6Ffe-LdqRPRmhFWZpIESefcDZML3P4gcbTw-wFaS5X7EpojmNd-Jninl6z4gwTu33c5TqQ/s320/data_xml.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
Feel free to use the same and share them with your friends, send me your comments, criticisms and healthy suggestions for improving the same.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;b&gt;Related Topics:&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.opendns.com/2011/07/22/five-questions-with-deepak-kumar-vasudevan/&quot;&gt;Five questions with Deepak Kumar Vasudevan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lavanyadeepak.blogspot.com/2011/05/cloud-based-cross-platform-ip-address.html&quot;&gt;Cross platform cloud based IP Updater&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description><link>http://lavanyadeepak.blogspot.com/2013/04/opendns-utilities.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRfly2gDha_7WrI8rfF5bsgaCWjCJ3znjCn1diFE0H1dhnuRUkj1NGO5DIY0-DvjSm6Ffe-LdqRPRmhFWZpIESefcDZML3P4gcbTw-wFaS5X7EpojmNd-Jninl6z4gwTu33c5TqQ/s72-c/data_xml.PNG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-5268727630159023348</guid><pubDate>Sat, 16 Mar 2013 18:14:00 +0000</pubDate><atom:updated>2023-05-20T02:21:27.697-04:00</atom:updated><title>Contacts import utility from Web2Project to Addressbook</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I have been using &lt;a href=&quot;http://web2project.net/&quot;&gt;Web2Project&lt;/a&gt; for planning my personal and professional tasks for a few years now. Now I have bifurcated the tools into the following:&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://www.projectpier.org/&quot;&gt;Project Pier&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://code.google.com/p/php-addressbook/&quot;&gt;Address Book&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
The only issue I had was to import my addressbook from Web2Project to AB. PP is a different animal. It does not serve as a comprehensive candidate for addressbook and hence I needed this bifurcation.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I wrote up a following simple script to import the contacts to AB. The pre-requisite for this script is to hop on to &lt;a href=&quot;http://www.phpmyadmin.net/home_page/index.php&quot;&gt;PhpMyAdmin&lt;/a&gt;, export the contacts as a PHP array and then &amp;nbsp;modify the path in our import script to whatever you downloaded from PhpMyAdmin.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Our import script would explode the entries as SQL scripts into the browser window. Copy them and execute into PhpMyAdmin AB database to have the contacts imported.&lt;br /&gt;
&lt;br /&gt;
Script URL:&amp;nbsp;&lt;a href=&quot;https://gist.github.com/lavanyadeepak/5177500#file-import-php&quot;&gt;https://gist.github.com/lavanyadeepak/5177500#file-import-php&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;script src=&quot;https://gist.github.com/lavanyadeepak/5177500.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><link>http://lavanyadeepak.blogspot.com/2013/03/contacts-import-utility-from.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-7840632453142135860</guid><pubDate>Sat, 23 Feb 2013 16:02:00 +0000</pubDate><atom:updated>2023-05-20T02:23:10.330-04:00</atom:updated><title>A quick PHP script to fax documents</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
For me, I had to send my weekly time sheets to the employer along with a word document highlighting the details of the work sent. Instead of being another element in the crowd to use one of those routine methods of visiting a fax machine in the front office, I just thought I would innovate on a quick browser based utility which would pick up the documents, format them neatly, send one copy to the employer and archive one copy with us for our reference.&lt;br /&gt;
&lt;br /&gt;
I am sharing one stripped down baseline version of this utility here (code shared through Github Gist).&lt;br /&gt;
&lt;br /&gt;
You can run using any PHP version (5.2 or above). You need Interfax username and password for the same.&lt;br /&gt;
&lt;br /&gt;
&lt;div align=&quot;center&quot;&gt;
&lt;script src=&quot;https://gist.github.com/lavanyadeepak/5020158.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://lavanyadeepak.blogspot.com/2013/02/a-quick-php-script-to-fax-documents.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-6876424653783704128</guid><pubDate>Wed, 24 Oct 2012 22:50:00 +0000</pubDate><atom:updated>2023-05-20T02:22:51.480-04:00</atom:updated><title>A humble article on .NET Encryption</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Several years back, I had written a small review on a .NET Encryption library called &#39;&lt;a href=&quot;http://lavanyadeepak.blogspot.com/2007/01/elegant-encryption-routine.html&quot;&gt;XCrypt&lt;/a&gt;&#39;. I have also been recommending this library to most of them in discussion forums since it has an elegant presentation and wrapper on the cryptography layer of .NET base class library. Unfortunately, the original article referred in the article has an update date of 2003 which was turning back several users. Today I saw another writer publishing an article about two additional encryption algorithms with their implementation in C#. It just struck me, why shouldn&#39;t I take a proactive stand in putting the new kid into XCrypt and giving it a new lease of life.&lt;br /&gt;
&lt;br /&gt;
My first humble initiative is &lt;a href=&quot;http://www.codeproject.com/Messages/4409016/Article-Adoption.aspx&quot;&gt;here&lt;/a&gt;&amp;nbsp;(a query to CodeProject webmaster) and as per their directions, I have written the new XCrypt article as an alternative proposal to the classic legendary XCrypt. I am glad to have done a small service to the legendary encryption library of .NET.&lt;br /&gt;
&lt;br /&gt;
The URL for the new article is available &lt;a href=&quot;http://www.codeproject.com/Articles/483490/XCrypt-encryption-decryption-class-wrapper&quot;&gt;here&lt;/a&gt;. Incidentally the accompanying test application in the application turns to be one of my maiden venture in Windows forms programming. Hence do feel to share your observations, bug reports, healthy comments and constructive criticisms towards the same. Due to pressures of time, you may not be elected for a personalized response but rest assured that due diligence attention would be given your suggestion with an appropriate feasibility analysis towards incorporating the points in your note.&lt;/div&gt;
</description><link>http://lavanyadeepak.blogspot.com/2012/10/a-humble-article-on-net-encryption.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-6517065112891560640</guid><pubDate>Tue, 16 Oct 2012 11:38:00 +0000</pubDate><atom:updated>2023-05-20T02:18:13.820-04:00</atom:updated><title>Umbrella :: Another innovative venture from OpenDNS</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
OpenDNS, the pioneers in protective family shield and&amp;nbsp;undeniably uncrowned leaders in parental controls and fail-safe fault-free non-authoritative name resolution (DNS) services are ushering in with another innovative service &#39;Umbrella&#39;.&lt;br /&gt;
&lt;br /&gt;
Stay update for the release notes on Umbrella by subscribing at&amp;nbsp;&lt;a href=&quot;http://www.umbrella.com/&quot;&gt;http://www.umbrella.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
If you are not using OpenDNS yet,&amp;nbsp;it is almost akin in writing your personally&amp;nbsp;identifiable&amp;nbsp;information in the notice-board of your community complex. With the amount of &#39;bad things&#39; that are spread across the Internet, OpenDNS is a must for any computer -- business or personnel. You ought not go online without fortifying its perimeters with OpenDNS.&lt;br /&gt;
&lt;br /&gt;
We have also emphasized this thought as part of &#39;&lt;a href=&quot;http://lavanyadeepak.blogspot.com/2012/10/best-practices-of-local-data.html&quot;&gt;Best Practices for Local Data Organization&lt;/a&gt;&#39;.&lt;/div&gt;
</description><link>http://lavanyadeepak.blogspot.com/2012/10/umbrella-another-innovative-venture.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-2194479925633310863</guid><pubDate>Sat, 13 Oct 2012 21:50:00 +0000</pubDate><atom:updated>2023-05-20T02:22:06.161-04:00</atom:updated><title>Best Practices of Local Data Organization</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I was looking at a discussion forum where some one had asked about recovery of data before the hard disk is upgraded. I just thought I would share a related thought on best practices in local (private) computing practices. This can also be applied to our cloud drives like Google, Skydrive and Dropbox.&lt;br /&gt;
&lt;br /&gt;
Once upon a time people used to partition hard drives into C:/ D:/ E:/ and F:/. Optionally because 32 bit computers may not be able to comfortably address larger volumes. Nowadays when you buy a computer from Bestbuy or other stores, it just comes pre-loaded with a default operating system (and I admit it would also be a defunct* operating system) along with a single drive.&lt;br /&gt;
&lt;br /&gt;
*Missing security software, reduced functionality desktop office software.&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;/ol&gt;
I would suggest instead of scattering our data all across the computer it is better to follow unix practice in defining our custom root folder (say by username) and narrow down through the same. This way, the separation between system and our application data is distinct. This also helps achieve flexible and seamless backup besides the best data recovery in case of disasters.&lt;br /&gt;
&lt;br /&gt;
An example from my local computer would be:
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJeJM7ilW7b5_HCZZZUY4TviWeihWw8qu9JjMcIKoWVlC9Xw6TmPDlp4phS_DxLcUm-WmBs2AtSB7ITxkfRYTIzjacOEXTRLQPVr9nomrPyzyptuOIOLxUDidIRCJ12V9XxVCxLA/s1600/folder.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJeJM7ilW7b5_HCZZZUY4TviWeihWw8qu9JjMcIKoWVlC9Xw6TmPDlp4phS_DxLcUm-WmBs2AtSB7ITxkfRYTIzjacOEXTRLQPVr9nomrPyzyptuOIOLxUDidIRCJ12V9XxVCxLA/s1600/folder.PNG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Besides this the following software must be installed before the computer used for anything including connecting online, playing CD/DVD or any communication of the hardware to the external world.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Install your preferred Anti-Security software in case of Windows. For Ubuntu and Linux users fortify it by appropriately disabling the daemons.&lt;/li&gt;
&lt;li&gt;Scotty from WinPatrol (&lt;a href=&quot;http://www.winpatrol.com/&quot;&gt;http://www.winpatrol.com/&lt;/a&gt;) is the most recommended tool to ensure no application installs or hijacks your computer settings without your knowledge.&lt;/li&gt;
&lt;li&gt;Configure your computer&#39;s DNS to route through &lt;a href=&quot;http://www.opendns.com/&quot;&gt;OpenDNS&lt;/a&gt;. This ensure safe surfing from malware websites. You may like to refer my previous post on &lt;a href=&quot;http://deepakvasudevan.blogspot.com/2011/09/safer-internet-categories-to-quarantine.html&quot;&gt;parental control configuration&lt;/a&gt;. Following is a a sample block page on my computer for a bad website suggested in Google Search results. I would also suggest a periodic review of your OpenDNS account to ensure safe surfing from your home-office network.&lt;br /&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjudzEJaSA6VYwSSNxUAtRHIi_6wwvOFZmOYVC1KuarS6qme-2t-qinh4dYAcd4k8DC3IjjzZzicETf_RCx56EvNZYAGi0fCIpm2avdOGxeFB1qxpLU39bREcSIQV4dkKATESO9EA/s1600/sampleblock.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;154&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjudzEJaSA6VYwSSNxUAtRHIi_6wwvOFZmOYVC1KuarS6qme-2t-qinh4dYAcd4k8DC3IjjzZzicETf_RCx56EvNZYAGi0fCIpm2avdOGxeFB1qxpLU39bREcSIQV4dkKATESO9EA/s320/sampleblock.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description><link>http://lavanyadeepak.blogspot.com/2012/10/best-practices-of-local-data.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJeJM7ilW7b5_HCZZZUY4TviWeihWw8qu9JjMcIKoWVlC9Xw6TmPDlp4phS_DxLcUm-WmBs2AtSB7ITxkfRYTIzjacOEXTRLQPVr9nomrPyzyptuOIOLxUDidIRCJ12V9XxVCxLA/s72-c/folder.PNG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-1784027374458674801</guid><pubDate>Sat, 06 Oct 2012 12:39:00 +0000</pubDate><atom:updated>2023-05-20T02:17:05.080-04:00</atom:updated><title>A Fond Recall of C Program</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I was surfing at something yesterday and had a fond recall of C Programming back in 1998 college days. Just wrote a small &lt;i style=&quot;font-weight: bold;&quot;&gt;Hello World &lt;/i&gt;online, compiled it and am sharing the same as a fond memory through Gist of GitHub.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;font-family: &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, monospace; font-size: 12px; line-height: 1.4em; padding: 0px;&quot;&gt;&lt;div class=&quot;line&quot; id=&quot;LC1&quot; style=&quot;line-height: 1.4em; margin: 0px; padding: 0px 0px 0px 1em;&quot;&gt;
&lt;span class=&quot;cp&quot; style=&quot;color: #999999; font-weight: bold; line-height: 1.4em; margin: 0px; padding: 0px;&quot;&gt;#include &lt;stdio .h=&quot;.h&quot;&gt;&lt;/stdio&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot; id=&quot;LC2&quot; style=&quot;line-height: 1.4em; margin: 0px; padding: 0px 0px 0px 1em;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;line&quot; id=&quot;LC3&quot; style=&quot;line-height: 1.4em; margin: 0px; padding: 0px 0px 0px 1em;&quot;&gt;
&lt;span class=&quot;n&quot; style=&quot;line-height: 1.4em; margin: 0px; padding: 0px;&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;line-height: 1.4em; margin: 0px; padding: 0px;&quot;&gt;()&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot; id=&quot;LC4&quot; style=&quot;line-height: 1.4em; margin: 0px; padding: 0px 0px 0px 1em;&quot;&gt;
&lt;span class=&quot;p&quot; style=&quot;line-height: 1.4em; margin: 0px; padding: 0px;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot; id=&quot;LC5&quot; style=&quot;line-height: 1.4em; margin: 0px; padding: 0px 0px 0px 1em;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;n&quot; style=&quot;line-height: 1.4em; margin: 0px; padding: 0px;&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;line-height: 1.4em; margin: 0px; padding: 0px;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot; style=&quot;color: #dd1144; line-height: 1.4em; margin: 0px; padding: 0px;&quot;&gt;&quot;Hello World from LavanyaDeepak&quot;&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;line-height: 1.4em; margin: 0px; padding: 0px;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot; id=&quot;LC6&quot; style=&quot;line-height: 1.4em; margin: 0px; padding: 0px 0px 0px 1em;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;n&quot; style=&quot;line-height: 1.4em; margin: 0px; padding: 0px;&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;line-height: 1.4em; margin: 0px; padding: 0px;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot; style=&quot;color: #dd1144; line-height: 1.4em; margin: 0px; padding: 0px;&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot; style=&quot;color: #dd1144; line-height: 1.4em; margin: 0px; padding: 0px;&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s&quot; style=&quot;color: #dd1144; line-height: 1.4em; margin: 0px; padding: 0px;&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;line-height: 1.4em; margin: 0px; padding: 0px;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot; id=&quot;LC7&quot; style=&quot;line-height: 1.4em; margin: 0px; padding: 0px 0px 0px 1em;&quot;&gt;
&lt;span class=&quot;p&quot; style=&quot;line-height: 1.4em; margin: 0px; padding: 0px;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot; id=&quot;LC7&quot; style=&quot;line-height: 1.4em; margin: 0px; padding: 0px 0px 0px 1em;&quot;&gt;
&lt;span class=&quot;p&quot; style=&quot;line-height: 1.4em; margin: 0px; padding: 0px;&quot;&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot; id=&quot;LC7&quot; style=&quot;line-height: 1.4em; margin: 0px; padding: 0px 0px 0px 1em;&quot;&gt;
&lt;span class=&quot;p&quot; style=&quot;line-height: 1.4em; margin: 0px; padding: 0px;&quot;&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/pre&gt;
&lt;script src=&quot;https://gist.github.com/3841333.js?file=HelloWorld.c&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
</description><link>http://lavanyadeepak.blogspot.com/2012/10/a-fond-recall-of-c-program.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-139498696926713344</guid><pubDate>Wed, 26 Sep 2012 11:43:00 +0000</pubDate><atom:updated>2023-05-20T02:12:10.070-04:00</atom:updated><title>Winner of Enhanced Ip Lookup Account</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
One of my &lt;a href=&quot;http://lavanyadeepak.blogspot.com/2012/09/better-security-on-web.html&quot;&gt;review posts&lt;/a&gt;&amp;nbsp;has been recognized by Ip2Location team and my account has been granted with more look-ups now. I would like to share the message with readers too.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3iX643b3CUYcSTT_s5QJLUrZRDke9Fq4uyxjMnoYbVPZdne9VvagCHDAMQbkoGBi_ayRyYRBlV9XNjJLMRQMuax4JQdR4mzri2vpyKt7tULbY_f7XoSkBQyAS22SFOB__VlSDCA/s1600/2000.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;118&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3iX643b3CUYcSTT_s5QJLUrZRDke9Fq4uyxjMnoYbVPZdne9VvagCHDAMQbkoGBi_ayRyYRBlV9XNjJLMRQMuax4JQdR4mzri2vpyKt7tULbY_f7XoSkBQyAS22SFOB__VlSDCA/s320/2000.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
This means, as always committed towards safer internet and my passion towards de-weeding bad shrubs that go in front of me, it helps even more.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://lavanyadeepak.blogspot.com/2012/09/winner-of-enhanced-ip-lookup-account.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3iX643b3CUYcSTT_s5QJLUrZRDke9Fq4uyxjMnoYbVPZdne9VvagCHDAMQbkoGBi_ayRyYRBlV9XNjJLMRQMuax4JQdR4mzri2vpyKt7tULbY_f7XoSkBQyAS22SFOB__VlSDCA/s72-c/2000.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-2232833696713802107</guid><pubDate>Wed, 26 Sep 2012 11:35:00 +0000</pubDate><atom:updated>2023-05-20T02:26:05.260-04:00</atom:updated><title>Resource File Comparer Tool</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
A while back to debug at my application for resource file bugs pointed by QA I used to write a console application which reads all the resource files, generate HTMLized Excel file ( :) ) to compare availability of strings and what is causing a particular language setting to behave differently in the application.&lt;br /&gt;
&lt;br /&gt;
Last week, I just had an idea and a bit of time to improve upon this to create a simple (rather very simple) Windows forms application which does the following:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Load the base resource file (System Locale)&lt;/li&gt;
&lt;li&gt;Generate a grid containing the key value pairs in the resource file.&lt;/li&gt;
&lt;li&gt;List matching other language files into the listbox.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;As and when other languages are chosen, update the grid with the entries from the selected languages.&lt;/li&gt;
&lt;li&gt;Indicate missing keys in the grid with a different color.&lt;/li&gt;
&lt;li&gt;Provide the legendary Excel Export option as a comma-delimited file.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
I have shared the application as an opensource project in Codeplex at this URL:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://resxcomparer.codeplex.com/&quot;&gt;http://resxcomparer.codeplex.com/&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
</description><link>http://lavanyadeepak.blogspot.com/2012/09/resource-file-comparer-tool.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-21616302.post-1954690251843581150</guid><pubDate>Sun, 23 Sep 2012 17:16:00 +0000</pubDate><atom:updated>2023-05-20T02:34:37.698-04:00</atom:updated><title>Better security on the web</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
We do visit a lot of websites and a lot of visitors from many parts of the world initiate contact us with through the Internet medium. Optimistically speaking while a good number of visitors are good, there are a few rotten apples too. These ones involve in sabotage by indulging in some sort of spam, phishing, email (aka) cyber harassment of multiple kinds.&lt;br /&gt;
&lt;br /&gt;
We can of course report these to cops. But considering the explosive penetration of Internet and comparing with the limited number of cops they may not be able to do an end-to-end investigation of every piece of case. Hence we can do our basic initiative of research into the visitors details and then equip the cops to act on it using the legal channels of redressal.&lt;br /&gt;
&lt;br /&gt;
One of the valuable and reliable resources that helps tracing websites and emails is Ip2Location (&lt;a href=&quot;http://www.ip2location.com/&quot;&gt;http://www.ip2location.com/&lt;/a&gt;), which operates from Malaysia. For every visitor they give 20 lookups of IP address free. For logged on users, a daily lookup of 200 is allowed. And they do have periodic promotional offers like the one running now as illustrated below:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrOf-wsN6nKjC03vn-D3g8g6MMTbXmGmAgzXzGV4CzHsK3a9iObovQDyrJP2pichuqtXV9qdtMYvxCJajovqRdJeKmpYpGjSxx-FuiA7FxuZch883qZYs5WDnZ1Q4p3a9muPiyuA/s1600/ip2location.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;158&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrOf-wsN6nKjC03vn-D3g8g6MMTbXmGmAgzXzGV4CzHsK3a9iObovQDyrJP2pichuqtXV9qdtMYvxCJajovqRdJeKmpYpGjSxx-FuiA7FxuZch883qZYs5WDnZ1Q4p3a9muPiyuA/s320/ip2location.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
I am sure this is an inevitable tool for anyone for safe use of Internet. Check out and bookmark the website. Another related website I found was:&amp;nbsp;&lt;a href=&quot;http://62nds.com/pg/ea0a.php&quot;&gt;62NDS CountryIP&lt;/a&gt;&lt;/div&gt;
</description><link>http://lavanyadeepak.blogspot.com/2012/09/better-security-on-web.html</link><author>noreply@blogger.com (Deepak Vasudevan)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrOf-wsN6nKjC03vn-D3g8g6MMTbXmGmAgzXzGV4CzHsK3a9iObovQDyrJP2pichuqtXV9qdtMYvxCJajovqRdJeKmpYpGjSxx-FuiA7FxuZch883qZYs5WDnZ1Q4p3a9muPiyuA/s72-c/ip2location.png" height="72" width="72"/><thr:total>0</thr:total></item></channel></rss>