<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Sam Afshari&#39;s Blog</title>
    <link>/</link>
    <description>Recent content on Sam Afshari&#39;s Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <copyright>© 2020 Sam Afshari</copyright>
    <lastBuildDate>Sun, 01 Sep 2019 12:00:00 +0000</lastBuildDate>
    
	<atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Creating Icon Sets for Xamarin.Forms</title>
      <link>/post/202-appiconmaker/</link>
      <pubDate>Sun, 01 Sep 2019 12:00:00 +0000</pubDate>
      
      <guid>/post/202-appiconmaker/</guid>
      <description>My AppIconMaker project lets you resize a large icon to all the different dimensions needed by the iOS App Store, as well as three sizes for Android, with the push of a button. If you&amp;rsquo;ve used the RedCorners.Forms template to create your projects, you can simply drag and drop the output files into your projects and replace the files. Everything fits perfectly!
iOS Icons The following files are generated for the iOS target:</description>
    </item>
    
    <item>
      <title>Xamarin.Forms and Notch</title>
      <link>/post/201-fixpadding/</link>
      <pubDate>Fri, 23 Aug 2019 12:00:00 +0000</pubDate>
      
      <guid>/post/201-fixpadding/</guid>
      <description>Since the release of iPhone X, we have to deal with devices with notches and make sure our UI elements don&amp;rsquo;t overlap with the notifications bar, the notch and the task switching bar on the bottom of the screen. However, we can&amp;rsquo;t just add a fixed padding to everything to resolve this issue, because devices without notch and with smaller safe areas also exist, and we have to support them as well.</description>
    </item>
    
    <item>
      <title>Customizing Xamarin.Forms Frame Shadow</title>
      <link>/post/200-frame-shadow/</link>
      <pubDate>Sun, 18 Aug 2019 12:00:00 +0000</pubDate>
      
      <guid>/post/200-frame-shadow/</guid>
      <description>The latest version of RedCorners.Forms introduces Frame2, an extended version of Xamarin.Forms.Frame which provides additional bindable properties to adjust the shadow radius (aka distance or elevation) and color:
To use Frame2, first you have to include the RedCorners.Forms namespace in your XAML:
xmlns:rf=&amp;#34;clr-namespace:RedCorners.Forms;assembly=RedCorners.Forms&amp;#34;  Afterwards, you can use a rf:Frame2 tag and set its ShadowRadius and ShadowColor properties to adjust the shadows:
&amp;lt;rf:Frame2 HasShadow=&amp;#34;True&amp;#34; ShadowRadius=&amp;#34;20&amp;#34; ShadowColor=&amp;#34;Red&amp;#34; BackgroundColor=&amp;#34;White&amp;#34;&amp;gt; &amp;lt;Grid HorizontalOptions=&amp;#34;Fill&amp;#34; HeightRequest=&amp;#34;100&amp;#34;&amp;gt; &amp;lt;Label HorizontalOptions=&amp;#34;Center&amp;#34; VerticalOptions=&amp;#34;Center&amp;#34; Text=&amp;#34;Hello, World&amp;#34; /&amp;gt; &amp;lt;/Grid&amp;gt; &amp;lt;/rf:Frame2&amp;gt;  One issue I experienced was setting high values for ShadowRadius made the whole iOS system crash!</description>
    </item>
    
    <item>
      <title>Read and Write GPS coordinates with RedCorners.ExifLibrary</title>
      <link>/post/199-read-write-gps-exif/</link>
      <pubDate>Sun, 28 Apr 2019 12:00:00 +0000</pubDate>
      
      <guid>/post/199-read-write-gps-exif/</guid>
      <description>I recently published RedCorners.ExifLibrary, a NuGet that lets you read and write EXIF metadata in image files. This is basically a fork of the ExifLibrary project by oozcitak, with four minor changes:
 It removes dependencies to System.Drawing, making the library work across all .net Standard 2.0 compatible runtimes, including Xamarin.iOS and Xamarin.Android. It adds a conversion helper method for going back and forth between floating point or Degrees/Minutes/Seconds representations for coordinates.</description>
    </item>
    
    <item>
      <title>Lines in Unity</title>
      <link>/post/198-lines-in-unity/</link>
      <pubDate>Fri, 22 Feb 2019 12:00:00 +0000</pubDate>
      
      <guid>/post/198-lines-in-unity/</guid>
      <description>TL;DR: Download NeatLine from https://github.com/samafshari/NeatLine! It is sometimes amazing how you want to do a very simple task, but you cannot find a simple and to-the-point library that does it for you. A few of my games require basic 2D lines, and Unity itself does not have the functionality to create 2D lines. There are a few complex assets on the Asset Store, but their licensing is not quite obvious, and I hesitate to open source my projects when using those assets.</description>
    </item>
    
    <item>
      <title>USB devices won’t show up on VMware’s list</title>
      <link>/post/197-usb-vmware/</link>
      <pubDate>Tue, 27 Nov 2018 12:00:00 +0000</pubDate>
      
      <guid>/post/197-usb-vmware/</guid>
      <description>I just had an issue where some of my USB devices (e.g. an iPhone) were not showing up on VMware’s VM&amp;gt;Removable Devices menu.
The reason was, for some reason, the VMware USB Arbitration Service was stopped. Starting it manually solved the issue.</description>
    </item>
    
    <item>
      <title>RestSharp returns 0 for custom ASP.NET Core middleware response</title>
      <link>/post/196-restsharp-0-middleware/</link>
      <pubDate>Sun, 26 Aug 2018 12:00:00 +0000</pubDate>
      
      <guid>/post/196-restsharp-0-middleware/</guid>
      <description>A normal behavior of RestSharp is to return StatusCode = 0 for responses that won’t go through (e.g. unreachable server). However, a tricky behavior of RestSharp is to also return 0 if the response has content, but the Content-Length is undefined.
