<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[Ferran Salguero]]></title>
  <link href="https://ferransalguero.github.io/atom.xml" rel="self"/>
  <link href="https://ferransalguero.github.io/"/>
  <updated>2026-08-26T08:32:33+02:00</updated>
  <id>https://ferransalguero.github.io/</id>
  <author>
    <name><![CDATA[Ferran Salguero]]></name>
    
  </author>
  
  
  <entry>
    <title type="html"><![CDATA[Bing Ads vs Google Ads: Which Platform Should You Choose?]]></title>
    <link href="https://ferransalguero.github.io/blog/bing-ads-vs-google-ads/"/>
    <updated>2025-01-18T00:00:00+01:00</updated>
    <id>https://ferransalguero.github.io/blog/bing-ads-vs-google-ads</id>
    <content type="html"><![CDATA[<p><a href="bing+google+ads"><img src="https://i.imgur.com/aRyU7Xem.jpg" alt="Bing Ads vs Google Ads" class="align-right" /></a></p>

<p>Deciding between <strong>Bing Ads</strong> (Microsoft Advertising) and <strong>Google Ads</strong> for your PPC campaigns comes down to budget, audience, and goals. Google dominates reach; Bing wins on cost-per-click. Here is a data-driven breakdown to help you choose.</p>

<hr />

<h2 id="audience-reach">Audience Reach</h2>

<ul>
  <li><strong>Bing Ads</strong>: ~2.5% global search market share. Ads also appear on Yahoo and AOL. Bing users tend to be older and more affluent — a strong demographic for certain niches.</li>
  <li><strong>Google Ads</strong>: ~92.5% global search market share. Diverse audience covering all demographics and interests.</li>
</ul>

<p><strong>Verdict</strong>: Google Ads if you need maximum reach. Bing Ads if you target higher-income demographics.</p>

<hr />

<h2 id="cost-per-click-cpc">Cost-Per-Click (CPC)</h2>

<ul>
  <li><strong>Bing Ads</strong>: Generally lower CPC due to less competition. Advertisers often achieve comparable results at a fraction of Google’s cost.</li>
  <li><strong>Google Ads</strong>: Higher CPC driven by intense advertiser competition. The extensive targeting options and reach can justify the premium.</li>
</ul>

<p><strong>Verdict</strong>: Bing Ads for tighter budgets. Google Ads when ROI justifies the spend.</p>

<hr />

<h2 id="features-and-targeting">Features and Targeting</h2>

<ul>
  <li><strong>Bing Ads</strong>:</li>
  <li>Demographic targeting (age, gender)</li>
  <li>Device targeting (desktop, tablet, mobile)</li>
  <li>
    <p><strong>LinkedIn Profile Targeting</strong> — unique to Microsoft Advertising, tapping into professional network data</p>
  </li>
  <li><strong>Google Ads</strong>:</li>
  <li>Advanced demographic, geographic, and device targeting</li>
  <li>Smart Bidding (automated strategies to maximize conversions)</li>
  <li>Extensive ad formats: text, display, shopping, video, and app ads</li>
</ul>

<p><strong>Verdict</strong>: Google Ads for feature depth. Bing Ads if LinkedIn audience targeting matters for your B2B campaigns.</p>

<hr />

<h2 id="performance-and-roi">Performance and ROI</h2>

<ul>
  <li><strong>Bing Ads</strong>: Known for high click-through rates and conversion rates in specific niches. The audience’s higher purchasing power can lead to better ROI per click.</li>
  <li><strong>Google Ads</strong>: Praised for precision and optimization tools. The vast data set allows for fine-tuned campaign performance.</li>
</ul>

<p><strong>Verdict</strong>: Both platforms deliver. Test both and compare your own conversion data.</p>

<hr />

<h2 id="user-interface">User Interface</h2>

<ul>
  <li><strong>Bing Ads</strong>: Clean, straightforward interface. Easy for beginners. Integration with Microsoft products adds convenience.</li>
  <li><strong>Google Ads</strong>: More complex interface with a steeper learning curve, but unmatched depth of tools and reporting.</li>
</ul>

<p><strong>Verdict</strong>: Bing Ads for ease of use. Google Ads for advanced control.</p>

<hr />

<h2 id="pros-and-cons-summary">Pros and Cons Summary</h2>

<h3 id="bing-ads">Bing Ads</h3>
<ul>
  <li><strong>Pros</strong>: Lower CPC, high CTR, user-friendly, LinkedIn targeting, less competition</li>
  <li><strong>Cons</strong>: Smaller audience, fewer ad formats, less advanced automation</li>
</ul>

<h3 id="google-ads">Google Ads</h3>
<ul>
  <li><strong>Pros</strong>: Massive reach, advanced targeting and bidding, comprehensive ad formats, extensive analytics</li>
  <li><strong>Cons</strong>: Higher CPC, steeper learning curve, more competition</li>
</ul>

<hr />

<h2 id="decision-table">Decision Table</h2>

<table>
  <thead>
    <tr>
      <th>Your Situation</th>
      <th>Best Choice</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Limited budget, want low CPC</td>
      <td><strong>Bing Ads</strong></td>
    </tr>
    <tr>
      <td>Need maximum audience reach</td>
      <td><strong>Google Ads</strong></td>
    </tr>
    <tr>
      <td>B2B targeting via LinkedIn data</td>
      <td><strong>Bing Ads</strong></td>
    </tr>
    <tr>
      <td>Want automated Smart Bidding</td>
      <td><strong>Google Ads</strong></td>
    </tr>
    <tr>
      <td>Starting PPC, want easy setup</td>
      <td><strong>Bing Ads</strong></td>
    </tr>
    <tr>
      <td>Running multi-format campaigns (video, shopping, display)</td>
      <td><strong>Google Ads</strong></td>
    </tr>
    <tr>
      <td>Best overall strategy</td>
      <td><strong>Both</strong> — use Bing for cheap supplementary traffic</td>
    </tr>
  </tbody>
</table>

<p><strong>Bottom line</strong>: For most advertisers, Google Ads should be the primary platform due to reach. Bing Ads is an excellent supplementary channel that often delivers cheaper conversions. Running both simultaneously, with separate budgets, is the optimal strategy. If you manage a website and want to understand your ad revenue better, check our <a href="https://ferransalguero.github.io/blog/adsense-for-everyone/">AdSense guide</a>.</p>

<h2 id="getting-started-practical-steps">Getting Started: Practical Steps</h2>

<p>For advertisers new to PPC, starting with Bing Ads makes sense because the lower competition provides a forgiving environment to learn campaign mechanics without burning through budget. Set a daily cap of $10-20, run one search campaign with 10-15 tightly themed keywords, and measure results for two weeks before scaling. Google Ads demands a larger initial budget for statistically significant data due to higher CPCs — plan for at least $30-50 per day in most competitive niches. Once you have conversion data from both platforms, allocate budget proportionally based on cost-per-acquisition rather than impressions. Import your Google Ads campaigns directly into Microsoft Advertising using the built-in import tool to save setup time — the platforms share similar structures, so most settings transfer cleanly with minor adjustments to bid levels. Negative keyword lists are particularly important to review after import, since search intent can differ between Bing and Google audiences despite identical query terms. Auditing search term reports weekly during the first month catches irrelevant traffic early and protects budget from waste. Conversion tracking setup is essential before launching any campaign — without it, optimization decisions rely on click data alone, which tells nothing about actual business outcomes. Google Ads offers built-in conversion tracking through a simple JavaScript tag, while Microsoft Advertising provides its Universal Event Tracking (UET) tag for the same purpose. Both platforms integrate with Google Analytics, allowing centralized reporting regardless of traffic source. A/B testing ad copy from day one, with at least two variants per ad group, accelerates learning about what resonates with each platform’s audience. Bing’s audience skews older and more desktop-heavy, so messaging that works on Google mobile may underperform when served to Bing’s demographic without adjustment.</p>

<hr />

<h2 id="related-posts">Related Posts</h2>

<ul>
  <li><a href="https://ferransalguero.github.io/blog/adsense-for-everyone/">AdSense for Everyone: Understand Your Revenue Statistics</a></li>
  <li><a href="https://ferransalguero.github.io/blog/adsense-in-3-steps/">AdSense in 3 Simple Steps to Any Blog</a></li>
</ul>
]]></content>
  </entry>
  
  
  
  <entry>
    <title type="html"><![CDATA[Simple free personal unblocker in .NET]]></title>
    <link href="https://ferransalguero.github.io/blog/Simple-free-personal-unblocke-net/"/>
    <updated>2023-01-26T00:00:00+01:00</updated>
    <id>https://ferransalguero.github.io/blog/Simple-free-personal-unblocke-net</id>
    <content type="html"><![CDATA[<p>Been quite some time since I posted anything but last month Appharbor stopped giving service, it was a simple cloud application service for .NET applications with a very good free tier, which I used extensively for testing, trying new tech and learn with personal projects. They were slow on the .NET core adoption and many of my sites were using the classic .NET framework.</p>

<p>I want to share a simple unblocker which I used for quite some time and <a href="https://github.com/FerranSalguero/Unblocker">published on Github recently</a>, if you have sites blocked by your ISP this is a simple and free alternative if you use the free tier in Azure for example.</p>

<p>You can navigate a site if you configure the destination url first using querystring:</p>

<p>Deploy and request the root with a querystring parameter q to set the proxy forwarding destination
Sample: <a href="https://yourpersonaldomain.com?q=https://github.com">https://yourpersonaldomain.com?q=https://github.com</a></p>

<p>Then navigate on the root or add the wanted path and the application will redirect you to github in this case</p>

<p>Samples:</p>

<ul>
  <li><a href="https://yourpersonaldomain.com">https://yourpersonaldomain.com</a></li>
  <li><a href="https://yourpersonaldomain.com/FerranSalguero/">https://yourpersonaldomain.com/FerranSalguero/</a></li>
</ul>
]]></content>
  </entry>
  
  
  
  <entry>
    <title type="html"><![CDATA[My blog got disabled. How you should restore it]]></title>
    <link href="https://ferransalguero.github.io/blog/my-blog-got-disabled/"/>
    <updated>2018-09-10T00:00:00+02:00</updated>
    <id>https://ferransalguero.github.io/blog/my-blog-got-disabled</id>
    <content type="html"><![CDATA[<p><a href="https://blog.geeknite.com/"><img style="float: right;" src="https://i.imgur.com/uPjzkRU.jpg" /></a></p>

<p><strong>For almost a week this blog was disabled (on Blogger)</strong>, maybe you did not notice if it’s your first time here, but the Google robots marked it as a spam blog and then no one could access the blog, <strong>it was deleted on my blogger account and could not restore it</strong>. The only thing that I was able to do was to request a revision by a “human”, as the process is automatized it has a probability of error, even it may be low. I did the request which, as stated by the request form information, should be done in a couple of working days. But as you may guess, this did not happen, as the days passed I thought that I should take some <strong>action</strong>, and of course <em>googled</em> my problem which I found to be quite recurrent. 
If your blog also has been disabled for being marked as a spam blog, you should have received an email with:</p>

<blockquote>
  <p><em>Hello, Your blog at &lt;/&gt; has been reviewed and confirmed as in violation of our Terms of Service for: SPAM. In accordance to these terms, we’ve removed the blog and the URL is no longer accessible. For more information, please review the following resources: Terms of Service: <a href="https://www.blogger.com/go/terms">https://www.blogger.com/go/terms</a> Blogger Content Policy: <a href="https://blogger.com/go/contentpolicy">https://blogger.com/go/contentpolicy</a> -The Blogger Team</em></p>
</blockquote>

<p>I found the blogger help forum where many people request help for problems with the platform, and also many where asking to recover their disabled blog, following some of those threads I found out that the reasons are mainly that <strong>your blog may not be following the Blogger Guidelines</strong>, which as a more schematic guide <a href="https://productforums.google.com/forum/?hl=en&amp;fromgroups=#!category-topic/blogger/something-is-broken/hD3y-luVMdg%5B1-25-true%5D">that I found on the forums</a> are:</p>

<ul>
  <li>Affiliate marketing (Please, don’t confuse this with “affiliate networking”!).</li>
  <li>Automated traffic redirection, to another Blogger blog, or to non Google hosted content.</li>
  <li>Commercially funded adult content.</li>
  <li>Content created with scripts and programs, rather than by hand.</li>
  <li>Content or links which reference account hacking / password distribution / password sharing.</li>
  <li>Content or links which reference code deconstruction / reverse engineering, to bypass normal use of proprietary software.</li>
  <li>Content or links which reference referral-based activities such as GPT (“Get Paid To”), MLM (“Multi-Level Marketing”), MMF (“Make Money Fast”), MMH (“Make Money from Home”), PTC (“Pay To Click”), or PTS (“Pay To Surf”).</li>
  <li>Content scraped from other blogs / websites.</li>
  <li>Copyright Infringement.</li>
  <li>Large blogs with multiple, unfocused / unrelated subjects.</li>
  <li>Links to Illegal Downloads / Streaming / Torrents.</li>
  <li>Monetizing of adult content, aka porn spam.</li>
</ul>

<p>If your blog has been disabled you should follow the next steps, which are the steps that I followed to get my blog restored:</p>

<ol>
  <li>Identify the possible infringement/s of your blog but as you aren’t able to access it and correct it check your other blogs, if you have any, and correct them, so they also behave as the guidelines suggest. Also if your deleted blog and any of the other blogs has repeated content, even it may be created by you, should only be available in one of the blogs, then <strong>delete all repeated content if you want to restore your blog</strong>, even delete blogs that you don’t use or have repeated content. This is not mandatory but is a way to convince that <strong>you are serious in your desire to correct your behavior</strong> following now strictly the guidelines, <strong>remember to mention it when you ask for help</strong>.</li>
  <li>After all your blogger data is ready to get reviewed, submit the review request on blogger.</li>
  <li>If after a few days, at least 4 days, your blog is still disabled, go to <a href="https://productforums.google.com/forum/#!categories/blogger/something-is-broken">the blogger help forums, in the <em>Something is broken</em> section</a>, where you can ask for help. You need to <em>Post a new question</em> requesting assistance, to jump over a small step you should include a screenshot of your <em>my blogs</em> section at Blogger, where it shows the blog that you want restored, so the people at the forum can confirm what was the reason of your blog disabling, as I saw that this step was always required I already posted the screenshots on my question.
In your question you should include <strong>your blog’s URL</strong>, <strong>the date you received notice of your blog disabling</strong> and <strong>the date you filed your initial review request</strong>. If you need some inspiration in writing your request <a href="https://productforums.google.com/forum/#!msg/blogger/35ozDAoNX7g/XniQntMG5_sJ">here you can read mine and see how it was resolved.</a></li>
  <li>If nothing has changed when you post your question, +Nitecruzr will respond your request, asking for your own review on what may be the problem with your blog, according to the blogger guidelines, and accepting in the most sincere way where you may have infringed the Blogger guidelines. If all seems ok your request will be forwarded to Blogger Support where they will do a <strong>final evaluation which can not be appealed</strong>.</li>
</ol>

<p><a href="https://blog.geeknite.com/2022/12/garmin-edge-530-facts-consider-before-buying.html"><img style="float: right;" src="https://i.imgur.com/xNrkIWG.png" /></a></p>

<p>After all these inconveniences our blog is online and working ok now, our thoughts are a little wary of what really happened with the spamming process and why it triggered right now. Our blog has only a good visited post which by chance is critic to a product, <a href="https://blog.geeknite.com/2013/01/garmin-edge-500-vs-edge-520-review-why-should-stay-with-edge-500.html">our comparison between the Edge 500 and the new Edge 520</a>, <strong>that criticisms a new product that really does not offer any good improvement over an old product of the same company</strong>.</p>

<p>There are many people online that think that blogger disabling blogs may be caused for abuse of the <em>Flag Blog</em> button, but as Blogger claims that just brings the blog to the attention of a human that reviews the content. Maybe that “human” thought that our blog contained too many links and product promotions, but as you can see <strong>most of our product posts have a critic side</strong>. All this happens because we can’t afford a personalized host yet, until we can reach a small amount, <strong>if you want to help us you can buy at amazon through our links and visit <a href="https://blog.geeknite.com/">GeekNite blog</a>.</strong></p>

<p>Thanks for reading!</p>
]]></content>
  </entry>
  
  
  
  <entry>
    <title type="html"><![CDATA[Using autoprefixer Sass or Coffeescript with Gulp, Vnext and Visual Studio 2015]]></title>
    <link href="https://ferransalguero.github.io/blog/Using-autoprefixer-sass-coffeescript-with-gulp-vnext-visual-studio-2015/"/>
    <updated>2015-08-26T00:00:00+02:00</updated>
    <id>https://ferransalguero.github.io/blog/Using-autoprefixer-sass-coffeescript-with-gulp-vnext-visual-studio-2015</id>
    <content type="html"><![CDATA[<p>Last month I wrote about <a href="/blog/Using-autoprefixer-in-Visual-Studio">using autoprefixer with Visual Studio</a> but as Visual Studio 2015 came out we found out that the extension that we used to execute autoprefixer (Web Essentials) was a bit different for Visual Studio 2015. So I decided to seize the moment to explore the new paths that ASP.Net5 wants to introduce, as we can see in the sample project, with tools widely used in the front end development community like gulp or bower.</p>

<p>Gulp, from their own description, is a tasks runner that works as a build system for the web ecosystem, from minification to compiling Sass or Coffeescript. To run those tasks you will need some plugins and a configuration file on the tasks to run.</p>

<p>In this <a href="https://github.com/FerranSalguero/AppHarborAspNet5Test/">simple example uploaded on Github</a> you can see how Gulp can be used to compile Sass and Coffeescript and use autoprefixer on the css generated. This was a test project to try some of these features on the new vNext paradigm and try to deploy it on <a href="https://appharbor.com/" rel="nofollow">AppHarbor</a>, one of my favourite hosting site as you may be already aware if you checked some of <a href="/portfolio">my projects</a>.</p>

<h1 id="notes">Notes</h1>

<ul>
  <li>Apart from checking if this AppHarbor supports ASP.NET 5 projects, I also want to see if it executes the Gulp tasks on build</li>
  <li>If you want to compile this project you need Visual Studio 2015, Community Edition is more than enough</li>
  <li>To test this project in your local IIS 7+ you must create a new virtual directory pointing to the projects wwwroot folder, the pool must use Integrated pipeline and framework v4.0</li>
</ul>

]]></content>
  </entry>
  
  
  
  <entry>
    <title type="html"><![CDATA[Using autoprefixer in Visual Studio]]></title>
    <link href="https://ferransalguero.github.io/blog/Using-autoprefixer-in-Visual-Studio/"/>
    <updated>2015-07-14T00:00:00+02:00</updated>
    <id>https://ferransalguero.github.io/blog/Using-autoprefixer-in-Visual-Studio</id>
    <content type="html"><![CDATA[<p>Autoprefixer helps completing your CSS stylesheets adding vendor specific prefixes to rules making your styles more compatible with more browsers, usually old versions.</p>

<p>Visual Studio does not support autoprefixer directly and you will have to use some kind of extension, I recommend <a href="http://vswebessentials.com/" rel="nofollow">Web Essentials</a>, but you will need at least Visual Studio 2013 to use autoprefixer. Web Essentials add also support to many web useful languages, like SCSS, Markdown or Coffeescript.</p>

<p>Once Web Essentials is installed you need to configure on the Tools -&gt; Options menu, the Web Essentials -&gt; CSS tab, set to ‘True’ the ‘Enable Autoprefixer’ option. Also you can configure which browsers do you want to target for specific prefixes, if you want a most compatible website I recommend the ‘&gt;0%’, browsers with any use. By default Autoprefixer uses the 2 last versions of the major browsers, you can check the <a href="https://github.com/ai/browserslist#queries" rel="nofollow">Browserslist docs</a> for extended reference.</p>

<p><img src="/images/posts/autoprefixer.jpg" alt="Autoprefixer config" /></p>

<p>[Update 2015-08-26]
Sadly on Visual Studio 2015 Web Essentials does not support autoprefixer, but we could <a href="/blog/Using-autoprefixer-sass-coffeescript-with-gulp-vnext-visual-studio-2015/">use Gulp to run a task that executes autoprefixer on our css files</a>.</p>

]]></content>
  </entry>
  
  
  
  <entry>
    <title type="html"><![CDATA[Recommended PC builds Summer 2015]]></title>
    <link href="https://ferransalguero.github.io/blog/Recommended-PC-builds-summer-2015/"/>
    <updated>2015-06-21T00:00:00+02:00</updated>
    <id>https://ferransalguero.github.io/blog/Recommended-PC-builds-summer-2015</id>
    <content type="html"><![CDATA[
]]></content>
  </entry>
  
  
  
  <entry>
    <title type="html"><![CDATA[Looking for a DDR3 1333Mhz Ripjaws 4GB module from Jun 2014]]></title>
    <link href="https://ferransalguero.github.io/blog/Looking-for-DDR3-1333-Ripjaws-module-Jun-2014/"/>
    <updated>2015-05-20T00:00:00+02:00</updated>
    <id>https://ferransalguero.github.io/blog/Looking-for-DDR3-1333-Ripjaws-module-Jun-2014</id>
    <content type="html"><![CDATA[<p>[Update 2015-09-20]<br />
Finally managed to get an old Ripjaws module and as expected my computer managed it seamlessly, now finally with 8gb of RAM. Thanks to all who helped out!</p>

<p>As my computer has already a few years it isn’t compatible with some newer models of this same memory, I tested it myself, I got already a module fabricated on Jun 2014 that works fine but a few weeks back I bought one on a local store from Oct 2014 that didn’t work on my computer and I had to return it.</p>

<p>You can check the production date on the module warranty sticker.</p>

<p>As many have suggested this seems due to the chipset distribution configuration, on newer models it seems that manufacturers are using high density chipsets of at least 512MB, for this reason some old motherboards are unable to use this modern chipsets and bound to use module with 256MB chipsets. Of course, using less chipsets is an advantage to reduce manufacturing costs.</p>

<p><img src="/images/posts/ripjaws.jpg" alt="Ripjaws module date" /></p>

<p>For this reason I am searching actively on Ebay for a <a href="http://wheretobuy.apphb.com/ripjaws%20ddr3">Ripjaws DDR3</a> module for a model of similar dates of Jun 2014 or with 256MB chipsets, if you are a store or a particular and happen to have one model and willing to send to Spain please let me know. Thanks in advance!</p>
]]></content>
  </entry>
  
  
  
  <entry>
    <title type="html"><![CDATA[Internet Explorer version testing with VMs and Vagrant]]></title>
    <link href="https://ferransalguero.github.io/blog/Internet-Explorer-version-testing-with-vm-vagrant/"/>
    <updated>2015-05-01T00:00:00+02:00</updated>
    <id>https://ferransalguero.github.io/blog/Internet-Explorer-version-testing-with-vm-vagrant</id>
    <content type="html"><![CDATA[<p>To simplify testing with different versions of Internet Explorer and due to Explorer’s tight coupling with the operating system version, we need to test this different versions on virtual machines that contain the desired version of Explorer. Thanks to <a href="https://www.modern.ie/" rel="nofollow">modern.ie</a> achieving this is a simple task as they provide already configured virtual machines with the different versions of Explorer.</p>

<p>But it’s not perfect as it seems, of course, the OS on these virtual machines is not free so it will ask for activation after a few weeks after starting the virtual machine, you will be able to extend this period the so called re-arm procedure described in the desktop wallpaper of these VMs, but with a limitation of a couple of re-arms. Then you will need to redownload the original VM and configure it again.</p>

<p>To avoid this there’s a possibility to simplify this process doing a backup of the VM before rearming, so you will have an expired VM that will need rearming but configured to reuse from time to time.</p>

<p>With Vagrant we can easily manage this procedure, <a href="https://www.vagrantup.com/" rel="nofollow">Vagrant</a>, allows you to easily start a virtual machine from a packaged version file. This file can be stored remotely so Vagrant will download the package and install the VM in your local Virtual Box and start it. Vagrant works better with Virtual Box so we will describe the configuration process to work with it.</p>

<h2 id="necessary-software">Necessary software</h2>

<ul>
  <li><a href="https://www.virtualbox.org/wiki/Downloads" rel="nofollow">Virtual Box</a></li>
  <li><a href="https://www.vagrantup.com/downloads.html" rel="nofollow">Vagrant</a></li>
</ul>

<h2 id="preparing-packaged-boxes">Preparing packaged boxes</h2>

<p>Download Vagrant boxes provided by <a href="http://blog.syntaxc4.net/post/2014/09/03/windows-boxes-for-vagrant-courtesy-of-modern-ie.aspx" rel="nofollow">modern.ie</a> and install following <a href="https://gist.github.com/andreptb/57e388df5e881937e62a" rel="nofollow">this method</a>, configure them to your necessities (proxy settings, updates, needed software, etc.) and then you will be able to repack with:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>vagrant package --output "yourboxname"
</code></pre></div></div>

<p>We will not repackage the Vagrant file, as we will save it in our repository to easy setup on our team.</p>

<p>Now you can share the packaged box to a shared directory, and, of course, change the box url to the shared folder in the Vagrantfile.</p>

<p>Now you can upload these Vagrantfiles for each configuration to your source code repository or shared folder.</p>

<h2 id="resources">Resources</h2>

<ul>
  <li><a href="https://gist.github.com/andreptb/57e388df5e881937e62a">Step by step modern.ie box configuration</a></li>
  <li><a href="http://www.emoxter.com/welcome-to-ghost/">Step by step WinXP box configuration</a></li>
  <li><a href="http://blog.syntaxc4.net/post/2014/09/03/windows-boxes-for-vagrant-courtesy-of-modern-ie.aspx">Virtual boxes from modern.ie</a></li>
</ul>

]]></content>
  </entry>
  
  
  
  <entry>
    <title type="html"><![CDATA[AdSense Explained: Understand Your Revenue Statistics]]></title>
    <link href="https://ferransalguero.github.io/blog/adsense-for-everyone/"/>
    <updated>2015-03-22T00:00:00+01:00</updated>
    <id>https://ferransalguero.github.io/blog/adsense-for-everyone</id>
    <content type="html"><![CDATA[<p><a href="Google AdSense"><img src="https://i.imgur.com/teAzmHl.png" alt="Example of indicators" class="align-right" /></a></p>

<p>It all started with the question: <em>How can I increase my RPM in Adsense?</em>, I saw that I did not understand what many of the terms are so I have been doing some research on the meaning of the <strong>Adsense **</strong>reports<strong>**.</strong> When we enter at our <strong>Adsense</strong> page, assuming we have an account, we see our home tab with an overview were we can see some <strong>concepts</strong> that if we haven’t researched or read about, we won’t acknowledge.</p>

<p>To start analyzing the <strong>AdSense</strong> reports and maximizing our revenue as most of the hubs claim first we should learn what these concepts mean.<br />
We can see that the most repeated indicators in the reports are:</p>

<ul>
  <li><strong>CTR</strong>(<strong>C</strong>lick<strong>T</strong>hrough<strong>R</strong>ate)</li>
  <li><strong>RPM</strong>(<strong>R</strong>evenue <strong>P</strong>er thousand i<strong>M</strong>pressions)</li>
  <li><strong>C</strong><strong>PC **(</strong>C<strong>ost</strong>P<strong>er</strong>C**lick)</li>
</ul>

<p>First of all we should distinguish that these indicators or concepts are merely statistical and are calculated with the revenue in our accounts, we must realize that the reports calculate averages on the results, so when we see the report by day the data of each column is averaged by each day.</p>

<p>The purpose of this hub is understand the basic concepts and make as many people as possible conscious of some of the problems of the <strong>Adsense</strong> reports, as we may see some of them are inaccurate in its calculations and can lead to confusion.</p>

<p><img src="https://i.imgur.com/19HuBfU.png" alt="bid types in Adsense report" /></p>

<p>bid types in Adsense report</p>

<h2 id="bid-types">Bid types</h2>

<p>If we look at the report by <strong><em>Bid types</em></strong> there are only two ways of earning money, those are the only parameters that generate revenue. <strong>Adsense</strong> serves us an ad it does an auction which bid is more appropriate for us, as they state, and the result is one of this bidding types. We should see them in detail:</p>

<h3 id="cpc-bids"><strong>CPC Bids</strong></h3>

<p>This is the standard bid and <strong>Adsense</strong> will serve mostly this type of bid. The revenue on these ads depends on the user clicking on it. The format of the ad can vary on text links, images or even animated ads in <em>Flash</em>.</p>

<h3 id="cpm-bids"><strong>CPM Bids</strong></h3>

<p>Those bids led me to confusion when I was looking at my reports, so I asked the question that led me to doing some research.</p>

<p>Those bids depend only on being served to the visitor of our page, but it’s done by a factor of thousand, so we must divide the number of visitors that saw the ad by 1000 and multiply it for the revenue, 100 visitors * $1,15 / 1000 =$0,115.</p>

<p>But as I have stated before this is not the default type on the ads served, in my case this only means less than 1% of the total ads served, I don’t know yet if we can increase this number but in many visited sites it could be interesting to do.</p>

<p><img src="https://i.imgur.com/upleiUN.png" alt="Example of invalid click averaged in reports" /></p>

<p>Example of invalid click averaged in reports</p>

<h2 id="statistics-in-reports">Statistics in reports</h2>

<p>Let’s go with the statistics:</p>

<h3 id="ctr-click-through-rate"><strong>CTR (Click Through Rate)</strong></h3>

<p>AdSense <em>CTR (Click Through Rate)</em> is the number of the ad clicks divided by the number of page views.<br />
<em>CTR = (Number of ad clicks</em> 100) / Number of page views<br />
*If my blog has 10,000 page views in a month and 50 <strong>AdSense</strong> ad clicks then my CTR is 0,05%.<br />
*CTR = (50 *100) / 10000 = 0,05%<br />
*Higher CTR means that more <strong>AdSense</strong>ads have been clicked, so in the end means more earnings. So every <strong>AdSense</strong> publisher wants a higher CTR.<br />
Also we must be cautious because some invalid clicks, as you may know if you read the <strong>Adsense</strong> terms, can be counted for the CTR, so as you can see some of these stats can be inaccurate.</p>

<h3 id="rpm-revenue-per-thousand-impressions"><strong>RPM (Revenue Per thousand iMpressions)</strong></h3>

<p>RPM is the average revenue per thousand impressions (RPM), it is calculated by dividing your estimated earnings by the number of page views you received, then multiplying by 1000.<br />
<em>Page RPM = (Estimated earnings / Number of page views)</em> 1000<br />
<em>This is good indicator to estimate your earning in future, for example if your RPM is $1,12 then you can predict if you will have 15,000 page views your earnings will probably be around $16,8 (15</em> $1,12).<br />
You should not mistake it with the bid type, because this is just a statistic of the average revenue by ads served.</p>

<h3 id="cpc-cost-per-click"><strong>CPC (Cost Per Click)</strong></h3>

<p>The cost-per-click (CPC) is the average amount we earn each time a user clicks on his ad. As you may suppose, CPC is calculated by dividing the estimated earnings by the number of clicks received.
For example if your CPC is $0.26 then you need around 285 click to earn $100. As with CTR you should be careful with invalid links as it will be counted in this statistic.</p>

<h2 id="conclusions">Conclusions</h2>

<p>If you want to maximize the monetization of your site you should understand the concepts explained in this hub so you can analyze how should improve your blog to optimize every ad showed at your website. If there’s anything not clear enough don’t be afraid to ask in the comments section.</p>

<p>Thanks for reading!</p>
]]></content>
  </entry>
  
  
  
  <entry>
    <title type="html"><![CDATA[Easy Ways of Making Some Extra Cash Online]]></title>
    <link href="https://ferransalguero.github.io/blog/easy-ways-making-cash-online/"/>
    <updated>2013-07-15T00:00:00+02:00</updated>
    <id>https://ferransalguero.github.io/blog/easy-ways-making-cash-online</id>
    <content type="html"><![CDATA[<p>[<img src="https://i.imgur.com/DA80Cljm.png" alt="geeknite money making cat" class="align-right" />]</p>

<p>I have been trying for a few months different ways of making some extra money online, even I have not been much successful as many of them require a lot of involvement, but some require less involvement and are much more satisfying, here I want to enumerate my favorite ones and the ones that found out more effective:</p>

<ul>
  <li><strong>Online Surveys:</strong> Participating in online surveys is a great way to make some extra cash. There are several reputable survey sites available, but if you’re not from the US, you may have better luck searching for local survey sites.</li>
  <li><strong>Freelancing:</strong> Offer your services such as writing, graphic design, or programming to clients through freelancing platforms such as Upwork or Freelancer.</li>
  <li><strong>Write for money</strong>: Also if you are not a professional you can start writing for some content, like HubPages, as you may know these sites share their earnings with you, if you are not registered at HubPages you should try also Squidoo.</li>
  <li><strong>Sell unnecessary or collectible items</strong>: you can sell on eBay or Craigslist; you also can risk a little and buy bulk items and resell them individually or find sales and resell it for a little more, but it’s not recommended many people state that requires a big involvement and time.</li>
  <li><strong>Start your own blog</strong>: If you have a hobby or want to talk about something you can create a blog and get some money through Adsense. You can I have some published post that can be interesting for beginners:</li>
  <li>If you are not using blogger you should<a href="https://ferransalguero.github.io/blog/adsense-in-3-steps/">read this post to help you add Adsense to any blog that allows frames as Tumblr</a>, you may need some basic HTML knowledge</li>
  <li><a href="https://ferransalguero.github.io/blog/adsense-for-everyone/">Learn the basic Adsense statistics to maximize your revenue</a></li>
  <li>Do reviews of Amazon products you own and register at their affiliate program, where you can earn a small percentage of every parchase through your links</li>
  <li><strong>Creating and selling online courses</strong>: You can create an online course teaching others what you know and sell it on platforms such as Udemy or Coursera. This can be a great way to earn passive income over time.</li>
</ul>

<p>It’s important to remember that making money online requires dedication and effort, and may not be suitable for everyone. It’s also important to research and find legitimate opportunities, as there are many scams online.</p>

<h2 id="getting-started-practical-first-steps">Getting Started: Practical First Steps</h2>

<p>For those completely new to online income, the lowest barrier to entry is selling items you already own but no longer need. Clearing out unused electronics, books, or collectibles on eBay requires no initial investment and teaches the basics of online commerce, including photography, pricing, and shipping logistics. This approach generates immediate returns while building experience with online platforms.</p>

<p>The next logical step is building a small presence through content creation. A blog or YouTube channel monetized through AdSense requires zero upfront cost (using free platforms) and teaches valuable skills in writing, SEO, and audience building. The key consideration is consistency: publishing regularly builds an audience over months, not days. Most successful content creators report that their first meaningful income arrived after 6 to 12 months of consistent publishing.</p>

<h2 id="common-pitfalls-to-avoid">Common Pitfalls to Avoid</h2>

<p>Several traps catch newcomers attempting to earn online. Multi-level marketing schemes disguised as legitimate businesses often promise high returns with low effort but require recruiting others to profit. Paid course schemes that charge hundreds of dollars for information freely available online represent another common drain on resources. Any opportunity that requires a significant upfront payment to “get started” deserves heavy scrutiny. Legitimate freelancing platforms never charge workers to accept jobs; they take a percentage of completed work instead. Sticking to established platforms with transparent fee structures reduces the risk of losing money rather than earning it.</p>

<h2 id="time-investment-vs-returns">Time Investment vs Returns</h2>

<p>Each method above has a different effort-to-reward ratio. Online surveys pay the least per hour (often under $5/hour equivalent) but require zero skills or setup. Freelancing on Upwork scales with expertise — a competent graphic designer or programmer earns $20-50/hour once established, but building a profile with reviews takes weeks of competitive bidding at lower rates. Blog income is the most unpredictable: some blogs never earn meaningfully, while others generate passive income for years after the content is written. Course creation on platforms like Udemy requires a larger upfront time investment (typically 20-40 hours to produce a quality course) but can generate sales for years with minimal ongoing maintenance. The most realistic approach for a beginner is combining two or three methods: selling unused items for immediate cash, taking surveys during idle time, and building a blog or freelance profile as a longer-term investment that compounds over months. Setting realistic expectations from the start prevents discouragement — most online income streams require three to six months of consistent effort before generating meaningful returns that justify the time invested.</p>
]]></content>
  </entry>
  
  
  
  <entry>
    <title type="html"><![CDATA[Chrome hangs internet connection with Atheros LAN chips]]></title>
    <link href="https://ferransalguero.github.io/blog/Chrome-hangs-Internet-connection-with-Atheros-LAN-chips/"/>
    <updated>2013-06-26T00:00:00+02:00</updated>
    <id>https://ferransalguero.github.io/blog/Chrome-hangs-Internet-connection-with-Atheros-LAN-chips</id>
    <content type="html"><![CDATA[<p>From time to tine I found that Chrome hangs my internet connection on typical tasks like uploading an image, I had resolved this problem a few years ago and suddenly I found the same problem after installing Windows 8.</p>

<p>As it turns out, the drivers for the <em>Atheros L1 Gigabit Ethernet</em> controller, when using <strong>Windows 7</strong> or, as I found out recently, in <strong>Windows 8</strong>, are unable to support task offloading, resulting in disconnecting current internet connection which can only be solved disabling and re-enabling the connection.</p>

<p><strong>To fix this problem you need to change the task offloading property to ‘off’ <em>Device manager</em>&gt;<em>network adapter</em>&gt;<em>select_your_Atheros_adapter</em>&gt;<em>properties</em>&gt;<em>advanced</em>&gt;<em>task offload:value=off</em></strong>.</p>

<p>Check this screenshot in a perfect english-spanish combination :)</p>

<p><img src="/images/posts/atheros.jpg" alt="Atheros task offload property" /></p>
]]></content>
  </entry>
  
  
  
  <entry>
    <title type="html"><![CDATA[Add AdSense to Any Blog in 3 Steps]]></title>
    <link href="https://ferransalguero.github.io/blog/adsense-in-3-steps/"/>
    <updated>2013-05-16T00:00:00+02:00</updated>
    <id>https://ferransalguero.github.io/blog/adsense-in-3-steps</id>
    <content type="html"><![CDATA[<p>The idea is to use a <strong>frame</strong> to show AdSense from another website so you can show them in your blog page, in wordpress.com even frames are limited so this solution won’t work. Basically, we can achieve it in 3 simple steps:</p>

<ol>
  <li>
    <p>Get the AdSense Javascript code If you know how to get the AdSense Javascript, just skip this step. Otherwise, you should enter the AdSense website, click in “My ads” tab, “Content”, “Ad units”, and create a <em>new ad unit</em> , configure the block as you wish, so it is compatible to your site layout and get the code to insert AdSense to your page.</p>
  </li>
  <li>
    <p>Create a free page Searching in Google for a free hosting website service, you can use a page in for example a free blog service like Tumblr, where you can add simple web pages to your blog, this pages can be html so you can add anything, at least I tried with ads.</p>
  </li>
  <li>
    <p>Insert an iFrame in your Blog, this might be the hardest part since it requires some basic HTML knowledge. You should access the manual theme customization and select where you want to insert the ads. Then you have to insert the following code snippet:</p>
  </li>
</ol>

<div class="ads">
 <iframe src="http://youradaddres" width="600" height="100" scrolling="no" frameborder="0">
 </iframe>
 </div>

<p>You should replace “http://youradaddres” with the address of the page you created in the previous step. The width and height parameters should be adjusted for your layout, add some <strong>extra space</strong> to the teoric size of the ad because if it’s too adjusted it may create scrolling bars.</p>

<p><del>Also if you want to add ads in your feed you can use <strong>feedburner</strong> to add it automagically :)</del></p>

<p><strong>Edit:</strong> Since this new year (2013) feedburner has stopped serving ads in feeds so if you are interested in keeping them you should have to look for a custom solution.</p>

<h2 id="detailed-walkthrough-creating-your-ad-page">Detailed Walkthrough: Creating Your Ad Page</h2>

<p>The free hosting page that will contain your AdSense code needs to be a simple HTML file. Here is what the complete page structure should look like:</p>

<html>
 <head><title>Ad</title></head>
 <body style="margin:0; padding:0;">
 <!-- paste your AdSense code here -->
 </body>
 </html>

<p>Keep the page minimal with no additional content, navigation, or styling beyond the ad unit itself. This ensures fast loading within the iframe and avoids any layout conflicts with your main blog design. The page should load in under one second for the ad to display before visitors scroll past it.</p>

<h2 id="choosing-the-right-ad-size">Choosing the Right Ad Size</h2>

<p>Google AdSense offers multiple ad unit sizes, and selecting the right one for your blog layout is critical for both revenue and user experience:</p>

<ul>
  <li><strong>728x90 (Leaderboard)</strong>: Best placed at the top of content, works well in blog headers. Requires a wide layout to fit without scrolling.</li>
  <li><strong>300x250 (Medium Rectangle)</strong>: The most versatile size, fits in sidebars or within content blocks. This is the recommended starting point for most blogs.</li>
  <li><strong>160x600 (Wide Skyscraper)</strong>: Ideal for sidebar placement on desktop layouts. Less effective on mobile-responsive designs.</li>
  <li><strong>320x100 (Large Mobile Banner)</strong>: Specifically designed for mobile traffic, which now accounts for the majority of web browsing.</li>
</ul>

<p>For the iframe method, the medium rectangle (300x250) or leaderboard (728x90) tend to perform best because their dimensions are predictable and easy to accommodate in most blog templates.</p>

<h2 id="important-adsense-policy-considerations">Important AdSense Policy Considerations</h2>

<p>When implementing AdSense through iframes, several policy requirements must be observed to maintain account standing:</p>

<ul>
  <li><strong>No clicking your own ads</strong>: Google monitors click patterns and will suspend accounts that show self-clicking behavior.</li>
  <li><strong>Ad placement limits</strong>: Google recommends no more than three ad units per page to maintain content-to-ad ratio.</li>
  <li><strong>Content requirements</strong>: The blog hosting the iframe must contain substantial original content. Pages with only ads and no real content violate AdSense policies.</li>
  <li><strong>Disclosure</strong>: Many jurisdictions require a disclosure that the site displays advertising. Adding a brief “This site uses advertising” notice in your footer satisfies most requirements.</li>
  <li><strong>Mobile responsiveness</strong>: If your blog receives mobile traffic, ensure the iframe dimensions work on smaller screens or use responsive ad units that adapt automatically.</li>
</ul>

<h2 id="alternative-monetization-methods">Alternative Monetization Methods</h2>

<p>If the iframe approach proves too complex or your platform blocks frames entirely, several alternatives exist for blog monetization:</p>

<ul>
  <li><strong>Direct ad code insertion</strong>: Platforms like Blogger, WordPress.org (self-hosted), and Ghost allow direct JavaScript insertion in theme files, eliminating the need for iframes.</li>
  <li><strong>Affiliate programs</strong>: Amazon Associates, ShareASale, and similar programs pay commissions on referred sales without requiring ad code.</li>
  <li><strong>Sponsored content</strong>: Once a blog reaches consistent traffic, brands may pay for sponsored review posts directly.</li>
</ul>

<p>Regardless of the monetization method chosen, the fundamental requirement remains the same: consistent, quality content that attracts organic traffic. No ad placement strategy compensates for a blog that publishes infrequently or offers no value to readers. Building traffic first and monetizing second produces better long-term results than optimizing ad placement on a site with minimal visitors.</p>
]]></content>
  </entry>
  
  
  
  <entry>
    <title type="html"><![CDATA[Powershell recursive empty folder deletion script]]></title>
    <link href="https://ferransalguero.github.io/blog/Powershell-recursive-deletion-script/"/>
    <updated>2012-11-02T00:00:00+01:00</updated>
    <id>https://ferransalguero.github.io/blog/Powershell-recursive-deletion-script</id>
    <content type="html"><![CDATA[<p>I’ve been using <em>powershell</em> to <strong>automatize some tedious tasks</strong> done through visual interface, this is a powerful tool and I recommend everybody with some programmatic skills look into to it. The last task has been removing empty directories in hierarchy, so the deepest directory being empty will be deleted, the parent, when all children directories are deleted for being empty will be deleted if it’s empty, that’s the main idea.</p>

<p>I’ve taken an already <a href="http://guyellisrocks.com/powershell/powershell-script-to-remove-empty-directories/" rel="nofollow">posted script</a> by Guy Ellis on his blog to delete empty folders and taken one step further, I’ve created a recursive function for this deletion that is being called before the check of the content of the directory.</p>

<p>The function is this:
<script src="https://gist.github.com/ferransalguero/5217602.js">
</script></p>

<p>I’ve found some problem in the second get-childitem for some dir-names with strange character, probably can be changed to some other cmdlet to know if the current dir is empty. I will check it as soon as I can.</p>

]]></content>
  </entry>
  
  
</feed>