<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://www.timewarptechnologies.com"  xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>Timewarp Technologies, LLC - How To</title>
 <link>http://www.timewarptechnologies.com/taxonomy/term/2</link>
 <description>A document that explains how to perform some task.
</description>
 <language>en</language>
<item>
 <title>DotNetNuke 4.4.1 Password Reset Via SQL.</title>
 <link>http://www.timewarptechnologies.com/node/68</link>
 <description>&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;p&gt;I was looking to reset a password in DotNetNuke 4.4.1 and found this link:&lt;/p&gt;
&lt;p&gt;http://support.ihostasp.net/Customer/KBArticle.aspx?articleid=44&lt;/p&gt;
&lt;p&gt;Apparently this is for a prior version, as the 4.4.1 stored procedure uses the &quot;ApplicationName&quot; and not the &quot;ApplicationID&quot;. I was successful in resetting the password using the small modification found below.&lt;/p&gt;
&lt;p&gt;Declare @UserName NVarChar(255)&lt;br /&gt;
Declare @NewPassword NVarChar(255)&lt;br /&gt;
Declare @PasswordSalt NVarChar(128)&lt;br /&gt;
Declare @Application NVarChar(255)&lt;/p&gt;
&lt;p&gt;-- Enter the user name and new password between &#039;&#039;&lt;br /&gt;
-- do not leave any spaces unless intended to do so.&lt;br /&gt;
-- Edit only between single quote characters&lt;br /&gt;
Set @UserName = &#039;host&#039; -- This default DNN host user&lt;br /&gt;
Set @NewPassword = &#039;yourpasswordhere&#039; --New password&lt;br /&gt;
-- Do modify any code below this line&lt;/p&gt;
&lt;p&gt;Set @Application = (SELECT [ApplicationName] FROM aspnet_Users inner join aspnet_Applications on aspnet_Users.ApplicationId = aspnet_Applications.ApplicationId WHERE UserName=@UserName)&lt;br /&gt;
Set @PasswordSalt = (SELECT PasswordSalt FROM aspnet_Membership WHERE UserID IN (SELECT UserID FROM aspnet_Users WHERE UserName=@UserName))&lt;/p&gt;
&lt;p&gt;Exec dbo.aspnet_Membership_ResetPassword @Application, @UserName, @NewPassword, 10, 10, @PasswordSalt, -5, 0, null&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Category: &lt;/div&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;taxonomy-term-reference-0&quot;&gt;&lt;a href=&quot;/taxonomy/term/2&quot;&gt;How To&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
 <pubDate>Mon, 05 Mar 2007 16:47:22 +0000</pubDate>
 <dc:creator>jlopez</dc:creator>
 <guid isPermaLink="false">68 at http://www.timewarptechnologies.com</guid>
</item>
<item>
 <title>Has programming stagnated?</title>
 <link>http://www.timewarptechnologies.com/node/66</link>
 <description>&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;p&gt;Over at &lt;a href=&quot;http://www.codinghorror.com/blog/archives/000619.html#comments&quot;&gt;Coding Horror&lt;/a&gt; I found an article linking to &lt;a href=&quot;http://alarmingdevelopment.org/index.php?p=5&quot;&gt;Alarming Development&lt;/a&gt; which was hosting an article claiming that programming as reached a dead end.&lt;/p&gt;
