<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>linux &#8211; Airtame</title>
	<atom:link href="https://airtame.com/blog/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>https://airtame.com/</link>
	<description>Wireless screen mirroring and digital signage &#124; Airtame</description>
	<lastBuildDate>Mon, 13 Jul 2026 20:28:22 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.1</generator>

<image>
	<url>https://airtame.com/wp-content/uploads/2018/06/cropped-airtame-logo-1-32x32.png</url>
	<title>linux &#8211; Airtame</title>
	<link>https://airtame.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Code quality at Airtame</title>
		<link>https://airtame.com/blog/code-quality-at-airtame/</link>
		
		<dc:creator><![CDATA[Airtame]]></dc:creator>
		<pubDate>Thu, 07 Jan 2016 08:56:25 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Code Quality]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[jenkins]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">https://32e994dd1033e2d92dbce-admin.hardypress.com/?p=1057</guid>

					<description><![CDATA[<p>The core of Airtame’s cross-platform streaming software is responsible for capturing a computer’s audio and video output, then encoding and transferring them wirelessly to the Airtame dongle, where the stream is decoded and rendered. The codebase consists of ~20K lines of C, plus a bit of Objective-C and C++, and it is currently being developed [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://airtame.com/blog/code-quality-at-airtame/">Code quality at Airtame</a> appeared first on <a rel="nofollow" href="https://airtame.com/">Airtame</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The core of Airtame’s cross-platform streaming software is responsible for capturing a computer’s audio and video output, then encoding and transferring them wirelessly to the Airtame dongle, where the stream is decoded and rendered.</p>
<p>The codebase consists of ~20K lines of C, plus a bit of Objective-C and C++, and it is currently being developed by a team of four <a href="https://airtame.com/blog/why-join-the-airtame-engineering-tribe/">engineers</a>. Over the past few months, we have focused on stabilizing our software and improving our engineering processes.</p>
<p>This post discusses some of the tools and processes we’ve utilized in an effort to maintain a high standard of code quality and evade the proverbial software tar pit.</p>
<p>Our first line of defense against Bad Code™ is compiling with the -Werror and -Wallflags, which cause compilation to fail in the presence of any warnings. This helps our engineers catch and fix simple mistakes very early in the development process. There’s also something very satisfying about watching dozens of source files being compiled without a single complaint from the compiler.</p>

      <div
         class="air-image air-padding-bottom--small air-image--small"
        
      >
        <img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-1063" src="/wp-content/uploads/2016/01/code-quality-at-airtame-1-2.png" alt="" width="600" height="164" /><div class="air-image__caption">Airtame's core compiles warning-free</div>
      </div>
    
<p>Airtame&#8217;s core compiles warning-freeWe use <a href="https://www.gerritcodereview.com/" target="_blank" rel="noopener">Gerrit</a> for code reviews and <a href="https://jenkins-ci.org/" target="_blank" rel="noopener">Jenkins</a> for continuous integration. When a developer pushes a change to Gerrit, several Jenkins jobs are automatically triggered to analyze our code and provide feedback on the changes.</p>
<p>The first of these jobs executes Qt’s <a href="https://wiki.qt.io/Early_Warning_System" target="_blank" rel="noopener">Simple Sanitizer</a>, which ensures that Git commit messages are well-formed and that committed code does not contain any trailing whitespace characters or conflict markers, among other things.</p>

      <div
         class="air-image air-padding-bottom--small air-image--small"
        
      >
        <img decoding="async" class="alignnone size-full wp-image-1064" src="/wp-content/uploads/2016/01/code-quality-at-airtame-2-1.png" alt="" width="600" height="127" /><div class="air-image__caption">Simple Sanitizer keeps our commit messages and source files clean</div>
      </div>
    
<p>While we don’t believe in one definitive “right way” to format C code, we do feel that it is beneficial to use a consistent coding standard (ours is heavily inspired by the <a href="https://www.kernel.org/doc/Documentation/CodingStyle" target="_blank" rel="noopener">Linux kernel coding style</a>). To enforce our coding standard, we run LLVM’s <a href="http://clang.llvm.org/docs/ClangFormat.html" target="_blank" rel="noopener">clang-format</a>, passing its output to a custom Python script which produces an HTML report.</p>

      <div
         class="air-image air-padding-bottom--small air-image--small"
        
      >
        <img decoding="async" class="alignnone size-full wp-image-1065" src="/wp-content/uploads/2016/01/code-quality-at-airtame-3-2.png" alt="" width="600" height="76" /><div class="air-image__caption">Improperly-formatted code and clang-format's suggested fix</div>
      </div>
    
<p>The next code quality check is performed by LLVM’s <a href="http://clang-analyzer.llvm.org/scan-build.html" target="_blank" rel="noopener">scan-build</a>, a deep static analyzer with a very nice <a href="https://wiki.jenkins-ci.org/display/JENKINS/Clang+Scan-Build+Plugin" target="_blank" rel="noopener">Jenkins plugin</a>. The beauty of scan-build is that it analyzes all possible paths through the code, enabling us to discover bugs before they materialize as runtime errors. We’ve found that scan-build is particularly good at detecting memory/resource management issues, especially those which are hidden in rarely-triggered edge cases.</p>

      <div
         class="air-image air-padding-bottom--small air-image--small"
        
      >
        <img loading="lazy" decoding="async" class="alignnone size-full wp-image-1066" src="/wp-content/uploads/2016/01/code-quality-at-airtame-4-2.png" alt="" width="600" height="156" /><div class="air-image__caption">A null pointer dereference identified by scan-build</div>
      </div>
    
<p>At Airtame, automated testing is deeply ingrained in our engineering culture. Every change pushed to Gerrit causes our automated test suite to be executed on Windows, Mac, and Linux. This includes <a href="https://cmocka.org/" target="_blank" rel="noopener">cmocka</a> unit tests of individual modules, as well as <a href="http://pytest.org/latest/" target="_blank" rel="noopener">pytest</a>-driven end-to-end system tests.</p>
<p>We use <a href="https://gcc.gnu.org/onlinedocs/gcc/Gcov.html" target="_blank" rel="noopener">gcov</a> to measure test coverage, passing its output to <a href="http://gcovr.com/" target="_blank" rel="noopener">gcovr</a> to produce a Jenkins-friendly XML file, which allows us to visualize test coverage over time. Our automated tests are absolutely essential to maintaining software quality during rapid development &#8211; they have saved us countless hours of manual testing and are especially useful for exposing platform-specific issues.</p>

      <div
         class="air-image air-padding-bottom--small air-image--small"
        
      >
        <img loading="lazy" decoding="async" class="alignnone size-full wp-image-1067" src="/wp-content/uploads/2016/01/code-quality-at-airtame-5-2.png" alt="" width="550" height="303" /><div class="air-image__caption">Our test coverage history - still room for improvement!</div>
      </div>
    
<p>We additionally run end-to-end tests through <a href="http://valgrind.org/" target="_blank" rel="noopener">Valgrind</a> and its <a href="https://wiki.jenkins-ci.org/display/JENKINS/Valgrind+Plugin" target="_blank" rel="noopener">Jenkins plugin</a> in order to detect memory and threading errors. This is the last of our automated quality checks, and if it succeeds, a +1 Verified vote is applied to the Gerrit change, indicating that it is ready for peer review.</p>

      <div
         class="air-image air-padding-bottom--small air-image--small"
        
      >
        <img loading="lazy" decoding="async" class="alignnone size-full wp-image-1068" src="/wp-content/uploads/2016/01/code-quality-at-airtame-6-2.png" alt="" width="550" height="323" /><div class="air-image__caption">Successful code quality checks make a change eligible for review</div>
      </div>
    
<p>Code reviews are another integral component of Airtame’s engineering culture. While we won’t dive too deeply into this topic (it could easily warrant its own blog post), suffice to say that we take reviews very seriously and do our best to detect “<a href="http://martinfowler.com/bliki/CodeSmell.html" target="_blank" rel="noopener">code smells</a>” as early as possible. After a change has been peer reviewed, it can be merged via Gerrit. If it passes our manual quality assurance checks, the change is pushed to our alpha testing group, before being promoted to beta, and finally, general availability.</p>
<p>This is just the beginning of Airtame’s code quality journey. As our codebase grows in size and number of contributors, we’ll need to continue adapting our tools and processes.</p>
<h5>We’re always on the lookout for talented engineers who are passionate about writing clean, maintainable code! If this sounds like you, get in touch with us at tech-jobs@airtame.com</h5>
<p>The post <a rel="nofollow" href="https://airtame.com/blog/code-quality-at-airtame/">Code quality at Airtame</a> appeared first on <a rel="nofollow" href="https://airtame.com/">Airtame</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Improvements and structure</title>
		<link>https://airtame.com/blog/improvements-and-structure/</link>
					<comments>https://airtame.com/blog/improvements-and-structure/#respond</comments>
		
		<dc:creator><![CDATA[Jonas Gyalokay]]></dc:creator>
		<pubDate>Tue, 07 Apr 2015 14:21:20 +0000</pubDate>
				<category><![CDATA[Updates]]></category>
		<category><![CDATA[1080p]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[Innovation]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[resolution]]></category>
		<category><![CDATA[updates]]></category>
		<guid isPermaLink="false">https://32e994dd1033e2d92dbce-admin.hardypress.com/?p=1128</guid>

					<description><![CDATA[<p>It’s been a really busy few weeks as we sprint towards our goal of releasing the devices out in public release and we’ve made some great strides in a short space of time. The team has grown by 50% since the end of the year with additions throughout the dev team to more than double our [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://airtame.com/blog/improvements-and-structure/">Improvements and structure</a> appeared first on <a rel="nofollow" href="https://airtame.com/">Airtame</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>It’s been a really busy few weeks as we sprint towards our goal of releasing the devices out in public release and we’ve made some great strides in a short space of time. The team has grown by 50% since the end of the year with additions throughout the dev team to more than double our existing resources within a short period.</p>
<p>The additional manpower means that we’ve been able to do some really awesome things that we’ve been wanting to do for a while – one such thing is that we’ve built an entirely new tray (the software you download for your desktop) from scratch under one unified platform using node.js within the past month.</p>
<p>Since our last update, we’ve managed to overhaul the entire underlying structure in that time. Under the new platform, we’ve also unified the desktop operating systems. The previous platform (QT framework) had to have separate builds for each operating system and meant that any features we wanted to release had to be built separately each time. It’s a big improvement that is much more stable and makes it easier and faster for us to include and release new features across all of the platforms at once, as opposed to having to build entirely separate features for each individual platform. This basically means that we’re able to more effectively roll out new features and will enable us to focus on delivering smaller updates on a frequent basis from now on.</p>
<h2>Linux support</h2>
<p>With the move to the new platform, we’re also happy to announce that we’ll be able to provide full Linux support from v0.1.6 onwards! Our long-suffering Linux users have had to use patchy early versions, and had (very) limited support – but not any longer. From today, you’ll also be able to get the new Linux tray directly from <a href="/download/">downloads</a></p>
<p>The new version of the PC software also comes in a stand-alone version that means that Airtame can run without the need to go through an installation process. For organizations (or anyone for that matter!) that have guests that instantly want to use Airtame without previously having the software installed, can simply run a .exe file that will launch a basic version of AIRTAME that enables them to stream – and when finished, nothing is left on the computer/device. This not only dramatically decreases the time on a PC to start the first stream but also opens up the possibility of allowing non-admin users access to Airtame quickly and effectively.</p>
<h2>Firmware</h2>
<p>For the firmware running on Airtame, we’ve also released v0.1.6 which also includes a big improvement in a module we have been working on since the end of last year. It’s the module that handles the video stream from the computer and “Decode module” (basically the part that receives the stream from the dongle, so it can be seen on the screen). Until now we have been using the standard module provided by Freescale, the manufacturer of our processor chips. Whilst it would have been great (and much easier!) to continue using this, the module provided had some bugs that meant we simply didn’t (and couldn’t) have full control over how the video stream that was being handled. With our new shiny module that we’ve crafted in-house, we’re able to control all aspects of the video stream.</p>
<h2>1080p resolution</h2>
<p>In terms of features, this means that the 1080p output resolution is out of “extreme experimental version” to be made available as standard. This will give a much sharper resolution for text and graphics, without having to compromise on the stream.</p>
<p>There are also some small (but great) improvements such as improving the WiFi scanning module (which means that we can find local AIRTAMEs much more effectively), and fixing cases of the missing cursor for Mac 10.10 (Yosemite) users.</p>
<h2>Public beta!</h2>
<p>The final announcement is that we will also be launching public beta with v0.1.6 – so as soon as we receive the new devices from the manufacturer, we will commence shipping to those waiting ASAP. We’re shipping another 4.750 devices that will increase our BETA community to +7.500 members across the globe preparing us for the public launch in Q2.</p>
<p>This will be done with our new master distributor after the lessons learned from the initial early release (up to 10-12 weeks delivery time &amp; multiple devices going MIA). We’ll be able to offer much more efficient shipping options, but there will be more info on this at the end of the week 🙂 We’re looking forward to your feedback on the differences &amp; also welcoming those waiting members to our ever growing BETA community at <a href="https://forum.airtame.com/" target="_blank" rel="noopener">forum.</a></p>
<p>The post <a rel="nofollow" href="https://airtame.com/blog/improvements-and-structure/">Improvements and structure</a> appeared first on <a rel="nofollow" href="https://airtame.com/">Airtame</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://airtame.com/blog/improvements-and-structure/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