If you are confused why your RestSharp is returning 0 while Postman and Chrome work fine, make sure you are setting the response Content-Length to the actual content length.</description>
    </item>
    
    <item>
      <title>Change Image Format in C#</title>
      <link>/post/195-change-image-format-cs/</link>
      <pubDate>Mon, 23 Jul 2018 12:00:00 +0000</pubDate>
      
      <guid>/post/195-change-image-format-cs/</guid>
      <description>SkiaSharp is a Xamarin-friendly NuGet that lets you do powerful image processing and rendering tasks. You can use it to quickly resize, compress or re-encode your images (i.e. change their format). This example shows how to change a JPEG file to PNG with SkiaSharp:
using (var istream = File.OpenRead(originalPath)) using (var skBitmap = SKBitmap.Decode(istream)) using (var image = SKImage.FromBitmap(skBitmap)) using (var ostream = File.OpenWrite(newPath)) image.Encode(SKEncodedImageFormat.Png, 100) .SaveTo(ostream); </description>
    </item>
    
    <item>
      <title>Images captured by iOS show up rotated on Android</title>
      <link>/post/194-images-ios-android-rotated/</link>
      <pubDate>Mon, 23 Jul 2018 12:00:00 +0000</pubDate>
      
      <guid>/post/194-images-ios-android-rotated/</guid>
      <description>When you capture a photo with TakePhotoAsync on the iOS, regardless of the SaveMetaData flag or RotateImage, it might be stored rotated. However, you won’t notice it on the iOS itself, or on Windows, since the orientation information is stored in the EXIF metadata of the captured JPEG file.
iOS or Windows show the image correctly because they take into account the EXIF orientation, but the Image view of Xamarin.Forms on Android ignores this flag, thus making the image show up as-is, i.</description>
    </item>
    
    <item>
      <title>Checking whether a DLL is 32-bit or 64-bit</title>
      <link>/post/193-dll-32-64-bit-check/</link>
      <pubDate>Thu, 07 Jun 2018 12:00:00 +0000</pubDate>
      
      <guid>/post/193-dll-32-64-bit-check/</guid>
      <description>A very easy method to check whether a particular DLL is x86-64 compatible or not is by using the file command in Linux. If you have bash installed on your Windows, you can type:
file MY_DLL.dll  If it’s a 64-bit DLL, you will see:
PE32+ executable (DLL) (GUI) x86-64, for MS Windows  Otherwise, it prints:
PE32 executable (DLL) (GUI) Intel 80386, for MS Windows  </description>
    </item>
    
    <item>
      <title>mpc.exe outputs an empty Resolver</title>
      <link>/post/192-mpc-empty-resolver/</link>
      <pubDate>Wed, 30 May 2018 12:00:00 +0000</pubDate>
      
      <guid>/post/192-mpc-empty-resolver/</guid>
      <description>In order to use MessagePack on the iOS or in general with AOT, you need to use mpc.exe to generate a resolver before building your main projects. Since Xamarin and ASP.NET are all about code sharing, usually a good practice is to create a shared project or a library containing model definitions, and referencing it in both server and client projects.
This raises the question as where to embed the script to run mpc.</description>
    </item>
    
    <item>
      <title>Resetting Windows 10 bash user password</title>
      <link>/post/191-resetting-windows-10-bash-password/</link>
      <pubDate>Tue, 29 May 2018 12:00:00 +0000</pubDate>
      
      <guid>/post/191-resetting-windows-10-bash-password/</guid>
      <description>If you have forgotten your bash user password on Windows 10, there is a way to log in as root to reset that user’s password using passwd.
First, make sure all bash windows are closed. This is important as if one bash instance is open, this may not work:
Open a Command Prompt as Administrator. You can do that by typing cmd in the Start menu and pressing CTRL+Shift+Enter. Run: ubuntu config --default-user root The previous command tells bash to log in as root the next time it’s started.</description>
    </item>
    
    <item>
      <title>Solve &#34;The &#34;User7ZipPath&#34; parameter is not supported&#34;</title>
      <link>/post/189-solve-the-user7zippath/</link>
      <pubDate>Sun, 27 May 2018 12:00:00 +0000</pubDate>
      
      <guid>/post/189-solve-the-user7zippath/</guid>
      <description>This can happen when building a Xamarin project while using certain libraries. What can help is:
 Update or install the latest version of Xamarin.Build.Download NuGet. Close all Visual Studio windows. Delete all the obj, bin, .vs folders, as well as the local packages folder in your solution root. Delete the global NuGet cache from ~\.nuget Load the Solution again, Rebuild, and hopefully the problem will go away!  </description>
    </item>
    
    <item>
      <title>Solving &#34;Native linking failed&#34; issues running Xamarin.iOS on Simulator</title>
      <link>/post/190-solving-native-linking-failed-ios/</link>
      <pubDate>Sun, 27 May 2018 12:00:00 +0000</pubDate>
      
      <guid>/post/190-solving-native-linking-failed-ios/</guid>
      <description>Some external libraries will cause the project fail to build on the iPhoneSimulator (e.g. x86_64) target. The resulting errors can be:
Native linking failed. Please review the build log. Native linking error: 1 duplicate symbol for architecture x86_64 Duplicate symbol in: /Users/admin/Library/Caches/Xamarin/mtbs/builds/.../obj/iPhoneSimulator/Debug/mtouch-cache/x86_64/main.o (Location related to previous error) Duplicate symbol in: /Users/admin/Library/Caches/Xamarin/mtbs/builds/.../obj/iPhoneSimulator/Debug/mtouch-cache/leveldb-library(leveldb_main.o) (Location related to previous error) Native linking failed, duplicate symbol: &#39;_main&#39;.  Sometimes you can make the build work by adding --registrar:static in the Additional mtouch arguments (MtouchExtraArgs) setting of the iOS project properties.</description>
    </item>
    
    <item>
      <title>EF / SQL Server writes too slow?</title>
      <link>/post/188-ef-sql-server-writes-slow/</link>
      <pubDate>Thu, 11 May 2017 12:00:00 +0000</pubDate>
      
      <guid>/post/188-ef-sql-server-writes-slow/</guid>
      <description>I was using Entity Framework Core on a project which required a large amount of writes (inserts and updates) to a SQL Server 2017 database. The operation was extremely slow, in the order of several hours/half a day. I figured out that it was due to the EF overhead for tracking changes. Setting the following boolean to false saves a lot of time, if you have to do a lot of writes:</description>
    </item>
    
    <item>
      <title>Xamarin.Android Rounded Corners Masked Layout</title>
      <link>/post/187-xamarin-android-rounded-corners/</link>
      <pubDate>Sat, 20 Aug 2016 12:00:00 +0000</pubDate>
      
      <guid>/post/187-xamarin-android-rounded-corners/</guid>
      <description>If you want to create a FrameLayout that has real rounded corners and clips its children beyond its corners, you can use the following class, which is a port of an answer on StackOverflow. You should replace Constants.PackageName with your Android package name, e.g. com.mycompany.myapp.