&lt;p&gt;The article makes it seem like no progress has been made in the area of programming since the “dark ages”. Yet I recall writing in assembly for mainframes, poking memory locations to display graphics, creating UI’s with curses (the screen library, not angry comments) and manipulating databases with procedural code.&lt;/p&gt;
&lt;p&gt;Today I think most programmers understand that the relational database model (even as poorly implemented as it is in SQL databases) is a huge productivity amplifier. Yes, we have a few “everything in XML” fringe programmers who haven’t got the memo, but for large data sets shared between many systems internally, a solid relational design will reward you handsomely.&lt;/p&gt;
&lt;p&gt;We have screen building tools with various levels of binding (personally, I find “bound controls” to be scary if they aren’t bound to business logic handling objects instead of directly to the database, but maybe that is just me). As others have pointed out, these GUIs can be data driven. (I do wonder about the comment about the GUI driving the schema though… I’m not sure I would want to write a *different* app against that schema. However, maybe I’m missing illumination on that topic.)&lt;/p&gt;
&lt;p&gt;Of course, those are just tools. We have also seen advances in the infrastructure of languages themselves. From assemblers to compilers to interpreters to just in time compilation, the process of converting text to executable has continued to improve in terms of round trip and sophistication. From line editors to screen editors to editors with shell capabilities to IDEs to form building IDEs to the current kitchen sink refactoring IDEs, our editors have learned more about what we want to do and help us do it. Debugging has moved from liberal printf() sprinkling to inspection on the fly to being able to recompile on the fly altered code. &lt;/p&gt;
&lt;p&gt;The languages themselves have evolved, from spaghetti code to procedural to object oriented (with a dash of functional being tossed in as seasoning). Our ability to express code has been improving and becoming more automated in regards to accuracy. (I do look forward to the day when provable code comes out of “the proof is longer and harder [and independent of] the code” nightmare it currently resides in). The Python crowd already knows the joys that C# is looking to provide (lambdas, closures and other functional goodies on top of a solid procedural base). Meanwhile cross cutting (aspect oriented) code allows a type of code reuse that is otherwise difficult to achieve.&lt;/p&gt;
&lt;p&gt;Now, maybe all this progress just isn’t enough for our “Comrade”. Actually, it isn’t enough for me either: I want a pony too. However, I don’t believe programming is at a dead end: there are too many pieces of the puzzle that aren’t integrated fully into the “mainstream” languages for me to think we are at a stand still. I see functional programming ideals, aspects, domain specific languages and many other “they exist but are not part of the mainstream languages yet” pieces of the puzzle falling in place in the next decade. Likewise, the surrounding tools will continue to improve with countless tool changes that I probably can’t even envision yet.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Category: &lt;/div&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;taxonomy-term-reference-0&quot;&gt;&lt;a href=&quot;/taxonomy/term/2&quot;&gt;How To&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
 <pubDate>Tue, 27 Jun 2006 23:00:16 +0000</pubDate>
 <dc:creator>jlopez</dc:creator>
 <guid isPermaLink="false">66 at http://www.timewarptechnologies.com</guid>
</item>
<item>
 <title>Muds and teaching programming to children.</title>
 <link>http://www.timewarptechnologies.com/node/65</link>
 <description>&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;p&gt;Today’s post will seem a bit off topic from the usual technology related topics, but I also do work on game designs, both for the computer and traditional board games. I also have a twelve year old son who wants to learn something about what I do all day.&lt;/p&gt;
&lt;p&gt;A long time ago, I worked on “muds”. Muds (a.k.a. Multi User Dungeons) are the text based precursor to the current graphical games such as Everquest and World of Warcraft. Being text based, they were cheap and easy to host and could be created and extended by mere mortals instead of the massive development houses required to create a modern graphical world. Many popular muds continue to &lt;a href=&quot;http://www.mudconnect.com&quot;&gt;exist to this day&lt;/a&gt;. (&lt;a href=&quot;http://www.game.org/realms/&quot;&gt;Realms of Despair&lt;/a&gt;, one of the classics, still has hundreds and hundreds of users online at any given time).&lt;/p&gt;
&lt;p&gt;The codebase (core code that we modified to taste) that we used was &lt;a href=&quot;http://www.smaug.org&quot;&gt;SMAUG&lt;/a&gt;. Sadly, our specific mud shut down due to a lover’s spat between the two who started it. (This is a risk you take when you can “do it yourself” instead of having a massive development house.) I still have the modified code though, and use it as an interesting way to teach advanced C coding techniques, specifically network socket handling and pseudo object oriented coding (i.e., how to create modular, object oriented code in a language without native support for it.)&lt;/p&gt;
&lt;p&gt;Recently this code has come back out as I was looking for ways to teach my son about programming. I won’t be using SMAUG directly (I have found better tools that operate at a higher level of abstraction), but my son wants to learn how to code a role playing game.&lt;/p&gt;
&lt;p&gt;It may appear that coding such a project would be of little educational value: however it turns out that the considerations for such a project are quite considerable. First, it is critical to do proper design up front, as in any large project. Second, it involves many of the same considerations that a more traditional (and to a twelve year old, boring) program will address: user interface, internal data structures, persistent data storage being just a few of them. Additionally, the mathmatics behind a role playing game system is non-trivial and yet not so complex as to be beyond his reach.&lt;/p&gt;
&lt;p&gt;Before we can tackle such considerations, however, I need to teach him the basics of programming. My next post will cover a wonderful piece of code that I have found that will allow me to do just that without overwhelming him with a modern development environment’s overhead and complexity.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Category: &lt;/div&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;taxonomy-term-reference-0&quot;&gt;&lt;a href=&quot;/taxonomy/term/2&quot;&gt;How To&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
 <pubDate>Wed, 17 May 2006 17:23:07 +0000</pubDate>
 <dc:creator>jlopez</dc:creator>
 <guid isPermaLink="false">65 at http://www.timewarptechnologies.com</guid>
