<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Programming on Colin O'Flynn</title><link>https://colinoflynn.com/tag/programming/</link><description>Recent content in Programming on Colin O'Flynn</description><generator>Hugo</generator><language>en-ca</language><lastBuildDate>Sat, 18 Feb 2023 02:20:58 +0000</lastBuildDate><atom:link href="https://colinoflynn.com/tag/programming/index.xml" rel="self" type="application/rss+xml"/><item><title>Driver Signing Notes</title><link>https://colinoflynn.com/2015/01/driver-signing-notes/</link><pubDate>Fri, 09 Jan 2015 00:02:03 +0000</pubDate><guid>https://colinoflynn.com/2015/01/driver-signing-notes/</guid><description>&lt;p&gt;I recently wanted to sign some drivers to avoid requiring users of my ChipWhisperer device to do the usual bypass-signature deal. The end result is a sweet sweet screen like this when install the drivers:
&lt;a href="https://colinoflynn.com/wp-content/uploads/2015/01/usbsig.png"&gt;&lt;img src="https://colinoflynn.com/wp-content/uploads/2015/01/usbsig.png" alt="usbsig"&gt;&lt;/a&gt;
If you are in this situation, I wanted to add some of my own notes into the mix.
David Grayson has an awesome guide which I mostly followed, available at &lt;a href="http://www.davidegrayson.com/signing" title="http://www.davidegrayson.com/signing"&gt;http://www.davidegrayson.com/signing&lt;/a&gt;.
The steps I followed (again from his guide basically) are:&lt;/p&gt;</description></item><item><title>QTabWidget in PySide Automatically Resize</title><link>https://colinoflynn.com/2012/11/qtabwidget-in-pyside-automatically-resize/</link><pubDate>Thu, 08 Nov 2012 14:53:00 +0000</pubDate><guid>https://colinoflynn.com/2012/11/qtabwidget-in-pyside-automatically-resize/</guid><description>&lt;p&gt;When using PySide, a QTabWidget is handy. But the size of the QTabWidget is dictated by the largest item, even if it&amp;rsquo;s not visible.
Let&amp;rsquo;s assume self.tw is our tab widget. Then add this function:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;from PySide.QtCore import *
from PySide.QtGui import *

class MainWindow(QMainWindow):
 def curTabChange(self, index):
 for i in range(self.tw.count()):
 if i == index:
 self.tw.widget(i).setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
 else:
 self.tw.widget(i).setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored)

 def myOtherFunction(self):
 etc etc etc
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And in your initialization associate it with a tab change event:&lt;/p&gt;</description></item><item><title>Getting started with GIT Revision Control</title><link>https://colinoflynn.com/2012/08/getting-started-with-git-revision-control-2/</link><pubDate>Fri, 10 Aug 2012 12:16:00 +0000</pubDate><guid>https://colinoflynn.com/2012/08/getting-started-with-git-revision-control-2/</guid><description>&lt;p&gt;Revision Control is the most critical part of any project involving files. Otherwise you end up with tons of directories, and naming schemes like "report_final2_june.docx" along with 20 other copies.&lt;/p&gt;
&lt;p&gt;This is best described in this 20-min clip. Sorry it's a little long, but there is a fair amount to cover:&lt;/p&gt;
&lt;div class="embed embed--video"&gt;&lt;iframe src="https://www.youtube-nocookie.com/embed/cFbCusX9bKs" title="YouTube video" loading="lazy" allowfullscreen frameborder="0"&gt;&lt;/iframe&gt;&lt;/div&gt;
You can download the slide set:
&lt;a class="wiki" href="https://colinoflynn.com/oldsite/tiki-download_file.php?fileId=33" rel=""&gt;Slide Set&lt;/a&gt;
For your reading pleasure, here are the highlights. I've linked to the exact moments of interest in the video rather than retype stuff I describe in the video.
&lt;h1 id="What_is_GIT" class="showhide_heading"&gt;What is GIT&lt;/h1&gt;
Git is a revision control manager. Briefly, it lets you see how things changed and track those changes. Even better, it lets you do tasks like create a "branch" of the source code. You can switch back and forth between branches to deal with issues like wanting to rewrite sections of the code, while still being able to get back to the last good 'release' copy.
&lt;a class="wiki" href="www.youtube.com/watch?v=cFbCusX9bKs&amp;amp;hd=1&amp;amp;t=7m15s" rel=""&gt;Show Me Branching&lt;/a&gt;
&lt;h1 id="Getting_stated_on_Your_Computer" class="showhide_heading"&gt;Getting stated on Your Computer&lt;/h1&gt;
You can use GIT on any folder! It's dead simple to do, and handy even if you will never commit things to the web. Doing so requires a few steps:
&lt;ol&gt;
	&lt;li&gt;Create a repository locally &lt;a class="wiki external" href="http://www.youtube.com/watch?v=cFbCusX9bKs&amp;amp;hd=1&amp;amp;t=2m10s" target="_blank" rel="external nofollow noopener"&gt;Show Me&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Commit initial file&lt;a class="wiki external" href="http://www.youtube.com/watch?v=cFbCusX9bKs&amp;amp;hd=1&amp;amp;t=3m45s" target="_blank" rel="external nofollow noopener"&gt;Show Me&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Commit changes &lt;a class="wiki external" href="http://www.youtube.com/watch?v=cFbCusX9bKs&amp;amp;hd=1&amp;amp;t=5m18s" target="_blank" rel="external nofollow noopener"&gt;Show Me&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Do other stuff (branching, merging, etc) &lt;a class="wiki external" href="http://www.youtube.com/watch?v=cFbCusX9bKs&amp;amp;hd=1&amp;amp;t=7m1s" target="_blank" rel="external nofollow noopener"&gt;Show Me&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="Using_Real_Repositories" class="showhide_heading"&gt;Using Real Repositories&lt;/h1&gt;
To use real remote repositories, you need a server to host them. I recommend assembla.com or bitbucket.org . bitbucket.org provides more storage, more users for free, and unlimited project sizes for university-based projects. Both are pretty cheap for commercial projects.
&lt;p&gt;You want to configure a SSH key. Doing so requires four steps:&lt;br /&gt;
&lt;ol&gt;&lt;br /&gt;
	&lt;li&gt;Generate the key &lt;a class="wiki external" href="http://www.youtube.com/watch?v=cFbCusX9bKs&amp;amp;hd=1&amp;amp;t=12m17s" target="_blank" rel="external nofollow noopener"&gt;Show Me&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;Set the key up on assembla/bitbucket &lt;a class="wiki external" href="http://www.youtube.com/watch?v=cFbCusX9bKs&amp;amp;hd=1&amp;amp;t=13m09s" target="_blank" rel="external nofollow noopener"&gt;Show Me&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;Set the key up on git &lt;a class="wiki external" href="http://www.youtube.com/watch?v=cFbCusX9bKs&amp;amp;hd=1&amp;amp;t=14m27s" target="_blank" rel="external nofollow noopener"&gt;Show Me&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;Set the key up to always be loaded &lt;a class="wiki external" href="http://www.youtube.com/watch?v=cFbCusX9bKs&amp;amp;hd=1&amp;amp;t=16m15s" target="_blank" rel="external nofollow noopener"&gt;Show Me&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;/ol&gt;&lt;/p&gt;</description></item></channel></rss>