using Android.Content; using Android.Graphics; using Android.Runtime; using Android.Util; using Android.Widget; namespace UIWidgets.Android { [Register(Constants.PackageName + &amp;#34;.UIWidgets.Android.RoundedCornerLayout&amp;#34;)] public class RoundedCornerLayout : FrameLayout { const float CornerRadius = 20.</description>
    </item>
    
    <item>
      <title>REST requests with Xamarin and RestSharp</title>
      <link>/post/186-rest-xamarin-restsharp/</link>
      <pubDate>Fri, 08 Jul 2016 12:00:00 +0000</pubDate>
      
      <guid>/post/186-rest-xamarin-restsharp/</guid>
      <description>RestSharp (available on NuGet) is a clean way to send HTTP requests and handle their response. As a portable package, you can use it in your Xamarin.iOS and Xamarin.Android applications. The following example, POSTs a serialized JSON body, created automatically from a C# class, to an endpoint located at https://myserver.com/api/messages/message. It also sends a token parameter inside the query string:
public class MessageDTO : DTO { public string Sender { get; set; } public string Recipient { get; set; } public string Body { get; set; } } public static class PinHelper { async void SendMessage(MessageDTO dto) { const string ApiPath = &amp;#34;https://myserver.</description>
    </item>
    
    <item>
      <title>Tips and Tricks on Using SQLite-Net with Xamarin.iOS</title>
      <link>/post/185-tips-sqlite-net/</link>
      <pubDate>Fri, 24 Jun 2016 12:00:00 +0000</pubDate>
      
      <guid>/post/185-tips-sqlite-net/</guid>
      <description>SQLite-Net is a nice library compatible with Xamarin that lets you create and use a SQLite database as the local data source of your application. It is ultra portable as it comes in only two C# files, one of which is for asynchronous operations. You can easily get it from NuGet and get started with it.
Creating a database (if not exists) The first step in using SQLite-Net is creating a database, and its tables.</description>
    </item>
    
    <item>
      <title>Batch resizing images with Python and Pillow</title>
      <link>/post/184-batch-resizing-python/</link>
      <pubDate>Wed, 24 Feb 2016 12:00:00 +0000</pubDate>
      
      <guid>/post/184-batch-resizing-python/</guid>
      <description>Pillow is a fork of PIL (Python Imaging Library) which works on Python 3. It provides convenient methods to manipulate and convert image files with just a few lines of code. Usually every mobile application platform requires the same image to be provided in multiple sizes, and since resizing these images manually can be cumbersome, Pillow and Python can come to save the day by automating these processes.
from PIL import Image inputName = &amp;#34;image.</description>
    </item>
    
    <item>
      <title>Traces of Love Random Development Notes</title>
      <link>/post/183-tol/</link>
      <pubDate>Tue, 16 Feb 2016 12:00:00 +0000</pubDate>
      
      <guid>/post/183-tol/</guid>
      <description>Last week we released a new Neat Games title: Traces of Love, with a romantic theme aimed for Valentine’s day. This was a remake of BLAMMO: Trace of Love that we published in 2013, with new levels, new gameplay mechanics, and of course, a different game engine. You can download Traces of Love from the App Store, or if you have an Android device, from the Play Store. A version with limited features is also available on the Windows Store, if you prefer to try that one.</description>
    </item>
    
    <item>
      <title>Exporting Unity frames as Animated GIFs</title>
      <link>/post/182-exporting-unity-frames-gif/</link>
      <pubDate>Sat, 13 Feb 2016 12:00:00 +0000</pubDate>
      
      <guid>/post/182-exporting-unity-frames-gif/</guid>
      <description>Recently I discovered a Unity-compatible library that allows exporting Unity textures into animated GIFs. This library is extremely easy to use and platform independent. It is called GifEncoder, which is based on NGif, an older C# based project for encoding GIFs.
To use it, just copy the GifEncoder folder to your Assets directory, point a camera at what you would like to record, and in each frame send the pixels from the camera’s render target to the encoder:</description>
    </item>
    
    <item>
      <title>Accessing Vimeo and YouTube APIs with Xamarin.iOS</title>
      <link>/post/181-accessing-vimeo-youtube-ios/</link>
      <pubDate>Thu, 24 Sep 2015 12:00:00 +0000</pubDate>
      
      <guid>/post/181-accessing-vimeo-youtube-ios/</guid>
      <description>The Uptred Source library allows you to build C# based applications for iOS that use Vimeo and YouTube APIs. You can easily authorize a Vimeo or YouTube account, and afterwards query data from the server or even have resumable uploads. This post covers the basics of using Uptred Source to build an application that communicates with Vimeo Advanced API and YouTube API using Xamarin.iOS.
First, you need to create a blank Xamarin.</description>
    </item>
    
    <item>
      <title>First wave of Uptred products released!</title>
      <link>/post/180-first-wave-uptred-products/</link>
      <pubDate>Thu, 24 Sep 2015 12:00:00 +0000</pubDate>
      
      <guid>/post/180-first-wave-uptred-products/</guid>
      <description>&lt;p&gt;During the past few weeks, my team has been working on Uptred, a highly ambitious project that aims to give its users a set of tools that help them to manage and upload their videos from any of their devices to their favorite online providers. The first stage of this project finished last month with the releases of the first versions of &lt;strong&gt;Uptred Source&lt;/strong&gt; and &lt;strong&gt;Uptred Shell&lt;/strong&gt; on the &lt;a href=&#34;https://components.xamarin.com/view/uptred&#34;&gt;Xamarin Component Store&lt;/a&gt; and on the &lt;a href=&#34;http://uptred.com&#34;&gt;Uptred website&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;center&gt;&lt;iframe src=&#34;https://player.vimeo.com/video/140538598&#34; width=&#34;500&#34; height=&#34;281&#34; frameborder=&#34;0&#34; allowfullscreen=&#34;allowfullscreen&#34;&gt;&lt;/iframe&gt;&lt;/center&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Mono Frustrations: &#34;The authentication or decryption has failed.&#34;</title>
      <link>/post/179-mono-authentication-decryptions-failed/</link>
      <pubDate>Wed, 01 Jul 2015 12:00:00 +0000</pubDate>
      
      <guid>/post/179-mono-authentication-decryptions-failed/</guid>
      <description>Often calling the AuthenticateAsClient method of an SslStream results in the &amp;ldquo;The authentication or decryption has failed.&amp;rdquo; error, because Mono cannot verify the certificate. As a last resort, the error can be circumvented by disabling the certificate validation by adding the following line to the code:
ServicePointManager.ServerCertificateValidationCallback += (o, certificate, chain, errors) =&amp;gt; true;  If you are creating the SslStream in a using block, you can do this instead:</description>
    </item>
    
    <item>
      <title>Mono Frustrations: JSON Deserializer and Booleans</title>
      <link>/post/177-mono-json-deserializer/</link>
      <pubDate>Wed, 01 Jul 2015 12:00:00 +0000</pubDate>
      
      <guid>/post/177-mono-json-deserializer/</guid>
      <description>The JavaScriptSerializer of Mono requires boolean values to be surrounded with quotes in order for the JSON strings to be deserialized; which is not the case in .NET framework.
Example:
{&amp;#34;isDefault&amp;#34;: true} //Invalid in Mono. Valid in .NET {&amp;#34;isDefault&amp;#34;: &amp;#34;true&amp;#34;} //Valid in Mono.</description>
    </item>
    
    <item>
      <title>Mono Frustrations: WebRequest</title>
      <link>/post/178-mono-webrequest/</link>
      <pubDate>Wed, 01 Jul 2015 12:00:00 +0000</pubDate>
      
      <guid>/post/178-mono-webrequest/</guid>
      <description>The WebRequest class has many issues, especially in Mono. A major problem occurs when the response code is an HTTP error (e.g. 4xx), for which the class throws an Exception, causing a Runtime Error if it goes unhandled. This is not a big deal in .NET, because the request.GetResponse() call can be surrounded by a try/catch block that catches the thrown WebException, which still contains the response in its Response property.</description>
    </item>
    
    <item>
      <title>Collaborative Whiteboard Tutorial, Part One</title>
      <link>/post/175-collaborative-whiteboard-1/</link>
      <pubDate>Sun, 15 Feb 2015 12:00:00 +0000</pubDate>
      
      <guid>/post/175-collaborative-whiteboard-1/</guid>
      <description>This tutorial aims to demonstrate how to build a real-time communication channel between one server and multiple clients (i.e. browsers), simply by using JavaScript. This project uses Node.js for its server-side backend, and targets Google Chrome for the client side. However, the outcome also works well on other browsers, including Internet Explorer. We call this application QuickDraw.
The end result is supposed to be a web service that stores multiple whiteboards in different rooms, and each client can simply type in a room name and observe or modify the contents of the whiteboard.</description>
    </item>
    
    <item>
      <title>Collaborative Whiteboard Tutorial, Part Two</title>
      <link>/post/176-collaborative-whiteboard-2/</link>
      <pubDate>Sun, 15 Feb 2015 12:00:00 +0000</pubDate>
      
      <guid>/post/176-collaborative-whiteboard-2/</guid>
      <description>Part one of this tutorial focused on the description of the project and the server-side code. In this part, we write the client side code that is supposed to handle the drawing operations on an HTML canvas element.
As previously discussed, our web service is supposed to handle multiple separate whiteboards (which we call rooms). Therefore the client needs to know which room it is working on. To specify this, we pass the room name via a query string parameter, room.</description>
    </item>
    
    <item>
      <title>Relocating Outlook Data Files</title>
      <link>/post/174-relocating-outlook-data-files/</link>
      <pubDate>Tue, 23 Dec 2014 12:00:00 +0000</pubDate>
      
      <guid>/post/174-relocating-outlook-data-files/</guid>
      <description>Outlook 2013 data files (ost, pst) can be really huge, especially if you use emails too much, or have a lot of attachments in your accounts. By default, Outlook keeps these files in the APPDATA folder, and even if you move your home folder to another drive, it still uses the old folder in the original APPDATA path. There is no direct way to move this folder, and this can be quite annoying if the files are saved on a low capacity SSD.</description>
    </item>
    
    <item>
      <title>Magnetic Interaction with Mobile Games</title>
      <link>/post/173-magnetic-interaction-mobile-games/</link>
      <pubDate>Wed, 17 Dec 2014 12:00:00 +0000</pubDate>
      
      <guid>/post/173-magnetic-interaction-mobile-games/</guid>
      <description>I have been working on this for a while now, but now it’s time to finally reveal it.
In these videos, you can see the novel mobile interaction method I invented, called the “Magnetic Joystick”. The algorithm allows different objects to be used to wirelessly control mobile games like a joystick. For details, you can refer to our publication at NORDICHI 2014: http://dl.acm.org/citation.cfm?id=2670186
[embed]https://www.youtube.com/watch?v=ykfMi4W83MI[/embed]
[embed]https://www.youtube.com/watch?v=vFnE_MRCyAQ[/embed]</description>
    </item>
    
    <item>
      <title>VimeoDotNet 3 on GitHub</title>
      <link>/post/172-vimeodotnet-3-github/</link>
      <pubDate>Tue, 19 Aug 2014 12:00:00 +0000</pubDate>
      
      <guid>/post/172-vimeodotnet-3-github/</guid>
      <description>Concerning this new Vimeo API version 3, I have managed to implement the functionality that allows you to:
 Generate an authorization URL. Get an access token. Call an API method and get a deserialized JSON response in form of a Dictionary&amp;lt;string,object&amp;gt;.  The source code is available under MIT license on GitHub. For more information on using it, take a look at the Readme.txt file in the project. Meanwhile I will be working on implementing some straightforward upload functionality like the previous version of VimeoDotNet.</description>
    </item>
    
    <item>
      <title>MELODIE is available for iOS and Android!</title>
      <link>/post/171-melodie-available/</link>
      <pubDate>Tue, 05 Aug 2014 12:00:00 +0000</pubDate>
      
      <guid>/post/171-melodie-available/</guid>
      <description>Remember the game of Simon? MELODIE is a similar but more challenging game of sound and memory, in which you have to memorize an expanding sequence of tiles in the correct order, and tap on them when it’s your turn. Your high scores will be stored on a Game Center leaderboard and you can show the world how awesome your memory is!
Download from App Store: https://itunes.apple.com/us/app/melodie/id903654811?ls=1&amp;amp;mt=8
Download from Google Play: https://play.</description>
    </item>
    
    <item>
      <title>Conversion to Dalvik error while Exporting APK</title>
      <link>/post/170-conversion-dalvik-error-apk/</link>
      <pubDate>Thu, 31 Jul 2014 12:00:00 +0000</pubDate>
      
      <guid>/post/170-conversion-dalvik-error-apk/</guid>
      <description>Sometimes while trying to export an APK using Eclipse, it gives the error “Conversion to Dalvik format failed with error 1.” However meanwhile if you try to run the project normally on a debug device, it launches just fine. For example, this often happens when you try to make an APK out of a Cocos2d-x project.
This error is due to the crapball design of Eclipse (let’s pile more crap on a crap to increase functionality), but fortunately, there’s an easy solution to fix this problem: All you need to do to fix this problem is to disable automatic build from the Project menu, clean everything and retry exporting the APK.</description>
    </item>
    
    <item>
      <title>Game of Drones Released!</title>
      <link>/post/169-game-of-drones-released/</link>
      <pubDate>Thu, 10 Jul 2014 12:00:00 +0000</pubDate>
      
      <guid>/post/169-game-of-drones-released/</guid>
      <description>I am pleased to announce that Game of Drones is now out on the App Store for free! In this addictive puzzle-based game, you have to lure the hungry Noise-Activated Drones into black holes and collect the items in each level.
There are three episodes, each with unique game items and mechanics that you will discover along the way, plus two different game modes! If that won’t still satisfy you, there are six mini-games built-in that you can unlock by progressing in the story mode!</description>
    </item>
    
    <item>
      <title>Gotchas: Using Cocos2d-x libExtensions and libNetwork</title>
      <link>/post/168-gotchas-cocos2dx-libextensions/</link>
      <pubDate>Sun, 06 Jul 2014 12:00:00 +0000</pubDate>
      
      <guid>/post/168-gotchas-cocos2dx-libextensions/</guid>
      <description>This tutorial is compatible with Cocos2d-x 3.0.
Some features of Cocos2d-x such as EditBox and HttpClient are not in the main libCocos2d project and in order to access them, other projects should be imported to the solution first. In this post, I am going to explain how to import and link external projects to the main game project. This post can also help people with general problems regarding referencing C++ projects in Visual Studio.</description>
    </item>
    
    <item>
      <title>Gotchas: Post shader effects in Cocos2d-x</title>
      <link>/post/166-gotchas-post-shader-effects-cocos2dx/</link>
      <pubDate>Fri, 04 Jul 2014 12:00:00 +0000</pubDate>
      
      <guid>/post/166-gotchas-post-shader-effects-cocos2dx/</guid>
      <description>This tutorial is compatible with Cocos2d-x v3.1.
There might be times that you want to apply an effect to the whole scene and not just an object. For example, you might want to make your scene black and white or add a noise, vignette or glow to your game. In such cases, setting the same GLProgram to each single node in the game probably wouldn’t give you the desired outcome, because for each different node, the effect will run independently and is limited to the edges of the node, and thus you can detect a non-homogeneity in the resulting image.</description>
    </item>
    
    <item>
      <title>Gotchas: Repeating textures in Cocos2d-x</title>
      <link>/post/167-gotchas-repeating-textures-cocos2dx/</link>
      <pubDate>Fri, 04 Jul 2014 12:00:00 +0000</pubDate>
      
      <guid>/post/167-gotchas-repeating-textures-cocos2dx/</guid>
      <description>This tutorial is compatible with Cocos2d-x v3.1.
Repeating textures can be used to make tiled backgrounds, floors, and for many other purposes. The stars in the image shown above are an example of this. The easiest way to repeat a texture is to put it in a separate file with power-of-two dimensions (also known as a POT texture), and display it using a Sprite with its wrapS and wrapT TexParams values set to GL_REPEAT.</description>
    </item>
    
    <item>
      <title>Neat Bundle Released!</title>
      <link>/post/165-neat-bundle-released/</link>
      <pubDate>Sat, 21 Jun 2014 12:00:00 +0000</pubDate>
      
      <guid>/post/165-neat-bundle-released/</guid>
      <description>I am happy to announce that Neat Bundle is released on iTunes App Store and is available for iPhones and iPads for free! So what are you waiting for, go grab your own version and start playing!
Also in other news, Naturals 2 is also available now for free from the App Store!
Neat Bundle is a collection of super-fun casual games in an arcade-like environment. Optimized for Retina iPad, it gives you a great high quality arcade experience on your tablet.</description>
    </item>
    
    <item>
      <title>Gotchas! Shaders in Cocos2d-x</title>
      <link>/post/164-gotchas-shaders-cocos2dx/</link>
      <pubDate>Fri, 20 Jun 2014 12:00:00 +0000</pubDate>
      
      <guid>/post/164-gotchas-shaders-cocos2dx/</guid>
      <description>I am planning to write quick tutorials about features in Cocos2d-x that are a bit tricky to use and are rarely (or not at all) discussed in tutorials and forums around the Internet. Basically these come from personal experience gained after not finding any good resources on the Internet. The first bunch of tutorials are going to be around the topic of shader effects (Fragment shaders), render targets and post effects.</description>
    </item>
    
    <item>
      <title>New titles published on Google Play!</title>
      <link>/post/163-new-titles-google-play/</link>
      <pubDate>Tue, 01 Oct 2013 12:00:00 +0000</pubDate>
      
      <guid>/post/163-new-titles-google-play/</guid>
      <description>My new game “Naturals” which is a set of brain teasing puzzles based on natural numbers is now available on Google Play Store free of charge! This version of the game contains fifteen puzzles, and more puzzles will come in future updates. For more information about Naturals, visit its own page on my blog.
In addition, the first Quickie title, “Ball Fall” is also available on Google Play. More information about Ball Fall is available here.</description>
    </item>
    
    <item>
      <title>Fixing Cocos2D-x exe crash</title>
      <link>/post/162-fixing-cocos2dx-exe-crash/</link>
      <pubDate>Fri, 06 Sep 2013 12:00:00 +0000</pubDate>
      
      <guid>/post/162-fixing-cocos2dx-exe-crash/</guid>
      <description>During my cocos2D-x development with Visual Studio, I noticed that I can run my games pretty fine when I execute them via Visual Studio (F5 or Shift+F5,) but when I try to run the .exe file directly, it crashes.
After some trial and errors, I figured out that this crash is due to the .exe not being able to find game resources. To fix this crash just copy whatever’s inside your Resources folder to your Debug.</description>
    </item>
    
    <item>
      <title>Fixing Doom3 BFG Edition on multi-display setups</title>
      <link>/post/161-fixing-doom3/</link>
      <pubDate>Sat, 20 Jul 2013 12:00:00 +0000</pubDate>
      
      <guid>/post/161-fixing-doom3/</guid>
      <description>I have a triple display setup with two 1080p monitors and a third 4:3 one, and I had some free time to kill, so I decided to give Doom3 BFG edition a try. The problem is that, for me it started full screen in a display that I didn’t want to play on, and in a screwed up resolution. As there are no helpful options in the settings menu, it was tricky to solve this issue, but finally I managed to fix it.</description>
    </item>
    
    <item>
      <title>Improved Auto-complete in Neat Console</title>
      <link>/post/160-improved-autocomplete-neat-console/</link>
      <pubDate>Mon, 23 Jul 2012 12:00:00 +0000</pubDate>
      
      <guid>/post/160-improved-autocomplete-neat-console/</guid>
      <description>While working on my next project “Lumi,” I felt the need to improve the auto-complete feature of Neat game engine’s console. I fixed some bugs in the console and added a “custom auto-complete” feature that allows each command to have its own algorithm for TAB auto-complete. The Console.AddCommand now takes a third optional parameter which is the method that returns the auto-complete results for each command based on the arguments the user entered in the console.</description>
    </item>
    
    <item>
      <title>VimeoDotNet, available now for Metro!</title>
      <link>/post/159-vimeodotnet-metro/</link>
      <pubDate>Sun, 01 Jul 2012 12:00:00 +0000</pubDate>
      
      <guid>/post/159-vimeodotnet-metro/</guid>
      <description>After lots of struggling, I managed to port the VimeoDotNet code to Windows Runtime and Metro platform. Developing Metro style applications is very frustrating for a long time .net developer and needs a lot of time to get used to it. Most of the familiar classes in .net that we were used to, are replaced with Windows Runtime classes in the Windows namespace. The old .net namespaces are still there, but are filled with nonsense.</description>
    </item>
    
    <item>
      <title>Available Now: Vimeo for Windows Advanced Uploader</title>
      <link>/post/158-available-now-vfw-advanced-uploader/</link>
      <pubDate>Tue, 19 Jun 2012 12:00:00 +0000</pubDate>
      
      <guid>/post/158-available-now-vfw-advanced-uploader/</guid>
      <description>Vimeo for Windows Advanced Uploader is now available as a free download. Some of its features are:
 Manual control over chunk size and the number of chunks, so users with fast and reliable connections can upload fewer and larger chunks and users with slow and unreliable connections can upload in smaller chunks. Parallel chunk uploading: Chunks can be uploaded in parallel to increase the upload speed. Control over the order of chunks for uploading Supports replacing existing videos Resume support Proxy support Multi-user support: OAuth Tokens and Upload Tickets can be stored in individual files and used when needed.</description>
    </item>
    
    <item>
      <title>VimeoDotNet Updated</title>
      <link>/post/157-vimeodotnet-updated/</link>
      <pubDate>Fri, 15 Jun 2012 12:00:00 +0000</pubDate>
      
      <guid>/post/157-vimeodotnet-updated/</guid>
      <description>The process of uploading videos to Vimeo might be a little confusing. The updated version of VimeoDotNet contains two new methods that take care of all upload steps. With these methods you can just tell them what file you want to upload, and they take care of the rest.
To upload a file in a single part, you can use the VimeoClient.Upload method:
string video_id = vc.Upload(@&amp;#34;D:\myvideo.mp4&amp;#34;);  If the file is too big to fit entirely in the memory, you can use the second method VimeoClient.</description>
    </item>
    
    <item>
      <title>Introducing Kintouch</title>
      <link>/post/156-kintouch/</link>
      <pubDate>Tue, 29 May 2012 12:00:00 +0000</pubDate>
      
      <guid>/post/156-kintouch/</guid>
      <description>I began adding Kinect skeletal tracking and speech helpers to Neat Game Engine since Kinect SDK Beta 2 came out. These helpers were made available under the KinectEngine class in the Neat.Components namespace. After the release of SDK v1.0, I began having troubles with using my Kinect, and I don’t know yet why these problems are happening. Often times when I’m trying to execute my code I get Low Bandwidth errors from the SDK, even with all my other USB devices disconnected.</description>
    </item>
    
    <item>
      <title>Speech and Skeletal Tracking in River Raid X</title>
      <link>/post/154-speech-skeletal-tracking/</link>
      <pubDate>Fri, 23 Dec 2011 12:00:00 +0000</pubDate>
      
      <guid>/post/154-speech-skeletal-tracking/</guid>
      <description>I’ve been experimenting with Speech SDK lately and was trying to find a way to control games with sounds. In this video, you can see me control River Raid X with Kinect skeletal tracking and voice.
[vimeo http://www.vimeo.com/34110392 w=549&amp;amp;h=309]
Helper classes for both Speech SDK and NUI (Kinect Natural User Interface) are implemented in the latest changeset of Neat Game Engine’s source code. Implementing voice commands in games for simple tasks such as starting the game, pausing and resuming it, etc.</description>
    </item>
    
    <item>
      <title>Kinect SDK and XNA</title>
      <link>/post/153-kinect-sdk-xna/</link>
      <pubDate>Tue, 06 Dec 2011 12:00:00 +0000</pubDate>
      
      <guid>/post/153-kinect-sdk-xna/</guid>
      <description>It seems many people are looking for the way to draw skeletons and store the RGB camera data into Texture2Ds. The KinectEngine class which is included in Neat game engine does all these stuff, but here’s the direct way to do these in XNA:
1. Initialization First we have to initialize the Nui Runtime. Assuming we are going to use the first available Kinect device connected to our system, we can write:</description>
    </item>
    
    <item>
      <title>Kinectoid</title>
      <link>/post/152-kinectoid/</link>
      <pubDate>Wed, 23 Nov 2011 12:00:00 +0000</pubDate>
      
      <guid>/post/152-kinectoid/</guid>
      <description>The first Kinect-based sample for Neat game engine is available at http://kinectoid.codeplex.com.
To be able to build this sample, first you have to install the official Kinect SDK Beta 2 and obtain the latest version of the Neat source code and build it with the KINECT directive.
Neat currently supports Kinect through a component class named KinectEngine. To begin using Kinect in your Neat based XNA games, you have to follow these simple steps:</description>
    </item>
    
    <item>
      <title>Integrating Kinect into Neat Game Engine</title>
      <link>/post/151-integrating-kinect-into-neat/</link>
      <pubDate>Tue, 22 Nov 2011 12:00:00 +0000</pubDate>
      
      <guid>/post/151-integrating-kinect-into-neat/</guid>
      <description>I’ve been playing with the Kinect SDK lately and I managed to add Kinect support to Neat. Here’s a video of me, controlling the camera in Sectors with the Kinect sensor.
[vimeo http://vimeo.com/32176359 w=549&amp;amp;h=309]</description>
    </item>
    
    <item>
      <title>New Releases</title>
      <link>/post/150-new-releases/</link>
      <pubDate>Wed, 16 Nov 2011 12:00:00 +0000</pubDate>
      
      <guid>/post/150-new-releases/</guid>
      <description>A few days ago I uploaded the final build of my Atari 2600’s River Raid clone to CodePlex and because it’s based on Neat game engine, I updated the Neat project as well. You can read more about the River Raid X project in its own page, so I’ll just talk about the new features of Neat in this new release right now.
It has been a slow year and I didn’t have much time to work on games, so there aren’t that many new features in the new release of Neat Engine, however the code is much more polished and stable.</description>
    </item>
    
    <item>
      <title>VimeoDotNet just got cooler.</title>
      <link>/post/149-vimeodotnet-just-got-cooler/</link>
      <pubDate>Sat, 20 Aug 2011 12:00:00 +0000</pubDate>
      
      <guid>/post/149-vimeodotnet-just-got-cooler/</guid>
      <description>VimeoDotNet by far is the easiest and most complete Vimeo Advanced API wrapper for .NET. You could set it up to make your app communicate with Vimeo Advanced API in under five minutes. But since some of its OAuth code was based on another wrapper, it had some junk attached to itself, so to be able to use it you had to add two additional weird projects to your solution, which was unpleasant since they contained stuff that were practically useless.</description>
    </item>
    
    <item>
      <title>Loading Transparent PNGs in OpenGL for Dummies!</title>
      <link>/post/148-loading-transparent-pngs/</link>
      <pubDate>Thu, 30 Jun 2011 12:00:00 +0000</pubDate>
      
      <guid>/post/148-loading-transparent-pngs/</guid>
      <description>I’m writing this because as far as I can remember, nothing has taken my time this much. I woke up yesterday and began working on a PNG Importer for my new OpenGL/C++ based side scroller game engine which I’m going to use to make my first iOS games, and after tons of research I realized it’s three in the morning and I haven’t yet figured out how to load transparent PNGs in my game.</description>
    </item>
    
    <item>
      <title>Download Vimeo for Windows</title>
      <link>/post/147-downloading-vimeo-for-windows/</link>
      <pubDate>Thu, 05 May 2011 12:00:00 +0000</pubDate>
      
      <guid>/post/147-downloading-vimeo-for-windows/</guid>
      <description>[vimeo http://www.vimeo.com/7032484 w=549&amp;amp;h=309]
Vimeo for Windows 2.0 is now available for download. Check out this page for more details!</description>
    </item>
    
    <item>
      <title>Vimeo Upload API</title>
      <link>/post/146-vimeo-upload-api/</link>
      <pubDate>Sat, 23 Apr 2011 12:00:00 +0000</pubDate>
      
      <guid>/post/146-vimeo-upload-api/</guid>
      <description> After playing with the Upload API for about two days, I managed to get all methods working and upload videos successfully to vimeo.
The VimeoDotNet project is updated and contains all the code needed to upload videos to vimeo: http://vimeodotnet.codeplex.com/
New Methods:  videos.upload videos.upload.checkTicket videos.upload.complete videos.upload.getQuota videos.upload.getTicket videos.upload.verifyChunks  </description>
    </item>
    
    <item>
      <title>Vimeo for Windows 2.0 Update</title>
      <link>/post/145-vfw-2-update/</link>
      <pubDate>Tue, 12 Apr 2011 12:00:00 +0000</pubDate>
      
      <guid>/post/145-vfw-2-update/</guid>
      <description>A milestone is reached. I’m almost ready to publish the next version of Vimeo for Windows, and the engine that drives this application is available for download right now from http://vimeodotnet.codeplex.com.</description>
    </item>
    
    <item>
      <title>Vimeo API</title>
      <link>/post/144-vimeo-api/</link>
      <pubDate>Mon, 28 Mar 2011 12:00:00 +0000</pubDate>
      
      <guid>/post/144-vimeo-api/</guid>
      <description>About two years ago, I wrote “Vimeo for Windows” which was a Windows based client that allowed users to browse, watch and upload videos on vimeo.com.
[vimeo http://www.vimeo.com/7032484]
Few mounts later, Vimeo changed their authentication method to oAuth which made my application unusable. I didn’t have the time to implement oAuth back then, so I stopped working on the project.
Now, I decided it’s time to move back to the project and make a version 2.</description>
    </item>
    
    <item>
      <title>Sectors World Designer</title>
      <link>/post/143-sectors-world-designer/</link>
      <pubDate>Mon, 07 Mar 2011 12:00:00 +0000</pubDate>
      
      <guid>/post/143-sectors-world-designer/</guid>
      <description>I’ve been working on a 2.5D game engine named Sectors for the last couple of months. The graphics are almost done and I’m coding the designer tool right now.
Creating the level designer tool is taking more time that I thought. But it is definitely worth it to put more effort in perfecting the designer.
The main part that creates and modifies sectors’ properties is functioning, and I’m going to work on the Walls.</description>
    </item>
    
    <item>
      <title>Neat Update</title>
      <link>/post/142-neat-update/</link>
      <pubDate>Sat, 29 Jan 2011 12:00:00 +0000</pubDate>
      
      <guid>/post/142-neat-update/</guid>
      <description>Yesterday I published a new version of Neat game engine on it’s codeplex site. It has a bunch of cool new features including:
 Improved auto-complete in the console
 Loading scripts into memory
  Scripts can be loaded into memory using the load script as … command and can be treated as dynamic commands
 Allowing different colors to be shown on the console  Console output color can be changed by defining a special character as the color changer (Neat uses the @ character by default) and entering the specific color code after that.</description>
    </item>
    
    <item>
      <title>Stand Alone Neat Console</title>
      <link>/post/141-stand-alone-neat-console/</link>
      <pubDate>Tue, 14 Dec 2010 12:00:00 +0000</pubDate>
      
      <guid>/post/141-stand-alone-neat-console/</guid>
      <description>Today I made a few changes in Neat Console that allows it to be used outside a NeatGame class, as a stand alone component.
So, here’s how you can use Neat Console independently:
Create a regular Windows Game project.
Add a reference to Neat. (you can either do that by adding Neat project to your solution or just using the binary file. you don’t need to add any of Neat’s content files to your game.</description>
    </item>
    
    <item>
      <title>Loops in Neat Script</title>
      <link>/post/140-loops-in-neat-script/</link>
      <pubDate>Fri, 10 Dec 2010 12:00:00 +0000</pubDate>
      
      <guid>/post/140-loops-in-neat-script/</guid>
      <description>I recently implemented a bunch of new features in Neat Script and Console. Among these features are expression evaluation and conditions. These features make it possible to create loops in Neat Script files. here’s an example of a loop in Neat Script:
echo off echo Testing loop dv l 1 :loop echo (l)*(l)=((l)*(l)) inc l if ((l)&amp;lt;=10) goto loop echo Done! echo on end neatloop  So basically this is how you can create loops in Neat Script:</description>
    </item>
    
    <item>
      <title>River Raid X</title>
      <link>/post/139-river-raid-x/</link>
      <pubDate>Mon, 22 Nov 2010 12:00:00 +0000</pubDate>
      
      <guid>/post/139-river-raid-x/</guid>
      <description>Using XNA Game Studio and Neat Game engine, I managed to clone the classic River Raid game for Windows. You can download an almost-playable version of the game from it’s codeplex project page.
Read on to learn how I did it…
When I got started with XNA, I wanted to clone some of my favorite classic games. I made a list of games I wanted to clone, and in that list there was River Raid, an Atari 2600 game written by Carol Shaw, the first female video game designer.</description>
    </item>
    
    <item>
      <title>This is Neat!</title>
      <link>/post/138-this-is-neat/</link>
      <pubDate>Thu, 18 Nov 2010 12:00:00 +0000</pubDate>
      
      <guid>/post/138-this-is-neat/</guid>
      <description>Each time XNA People release a new version of XNA Game Studio, I have to perform a massive change in my code to make it compatible with the latest version of the framework, and I decide to change the name of my little game engine. So what I used to call RedBulb has became XNA 4.0 compatible, and is cleaner than ever, and from now on It’s going to be called “Neat”.</description>
    </item>
    
    <item>
      <title>Separating Axis Theorem (SAT)</title>
      <link>/post/137-sat/</link>
      <pubDate>Tue, 02 Nov 2010 12:00:00 +0000</pubDate>
      
      <guid>/post/137-sat/</guid>
      <description>In the past few weeks I was working on a Rigid-Body 2D Physics Simulator, and I came across many problems in the Collision Detection part. Collision Detection is one of the most important things in any physics engine so it must work perfectly.
After doing some research, I found the perfect algorithm to do the Collision Detection and Resolution for me, which is called SAT (short for Separating Axis Theorem)…</description>
    </item>
    
  </channel>
</rss>