<?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>Peaceful Programmer &#187; academia</title>
	<atom:link href="http://blog.raymondberg.com/archives/category/academia/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.raymondberg.com</link>
	<description>A Blog that Walks the Fine Line Between Usefulness and Acrobats</description>
	<lastBuildDate>Thu, 09 Sep 2010 01:19:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Engineering in the World</title>
		<link>http://blog.raymondberg.com/archives/230</link>
		<comments>http://blog.raymondberg.com/archives/230#comments</comments>
		<pubDate>Thu, 29 Apr 2010 00:25:54 +0000</pubDate>
		<dc:creator>rwb</dc:creator>
				<category><![CDATA[academia]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[teams]]></category>
		<category><![CDATA[creep]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[policy]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[reality]]></category>
		<category><![CDATA[requirements]]></category>
		<category><![CDATA[risk]]></category>
		<category><![CDATA[school]]></category>
		<category><![CDATA[scope]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[wake up]]></category>

		<guid isPermaLink="false">http://blog.raymondberg.com/?p=230</guid>
		<description><![CDATA[Quality engineers are overworked, and project managers mumble unintelligibly to themselves while walking the fine line between hyper-tension and deadline slippage.]]></description>
			<content:encoded><![CDATA[<p>When running the course of my undergrad, I thought I&#8217;d lock onto programming and do it for years and years. I knew I had the impulse to lead and direct, but I never imagined myself doing anything more than being a &#8220;programmer lead&#8221;. Heck, I wasn’t the only one. Most of my friends knew that I&#8217;d be slinging code for the better part of five years. I couldn&#8217;t imagine a world without intelli-sense or Eclipse, and solving problems without a compiler was simply impossible.</p>
<p>The first lecture of my master&#8217;s program was my first policy/engineering class, and my world was rocked. I was probably galvanized by the seething hatred that my peers seemed to have for this brand of security. Dismissing the pariah complex, I had an abnormal draw toward it, and the people that I began to associate with only pushed me further in that direction. When I chose my first full-time position it was pretty clear where I would lean. Now I&#8217;ve programmed less than 100 lines of code in the last 3 months, and 95 of those were from personal projects.</p>
<p>Work is filled with partial glimpses into projects large enough to crush a human, and everyone struggles just to make sure their documentation doesn&#8217;t accidentally expand their scope commitment into a new circle of requirements-hell.  Most of the higher-level minds just try to negotiate the nether-space between clients and managers, hoping that satisfying one of them doesn&#8217;t piss the other one off. Quality engineers are overworked, and project managers mumble unintelligibly to themselves while walking the fine line between hyper-tension and deadline slippage. Great ideas are hatched in unreserved conference rooms and laughed off or, if particularly reasonable, are stabbed to death by managers and customers during powerpoint briefings. The only people who get great things done are the ones who play the field better than Kasparov.</p>
<p>And it&#8217;s all fascinating. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raymondberg.com/archives/230/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Elementary Java: main() and constructors</title>
		<link>http://blog.raymondberg.com/archives/180</link>
		<comments>http://blog.raymondberg.com/archives/180#comments</comments>
		<pubDate>Thu, 04 Mar 2010 03:38:42 +0000</pubDate>
		<dc:creator>rwb</dc:creator>
				<category><![CDATA[academia]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[comedy]]></category>
		<category><![CDATA[constructor]]></category>
		<category><![CDATA[difference]]></category>
		<category><![CDATA[elliptical]]></category>
		<category><![CDATA[galaxy]]></category>
		<category><![CDATA[god]]></category>
		<category><![CDATA[hilarious]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[joke]]></category>
		<category><![CDATA[learning java]]></category>
		<category><![CDATA[main]]></category>
		<category><![CDATA[spiral]]></category>
		<category><![CDATA[theology]]></category>
		<category><![CDATA[understanding java]]></category>
		<category><![CDATA[universe]]></category>

		<guid isPermaLink="false">http://blog.raymondberg.com/?p=180</guid>
		<description><![CDATA[I can't believe I wrote an entire blog post just to get to tell that joke.]]></description>
			<content:encoded><![CDATA[<p>This is one of those seemingly simple concepts that never really gets elaborated. Usually a student learning Java for the first time is told. &#8220;Write the following:&#8221;<br />
<code>public class Person<br />
{<br />
	public static void main(String[] args)<br />
	{<br />
		System.out.println("Hello World!");<br />
	}<br />
}</code><br />
&#8220;Don&#8217;t ask why, just do it.&#8221; Because of that, I&#8217;ve heard this question more than a few times in the last couple years.<br />
<span id="more-180"></span></p>
<h4>The main()</h4>
<p>The simple definition/purpose of the &#8216;main()&#8217; method? It&#8217;s the starting point for every single Java application you&#8217;ll ever write, and this one and only main() makes up the entire life of the program. Once main() starts you&#8217;re program is running, and once it exits then your program dies. That&#8217;s all it does, really.</p>
<p>I&#8217;ll give you some background on the details here, hopefully to reduce the &#8216;magic&#8217;. In the &#8220;public static void&#8221; part the &#8220;public&#8221; is the signature that is required as a main() must be accessible to all interested invokers, &#8216;static&#8217; signifies this method is always run in an identical environment with no worry about conflicting instances (read more on static elsewhere), and &#8216;void&#8217; designates that there is no return type from the method. The args variable, or whatever you choose to name it, is the array of command line inputs that you specified beyond the name of the Java class. Easy, right?</p>
<h4>The Constructor</h4>
<p>Constructors are an entirely different beast: an object that is created in a runtime is created by explicit or implicit call to that object&#8217;s constructor, essentially establishing the working space for that object. You can have many different constructors, too, but only one can be called for each object that you create. The most common place you see this is in the &#8220;new Person()&#8221; call where the &#8216;new&#8217; keyword indicates a new instance of this event, as created in the constructor call &#8216;Person()&#8217;. I know this is getting crazy, but just look at the following example.<br />
<code><br />
public class Galaxy<br />
{<br />
	public boolean isSpiral;<br />
	public boolean hasLife;<br />
	public Galaxy()<br />
	{<br />
		isSpiral = (Math.random() > 0.5); // 50-50 chance of being spiral<br />
		hasLife= (Math.random() > 0.99999999); // tiny chance of supporting life<br />
	}<br />
	public Galaxy(boolean isSpiralp)<br />
	{<br />
		isSpiral = isSpiralp;  //Specified before creation, guaranteed to be what is requested<br />
	}<br />
	public Galaxy(boolean isSpiralp, boolean hasLifep)<br />
	{<br />
		this(isSpiralp); //Call other constructor<br />
		hasLife = hasLifep; //set life<br />
	}<br />
}<br />
class Universe<br />
{<br />
	public static void main(String[] args)<br />
	{<br />
		Galaxy sagittariusDwarf = new Galaxy(false);<br />
		Galaxy milkyWay = new Galaxy(true,true);<br />
		Galaxy peacefulProgrammer = new Galaxy();<br />
		milkyWay = peacefulProgrammer;<br />
	}<br />
}<br />
</code></p>
<p>In this example Galaxy cannot be started by itself, some other program with a main() method (if it&#8217;s an application) must actually create the object through the constructor. In this case, we find an example in the Universe class. The Universe &#8216;starts up&#8217;, creates a few galaxies (overwrites some lesser galaxies), and then flickers out and dies. I know it&#8217;s sad; pay attention! </p>
<p>The Galaxy object isn&#8217;t limited to being used only in the Universe class, but it&#8217;s just what we used here.  Anything, in theory, could instantiate this galaxy object. I&#8217;ve met few girls with Eyes that seemed to instantiate a couple of Galaxy objects, but that&#8217;s another blog post.</p>
<h4>Self-referential, complicating monkey-wrench.</h4>
<p>Some situations call for main and constructor methods, and the constructor could be created inside the runtime. The reason for this is often that the object itself may be created within another program, or it could be something that stands alone. In the case of the universe example, it&#8217;s a theology question. If Universe is a class that can be independent of any other class and can suffice by it&#8217;s internal definition (a.k.a the programmer is an atheist), then you can just run Universe to create it&#8217;s own instance.</p>
<p><code>public class Universe<br />
{<br />
	public static final int TOTAL_ATOMS_POWER_OF_TEN = 81;<br />
	public static final boolean IS_STRING_THEORY_LEGITIMATE = false;<br />
	public Sphere core;<br />
	public void Universe()<br />
	{<br />
		core = new Sphere(1,1);<br />
		for(int i = 0; i < TOTAL_ATOMS_POWER_OF_TEN; i++)<br />
		{<br />
			core.increaseDensity(10.0);<br />
		}<br />
	}<br />
	public void bang()<br />
	{<br />
		//code to cause bang<br />
	}<br />
	public static void main(String args)<br />
	{<br />
		Universe everything = new Universe();<br />
		everything.bang();<br />
	}<br />
}</code></p>
<p>Now suppose the programmer isn't an atheist, then we've got a bit of a problem. We need somebody driving this crazy bus we call life; which will work out totally fine. In fact, not only can we create God, but we can make sure that he's got enough power to create more than one universe. Mix the following class into the Java file for the above and add water:<br />
<code>class God<br />
{<br />
	public static final POWER_REQD_PER_UNIVERSE = 42;<br />
	private int power;<br />
	Vector<Universe> multiverse;<br />
	public God()<br />
	{<br />
		multiverse = new Vector<Universe> multiverse;<br />
		power = POWER_REQD_PER_UNIVERSE;<br />
	}<br />
	public void createUniverse()<br />
	{<br />
		power += POWER_REQD_PER_UNIVERSE;<br />
		Universe temp = new Universe();<br />
		temp.bang();<br />
		multiverse.add(temp);<br />
	}<br />
	public void getHaircut()<br />
	{<br />
		//code to get haircut<br />
	)<br />
	public static void main(String[] args)<br />
	{<br />
		God me = new God();<br />
		me.addUniverse();<br />
		me.addUniverse();<br />
		me.getHaircut();<br />
	}<br />
}</code></p>
<p>The best thing about designing the original universe to allow for versatile, constructor-based invocation is that we didn't have to change the Universe object to allow for God to create a Universe. In this way we create Universe to be God-agnostic. </p>
<p>I can't believe I wrote an entire blog post just to get to tell that joke.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raymondberg.com/archives/180/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Review: Liability and Computer Security</title>
		<link>http://blog.raymondberg.com/archives/50</link>
		<comments>http://blog.raymondberg.com/archives/50#comments</comments>
		<pubDate>Fri, 26 Sep 2008 02:57:00 +0000</pubDate>
		<dc:creator>rwb</dc:creator>
				<category><![CDATA[academia]]></category>
		<category><![CDATA[reviews]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[liability]]></category>
		<category><![CDATA[paper]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://blog.rwberg.org/?p=50</guid>
		<description><![CDATA[The latest paper of interest is &#8220;Liability and Computer Security: Nine Principles&#8221;by Ross Anderson. He&#8217;s apparently a Cambridge man who hass done a great deal to change the ideas behind security principles. He&#8217;s also got a fair flair for writing on dry topics in a not-so-dry voice. This is one of my favorite skills that [...]]]></description>
			<content:encoded><![CDATA[<p>The latest paper of interest is <a href="http://www.google.com/search?q=Liability+and+Computer+Security%3A+Nine+Principles&amp;btnG=Search" target="_blank">&#8220;Liability and Computer Security: Nine Principles&#8221;by Ross Anderson</a>. He&#8217;s apparently a Cambridge man who hass done a great deal to change the ideas behind security principles. He&#8217;s also got a fair flair for writing on dry topics in a not-so-dry voice. This is one of my favorite skills that I pray everyone can find, at least to some degree. This should especially be true if you&#8217;re one who enjoys writing more than 5 pages per research paper.</p>
<p>The focus of the piece is reconsidering the driving force behind security advancement. The classic direction is in implementing best practices available to engineers in order to minimize risk, although the paper didn&#8217;t speak to these principles directly. While using the previous direction as log from Frogger, it proposes the chief factor that drives advancement in security is liability and the transfer thereof. It tries the case through several examples focused primarily on security systems used in United Kingdom banks.</p>
<p>It&#8217;s hard to simplify in less than five pages, but overall it points out how litigation following incident lead to the most change in the way the UK banks operated and how this system differed from the American cousins. This may seem obvious, but he also tries to tease out the notion that the flaws in the systems did may have resulted from poor designs or because the industry as a whole was not handling these types of issues despite an abundance of technology that could have stopped many of these errors.</p>
<p>The premise is one that I can see merit in, but the application is quite limited in my mind.  The shortcoming of this analysis is that thec cases cited showed that loss due to failure of security mechanisms could be mitigated by an insurer or other liable body. This is not a common issue. In fact, banks and other asset management systems are the only groups that fall into this category, from my view. The only way you can restore most, let alone all, losses resulting from a security incident is if the lost material is of an entirely non-unique, exchangable nature.</p>
<p>I&#8217;ve become intimately familiar the concepts of risk as it pertains to reputation, trade secrets, and personal data. These are the pillars of risk, and they are regarded as the very purpose for security in our age. If you look at each element of risk you can see where Anderson&#8217;s model doesn&#8217;t apply. There are far too many groups out there to determine that liability transferrance is even an option for most cases.</p>
<p>Can Oracle transfer liabile risk of reputation damage to an insurer if they write poor software? Google&#8217;s search algorithm is worth trillions of dollars if potential earnings considered, and they could not insure their systems against loss of that information. And how would the Department of Defense transfer liability of operations information being leaked through an insecure system?</p>
<p>These cases are just a few of the corporate and government organizations that represent a vast majority. It&#8217;s unreasonable to think that any of these situations would have liability driving their security design and implementation. Why would it then be a driving force for the industry as a whole? It is unlikely, at best.</p>
<p>Again, I do not disagree with Anderson&#8217;s paper entirely; I feel that it is quite limited in it&#8217;s potency on a broader scope. I applaud his introduction of litigation and liability to the process, but it has far less impact on security than he believes it to be. Liability will always be a concern for any organization, but that does not mean that purpose or method changes because if it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raymondberg.com/archives/50/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Reason For Reason</title>
		<link>http://blog.raymondberg.com/archives/39</link>
		<comments>http://blog.raymondberg.com/archives/39#comments</comments>
		<pubDate>Wed, 27 Aug 2008 21:09:03 +0000</pubDate>
		<dc:creator>rwb</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[academia]]></category>
		<category><![CDATA[cryptography]]></category>
		<category><![CDATA[deduction]]></category>
		<category><![CDATA[logic]]></category>

		<guid isPermaLink="false">http://blog.rwberg.org/?p=39</guid>
		<description><![CDATA[Yes, the lyrics to this delightful song by Santana (featuring the always forgettable Rob Thomas) share a truly fascinating phenomenon. It is the belief or need for reason merely because of the existance of one&#8217;s true love&#8230;or, in my case, a Cryptanalysis course. While studying common methods for cryptography, there was quite a debate when [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, the lyrics to this delightful song by Santana (featuring the always forgettable Rob Thomas) share a truly fascinating phenomenon. It is the belief or need for reason merely because of the existance of one&#8217;s true love&#8230;or, in my case, a Cryptanalysis course.</p>
<p>While studying common methods for cryptography, there was quite a debate when discussing how humans crack the <a href="http://en.wikipedia.org/wiki/Caesar_cipher" target="_blank">Caeser Cipher</a>. Everyone seemed to have a strong opinion on whether the method was induction or deduction that humans would use to experiment with various 2- and 3-letter word possibilities, as you do in my mother&#8217;s personal vice: <a href="http://www.cryptograms.org/" target="_blank">the cryptogram</a>.</p>
<p>As I pointed out, to much derisive laughter, it&#8217;s neither. The correct form of reasoning to use here is abduction. This kind of methodology is not as pure as its bother and sister, deduction and induction, as it can lead to incorrect results. However, this sort of reasoning is arguably the most visible in our modern society. In particular, mysteries and detective-work almost always begin with a great deal of abductive reasoning. A trick to remembering these is to walk through a scenario. Here&#8217;s one that I made up:</p>
<blockquote><p>Sherlock Holmes went to his friends house for tea and found his friend laying in the entrance with a gash on his head and a bloody candlestick next to him; he was dead. Using abductive logic, he could guess that he was struck and killed by the candlestick.  It is possible that he died some other way, and that may not even be his blood on the candlestick, but it is fairly reasonable to make that step.  Based on this, he could could also use inductive reasoning to estimate that a human struck him (a fairly strong induction as Sherlock remembers only 1 in 200 beating victims that he&#8217;s seen attacked by an animal).</p>
<p>Sherlock then remembers that his friend&#8217;s will stated that &#8216;if I die, my butler will take over and own my estate&#8217;. Since the man is dead, the butler must own the estate. This fine bit of deductive reasoning tells Sherlock It&#8217;s probably a good idea for him to go talk to the butler.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.raymondberg.com/archives/39/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Review: Information Assurance</title>
		<link>http://blog.raymondberg.com/archives/38</link>
		<comments>http://blog.raymondberg.com/archives/38#comments</comments>
		<pubDate>Tue, 26 Aug 2008 20:09:47 +0000</pubDate>
		<dc:creator>rwb</dc:creator>
				<category><![CDATA[academia]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[IA]]></category>
		<category><![CDATA[information]]></category>
		<category><![CDATA[information assurance]]></category>
		<category><![CDATA[publications]]></category>

		<guid isPermaLink="false">http://blog.rwberg.org/?p=38</guid>
		<description><![CDATA[The first piece of assigned reading in my graduate studies is a paper by Maconachy (et als) entitled &#8220;A Model for Information Assurance: An Integrated Approach&#8221;. It is the first of many I plan to be reading for the Enterprise Security Management class, which is a broadly scoped class dealing with security and policy from [...]]]></description>
			<content:encoded><![CDATA[<p>The first piece of assigned reading in my graduate studies is a paper by <a href="http://www.cisse.info/colloquia/cisse12/program/Vic%20Maconachy.htm" target="_blank">Maconachy</a> (et als) entitled &#8220;A Model for Information Assurance: An Integrated Approach&#8221;. It is the first of many I plan to be reading for the Enterprise Security Management class, which is a broadly scoped class dealing with security and policy from a managerial point of view. This latest sweep of courses follows the Information Assurance (IA) standard that is torching older concepts of computer and data security.</p>
<p>By and large, the paper is extremely simple (and quite short), but I&#8217;m not really aware of how influential this paper has been over the years.  It was written in 2001, and I have been told that it&#8217;s the seminal piece of this entire movement&#8230;but that&#8217;s really hard for me to believe. Especially since the <a href="http://en.wikipedia.org/wiki/McCumber_cube" target="_blank">McCumber INFOSEC Model</a> (the McCumber Cube) was published in 1991, and this paper basically just tosses that model into a &#8220;fourth dimension&#8221; and expands, a little ridiculously,  the characteristics part of the model.</p>
<p>The contributions that I see to the model&#8217;s data characteristics are trivial distinctions in the terminology.  The new Information Assurance Model (a.k.a. McCumber Cube 2.0) merely splits the <em>three </em>Information Characteristics into <em>five </em>Security Services. Their main contention with the earlier work, I infer, was that the loose definition of data integrity was insufficient to outline what was really needed. Their addition of Authentication and Non-Repudiation may have merit, as Integrity of data is commonly used to measure immutability and structural continuity, but I don&#8217;t see it as necessary for those with a background in data integrity. I guess if everyone is reading something, it&#8217;s probably good that  CIO&#8217;s to hackers probably need to see the distinction between the data integrity itself and the integrity of the source and the retrieval process.</p>
<p>Regarding my statement on, and obnoxious quotation of, their &#8220;fourth dimension&#8221;, this paper added the additional, singularly organic concept of Time to this idea. Where most previous outlines have neglected this concept, I do see the point they make with the steady changes over time. My experience in this area isn&#8217;t immense so I don&#8217;t know if they&#8217;re singularly responsible for this idea, but the modeling of that idea is actually quite sound.</p>
<p>For me, this concept of adapting security over time is a lot like dropping a 12 gallon, cube-shaped water mass (in honor of McCumber) into an 8 gallon bucket with a hole in it. If you figure the water is about 6 feet up then there are a few reasons why a lot of the water isn&#8217;t going to make it into the bucket to begin with: it&#8217;s just not a perfect match. When it does hit the bucket there&#8217;s going to be a pretty large splash, and a lot of what was put in place will be thrown out right away. The last few phases are a sort of balancing until the surface water is still. Unfortunately, still water is the worst place to be and you&#8217;re never going to have a completely full bucket unless you&#8217;re measuring and adding slowly until you&#8217;ve balanced the flow of water coming in and the water draining out of that hole. This image is simplified, but it&#8217;s pretty apt.</p>
<p>It is important for me to point out that any negative perspective I have regarding this paper may not be for any other reason than because a perfect, albeit figurative, cube was converted into an elongated box which poses as a cube.  I&#8217;ve been known to commit worse acts of hostility, but I&#8217;m just all about cube-equality.</p>
<p>The biggest point that I share with people is that technology is the cutting edge, and the very tip of that edge is security. This is becoming validated on an ever increasing increment with the growth of cloud computing and high-availability, online systems. Not only do IA standards address this, but they also encourage the constant measurement and addition of water. Google, Amazon, and all the other big players need to have this technology and need to assess it with respect to time and progress. While this paper did bring out those concepts, I don&#8217;t know how much this was solidified beyond existing standards. But I&#8217;m not too worried about Google missing the boat on this.</p>
<p>The entire movement to IA is quite interesting to me, and I&#8217;m looking forward to getting more exposure in the coming months. Most of my closest colleagues know that I&#8217;m much more interested in policy than your normal CS-geek. Actually, I&#8217;m fully cognizant of the fact that policy makers hold all of the power and still get to see a lot of the fun. My ideal job would be working for a leading, technology-driven agency and pioneering/expanding policy while getting to sit in on disciplinary and review committees to observe impacts of changes being made.  At least that&#8217;s what I see right now; this ESM class will probably make or break it for me.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raymondberg.com/archives/38/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