</item>
<item>
 <title>Install additional drivers for a printer share</title>
 <link>http://www.timewarptechnologies.com/node/53</link>
 <description>&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;p&gt;Open the printer folder, right click the printer and choose &quot;Properties&quot;. Go to the &quot;Sharing&quot; tab and chose &quot;Additional Drivers...&quot; Choose the operating systems to support and click OK. You will be prompted for the location of the drivers. Supply the original driver disk and browse to the folder relevant to the operating systems to support, or download and extract such drivers and then browse to where they were extraced.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Category: &lt;/div&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;taxonomy-term-reference-0&quot;&gt;&lt;a href=&quot;/taxonomy/term/2&quot;&gt;How To&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
 <pubDate>Tue, 11 Oct 2005 21:09:13 +0000</pubDate>
 <dc:creator>jlopez</dc:creator>
 <guid isPermaLink="false">53 at http://www.timewarptechnologies.com</guid>
</item>
<item>
 <title>SNMP and syslogd</title>
 <link>http://www.timewarptechnologies.com/node/50</link>
 <description>&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;p&gt;Logging is a critical task to perform on your network so you can perform baseline analysis and periodically check up for potential trouble. Most network equipment has SNMP (simple network management protocol) capabilities to send messages about various events that occur. But where to send them?&lt;/p&gt;
&lt;p&gt;A cheap and easy way to handle SNMP is to send the messages to a Linux box running snmptrapd, which can log all the events. Simply install &quot;net-snmp&quot; tools, either from source or package and configure to run at your standard run levels for background services. One trick is isolating the messages from all the other messages on your system. To do this, change the startup options for the daemon to &quot;-Ls0 -p /var/run/snmptrapd.pid&quot;. By default this would read -Ls&lt;em&gt;d&lt;/em&gt; which causes the default message log to be used, which can be very crowded. By sending to log &quot;local0&quot; you can then edit syslog.conf and add:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
# SNMP trap&lt;br /&gt;
local0.*						/var/log/snmptrapd.log&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This will log &quot;local0&quot; to snmptrapd.log. From there you can use a tool like filter-syslog to find the &quot;interesting&quot; events that occur. There may also be a way to directly detect snmptrapd messages using something like &quot;snmptrapd.*&quot; with the default logging option to snmptrapd, but the obvious choices (&quot;snmp&quot;, &quot;snmpv2&quot;, &quot;snmptrap&quot;, &quot;snmptrapd&quot;) did not work.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Category: &lt;/div&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;taxonomy-term-reference-0&quot;&gt;&lt;a href=&quot;/taxonomy/term/2&quot;&gt;How To&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
 <pubDate>Wed, 17 Aug 2005 02:37:34 +0000</pubDate>
 <dc:creator>jlopez</dc:creator>
 <guid isPermaLink="false">50 at http://www.timewarptechnologies.com</guid>
</item>
<item>
 <title>Daemon Shield</title>
 <link>http://www.timewarptechnologies.com/node/46</link>
 <description>&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;p&gt;Linux is an excellent operating system to deploy in the roles of firewall and web server. Low and no cost options are available and it requires very few system resources to do a lot of work. Because it often is deployed on the &quot;edge&quot; of the network, it can be a target for brute force attacks. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://daemonshield.sourceforge.net/&quot;&gt;Daemon Shield&lt;/a&gt; is a program that scans the log files and shuts out IP addresses that appear to be performing brute force attacks. It works for SSH and PAM modules and lives in the background. Highly recommend as a complement to normal security precautions such as strong passwords and limiting exposed services.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Category: &lt;/div&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;taxonomy-term-reference-0&quot;&gt;&lt;a href=&quot;/taxonomy/term/2&quot;&gt;How To&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
 <pubDate>Mon, 18 Jul 2005 21:14:03 +0000</pubDate>
 <dc:creator>jlopez</dc:creator>
 <guid isPermaLink="false">46 at http://www.timewarptechnologies.com</guid>
</item>
<item>
 <title>PHPWiki from CVS requires change to table.</title>
 <link>http://www.timewarptechnologies.com/node/40</link>
 <description>&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;p&gt;Pulled the CVS version of PHPWiki out. After updating, attempting to post anything that would create new page links, a SQL error would occur. The new version of PHPWiki&#039;s DB code for MySQL uses an autonumber on the ID in the page table. Updated to add the auto increment property.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;
alter table page&lt;br /&gt;
modify id INT NOT NULL AUTO_INCREMENT&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Category: &lt;/div&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;taxonomy-term-reference-0&quot;&gt;&lt;a href=&quot;/taxonomy/term/2&quot;&gt;How To&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
 <pubDate>Thu, 07 Jul 2005 03:38:21 +0000</pubDate>
 <dc:creator>jlopez</dc:creator>
 <guid isPermaLink="false">40 at http://www.timewarptechnologies.com</guid>
</item>
</channel>
</rss>
