November 12, 2014: Microsoft open sourcing .NET

Here’s the official Microsoft release.

This is great.  This provides an alternative path for developers to smash into Linux and Mac development while using their existing skill set.  This expands the Microsoft base and allows them to offer Premium services (becoming more service oriented like a Red Hat or Ubuntu) while providing their world class tools to developers.

.NET was never sold, so I can’t see a down side to this announcement.  Much kudos to Satya Nadella for this change.

Disclaimer:  This is the announcement.  We won’t see the actual result of this change for a while yet, but it is exciting to see.  And I do predict that we will see impact from this change.

Hanselman has a great summary of everything happening here.

Posted in General | Leave a comment

November 11, 2014: Lexar USB 3.0, Books, and More

I picked up a Lexar 3.0 USB drive this weekend, the one featured on Reddit for the disk usage indicator.  The drive’s damned fast.  It’s funny that it’s returned to the days of sneakernet – I can copy multigig files to this thumb drive, walk over to my server, and copy them off faster than I can copy them over my (admittedly dated) fast ethernet network.

lexarIt should be noted that they’re currently ~$30.00 on Amazon, but I picked mine up at Office Max for $20.

Second, picked up two new visual guides to Javascript & JQuery and HTML5 and CSS3.  They’re very high quality books, in full color and very visual.

IMG_20141111_152011Recommended.  (The set I linked to on Amazon is the price I paid for one of the two books at Barnes & Noble.)

Finally, my attempt to finish the games I’ve bought on Steam continues.  Currently I’m working on Risen and Mars:  War Logs.    These games are getting in the way of studying for the OCA/OCP certifications, but it must be done.  I shall not remain one of those players where 90% of their library is completely unplayed!

I did finish Shadowrun Returns: Dragonfall recently and I cannot imagine a better use of $15.00 for an RPG fan.  Seriously.

Posted in General | Leave a comment

Oracle 1Z0-061: SQL Fundamentals I Exam Guide, Chapter 2

Chapter 2: Data Retrieval Using the SQL Select Statement

Two Minute Drill

List the Capabilities of SQL Select Statement

  • The three fundamental operations that SELECT statements are capable of are projection, selection, and joining.
  • Projection refers to the restriction of columns selected from a table.  Using projection, you retrieve only the columns of interest and not every possible column.
  • Selection refers to the extraction of rows from a table.  Selection includes the further restriction of the extracted rows based on various criteria or conditions.  This allows you to retrieve only the rows that are of interest and not every row in the table.
  • Joining involves linking two or more tables based on common attributes.  Joining allows data to be stored in third normal form in discrete tables, instead of in one large table.
  • An unlimited combination of projections, selections, and joins provides the language to extract the relational data required.
  • A structural definition of a table can be obtained using the DESCRIBE command.
  • Columns in tables store different types of data using various data types, the more common of which are NUMBER, VARCHAR2, DATE, and TIMESTAMP.
  • The data type NUMBER(x, y) implies that numeric information stored in this column can have at most x digits, but the whole number portion can have at most x-y digits.
  • The DESCRIBE command lists the names, data types, and nullable status of all columns in a table.
  • Mandatory columns are also referred to as NOT NULL columns.

Execute a Basic SELECT Statement

  • The syntax of a primitive SELECT clause is as follows:  SELECT * | {[DISTINCT] column | expression [alias], …}
  • The SELECT statement is also referred to as a SELECT query and comprises of at least two clauses, namely the SELECT clause and the FROM clause.
  • The SELECT clause determines the projection of columns.  In other words, the SELECT clause specifies which columns are included in the results returned.
  • The asterisk (*) operator is used as a wildcard symbol to indicate all columns.  So the statement SELECT * FROM accounts returns all of the columns available in the ACCOUNTS table.
  • The FROM clause specifies the source table or tables from which items are selected.
  • The DISTINCT keyword preceding items in the SELECT clause causes duplicate combinations of these items to be excluded from the returned result set.
  • SQL statements should be terminated with a semicolon.  As an alternative, a new line can be added after a statement and a forward slash which can be used to execute the statement.
  • SQL statements can be written and executed in lowercase, uppercase, or mixed case.  Be careful when interacting with character literals since these are case-sensitive.
  • Arithmetic operators and the string concatenation operator acting on column and literal data form the basis of SQL expressions.
  • Expressions and regular columns may be aliased using the AS keyword or by leaving a space between the column or expression and the alias.
  • If an alias contains multiple words or the case of the alias is important, it must be enclosed in double quotation marks.
  • Naturally occurring single quotes in a character literal can be selected by making use of either an additional single quote per naturally occurring quote or the alternative quote operator.
  • The DUAL table is a single column and single row table that is often used to evaluate expressions that do not refer to specific columns or tables.
  • Columns which are not governed by a NOT NULL constraint have the potential to store null values and are sometimes referred to as nullable columns.
  • NULL  values are not the same as a blank space or zero.  NULL  values refer to an absence of data.  Null is defined as a value that is unavailable, unassigned, unknown, or inapplicable.
  • Caution must be exercised when working with null values since arithmetic with a null value always yields a null result.

Chapter 2:  Self Test

  1. Which query creates a projection of the DEPARTMENT_NAME and LOCATION_ID columns from the DEPARTMENTS table?  (Choose the best answer.)
  2. After describing the EMPLOYEES table, you discover that the SALARY column has a data type of NUMBER(8,2).  Which SALARY value(s) will not be permitted in this column?  (Choose all that apply.)
    1. SALARY = 12345678
    2. SALARY = 123456.78
    3. SALARY = 12345.678
    4. SALARY = 123456
    5. SALARY = 12.34
  3. After describing the JOB_HISTORY table, you discover that the START_DATE and END_DATE columns have a data type of DATE.  Consider the expression END_DATE-START_DATE.  (Choose two correct statements.)
    1. A value of DATE data type is returned.
    2. A value of type NUMBER is returned.
    3. A value of type VARCHAR2 is returned.
    4. The expression is invalid since arithmetic cannot be performed on columns with DATE data types.
    5. The expression represents the days between the END_DATE and START_DATE less one day.
  4. The DEPARTMENTS table contains a DEPARTMENT_NAME column with data type VARCHAR2(30).  (Choose two true statements about this column.)
    1. This column can store character data up to a maximum of 30 characters.
    2. This column must store character data that is at least 30 characters long.
    3. The VARCHAR2 data type is replaced by the CHAR data type.
    4. This column can store data in a column with data type VARCHAR2(50) provided that the contents are at most 30 characters long.
  5. Which statement reports on unique JOB_ID values from the EMPLOYEES table?  (Choose all that apply.)
  6. Choose the two illegal statements.  The two correct statements produce identical results.  The two illegal statements will cause an error to be raised.
    1. SELECT DEPARTMENT_ID || ‘ represents the ‘ || DEPARTMENT_NAME || ‘ Department’ AS “Department Info” FROM DEPARTMENTS;
    2. SELECT DEPARTMENT_ID || ‘ represents the || DEPARTMENT_NAME || ‘ Department’ AS “Department Info” FROM DEPARTMENTS;
    3. select department_id || ‘ represents the ‘ || department_name || ‘ Department’ “Department Info” from departments;
    4. SELECT DEPARTMENT_ID represents the DEPARTMENT_NAME Department AS “Department Info” FROM DEPARTMENTS;
  7. Which expressions do not return NULL values?  (Choose all that apply.)
    1. select ((10 + 20) * 50) + null from dual;
    2. select ‘this is a ‘  || null || ‘ test with nulls’ from dual;
    3. select null/0 from dual;
    4. select null || ‘test’ || null as “Test” from dual;
  8. Choose the correct syntax to return all columns and rows of data from the EMPLOYEES table.
    1. select all from employees;
    2. select employee_id, first_name, last_name, first_name, department_id from employees;
    3. select % from employees;
    4. select * from employees;
    5. select *.* from employees;
  9. The following character literal expression is selected from the DUAL table:  SELECT ‘Coda”s favorite fetch toy is his orange ring’ FROM DUAL;  (Choose the result that is returned.)
    1. An error would be returned due to the presence of two adjacent quotes.
    2. Coda’s favorite fetch toy is his orange ring.
    3. Coda”s favorite fetch toy is his orange ring.
    4. Coda”s favorite fetch toy is his orange ring.’
  10. There are four rows of data in the REGIONS table.  Consider the following SQL statement:  SELECT ‘6 * 6′ “Area” FROM REGIONS;
    1. 1 row returned.  Area column contains 36.
    2. 4 rows returned.  Area column contains value 36 for all 4 rows.
    3. 1 row returned.  Area column contains 6 * 6
    4. 4 rows returned.  Area column contains 6 * 6 for all 4 rows.
    5. A syntax error is returned.
Posted in Oracle | Leave a comment

Oracle 1Z0-061: SQL Fundamentals I Exam Guide, Chapter 1

Chapter 1: Relational Database Design Using Oracle

Two Minute Drill

Position the Server Technologies

  • The Oracle database stores and manages access to user data.
  • The Oracle WebLogic Server runs applications that connect users to the database.
  • Oracle Enterprise Manager is a tool for managing database application servers, and, if desired, the entire computing environment.
  • Languages built into the database for application development are SQL, PL/SQL, and Java.

Understand the Relational Structures

  • Data must be normalized into two-dimensional tables.
  • Tables are linked through primary and foreign keys.
  • Entity-relationship diagrams represent the tables graphically.

Summarize the SQL Language

  • The DML commands are SELECT, INSERT, UPDATE, DELETE, and MERGE.
  • The DCL commands are GRANT and REVOKE.
  • The TCL commands are COMMIT, ROLLBACK, and SAVEPOINT.

Use the Client Tools

  • SQL*Plus is a command line utility installed into the Oracle Home.
  • SQL Developer is a graphical tool installed into its own directory.
  • Both tools require a database connection, consisting of a username, a password, and a connect identifier.

Create the Demonstration Schema

  • The demonstration schemas are provided by Oracle to facilitate learning but must be created before they can be used.

Chapter 1:  Self Test

  1. What components of the IT environment can Oracle Enterprise Manager Cloud Control manage?  (Choose the best answer.)
    1. Oracle databases
    2. Oracle application servers
    3. Third party products
    4. The server machines
    5. All of the above
  2. What languages can run within the database?  (Select all that apply.)
    1. SQL
    2. C
    3. PL/SQL
    4. Java
    5. Any other language linked to the OCI libraries
  3. Data that is modeled into a form suitable for processing in a relational database may be described as being:  (Choose the best answer.)
    1. First normal form
    2. Third normal form
    3. Abnormal form
    4. Paranormal form
  4. An entity-relationship diagram shows data modeled into:  (Choose the best answer.)
    1. Two-dimensional tables
    2. Multidimensional tables
    3. Hierarchical structures
    4. Object-oriented structures
  5. SQL is a set oriented language.  Which of these features is a consequence of this?  (Choose the best answer.)
    1. Individual rows must have a unique identifier.
    2. Sets of users can be managed in groups.
    3. SQL statements can be placed within blocks of code in other languages, such as Java and PL/SQL.
    4. One statement can affect multiple rows.
  6. Which of these constructs is not part of the SQL language?  (Choose all that apply.)
    1. Iteration, based on WHILE.
    2. Iteration, based on FOR..DO.
    3. Branching, based on IF..THEN..ELSE.
    4. Transaction control, based on COMMIT.
    5. Transaction control, based on ROLLBACK.
  7. Which of these statements regarding SQL Developer are correct?  (Choose two answers.)
    1. SQL Developer cannot connect to databases earlier than release 10g.
    2. SQL Developer can be installed outside an Oracle Home.
    3. SQL Developer can store passwords.
    4. SQL Developer relies on an LDAP directory for name resolution.
  8. Which of the following are requirements for using SQL Developer?  (Choose two correct answers.)
    1. A Java Runtime Environment
    2. The OCI libraries
    3. A name resolution method such as LDAP or a TNSNAMES.ORA file.
    4. The SQL*Plus libraries
    5. A graphical terminal
  9. Where may the demonstration schemas be created?  (Choose the best answer.)
    1. The demonstration schemas must be created in a demonstration database.
    2. The demonstration schemas cannot be created in a production database.
    3. The demonstration schemas can be created in any database.
    4. The demonstration schemas can be created in any database if the demonstration user is created first.
  10. How can you move a schema from one user to another?  (Choose the best answer.)
    1. Use the ALTER SCHEMA MOVE … command.
    2. You cannot move a schema from one user to another.
    3. A schema can only be moved if it is empty (or if all objects within it have been dropped).
    4. Attach the new user to the schema, then detach the old user from the schema.
Posted in Oracle | Leave a comment

MonoGame: Getting Started with NuGet


I am using the following software to write the article.  If yours differs your experience may be radically different; be warned.

  • Visual Studio Ultimate 2013 Update 2 (12.0.30501.00)
  • Windows 7 SP1
  • Firefox 30

Installing via NuGet

NuGet is (from  “a Visual Studio extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects that use the .NET Framework.”  NuGet is available for Visual Studio 2010 and above, with some limitations.  More information is available in the NuGet FAQ.

It really is quite nifty and a great way to resolve dependencies, as long as you’re aware of how to use it.  In our case we’re going to be installing MonoGame v3.2.2 through the Package Manager Console.  As always, step by step, it goes like this.

First, open Visual Studio 2013.

NuGetInstallationStep1Second, click on Tools, then look for NuGet Package Manager about halfway down the menu, then click on Package Manager Console, as highlighted in the next screenshot.

NuGetInstallationStep2This will open the Package Manager Console in your lower window section, as seen highlighted in red below.

NuGetInstallationStep3The first thing we want to do is find the MonoGame package.  To do so, click into the Package Manager Console and type the following command:

get-package -remote -filter monogame

A listing of known NuGet packages which have the word “monogame” in their description is returned, as seen in the next screenshot.

NuGetInstallationStep4What is the difference between MonoGame, MonoGame-Portable, and MonoGame.Binaries?  Well, MonoGame.Binaries is actually a dependency of MonoGame; as for MonoGame-Portal we’ll let the author answer that question over at StackOverflow.

We want MonoGame, v3.2.2 in this case. Before we can retrieve the package we need to open a solution for it to reside in.  Either open an existing solution, or create a new Console Application project.

NuGetInstallationStep5Click into the Package Manager Console and enter the following command to retrieve and install it.

install-package MonoGame

This will retrieve the latest version of MonoGame available via the NuGet system.  It takes a bit of time for the MonoGame team to package new versions and release them on NuGet so this may not always be the latest version, but it should be.

NuGetInstallationStep6If you’re prompted to overwrite a file and you created a new project for this installation, choose Yes.  Otherwise you’ll need to make the decision yourself.

At this point your project is prepared to use MonoGame.

Personally, I prefer the Visual Studio installation method.  It’s more permanent and feels more complete.

Next is a classic “Hello, World!”


Posted in Games, Programming | Leave a comment

MonoGame: Getting Started


So I’ve decided on using MonoGame and am going to be writing articles as I go about learning to use it myself.  This will be the first article.

I am using the following software to write the article.  If yours differs your experience may be radically different; be warned.

  • Visual Studio Ultimate 2013 Update 2 (12.0.30501.00)
  • Windows 7 SP1
  • Firefox 30
  • MonoGame v3.2

The first thing to do is to install MonoGame.  There are two ways to get MonoGame into a project; either by downloading the Visual Studio installer or by using NuGet.

Downloading the Visual Studio Installer


The MonoGame HomepageClick on the Downloads link in the upper right corner.

MonoGame DownloadsClick on the latest version available to you.  In my case, at this time, that’s v3.2.

MonoGameDownloadsVersionThere will be two options available for downloading, MonoGame 3.2 for Visual Studio (local mirror) and MonoGame 3.2 on GitHub.  Click on the MonoGame 3.2 for Visual Studio link and wait for the download to finish.

Where your file downloads and saves files is dependent upon your specific operating system and browser.  For me, with Firefox 30, the file saved to my user specific Downloads folder.

When you execute the installer you’ll most probably encounter a UAC prompt, asking if you’re sure you want to allow the application from an unknown publisher to make changes to your computer.  Choose yes when prompted.  (No screenshot because I haven’t a clue as to how to take a screenshot of a UAC prompt.  Try it.)

MonoGameInstallationStep1Click Next.

MonoGameInstallationStep2My recommendation is to leave everything that’s checked, checked.  The size of the installation is miniscule compared to modern hard drives, and it’s often easier to ignore something than to rerun an installer and install it properly.

Click Install.

MonoGameInstallationStep3The installer will process the installation.

MonoGameInstallationStep4And will prompt you when finished.  Click Finish.

Now, open up Visual Studio 2013.

Click File, New, then Project.

VisualStudioVerificationStep1The MonoGame installer creates a new series of project templates.  They can be found under Templates,

VisualStudioVerificationStep2 Visual C#,


VisualStudioVerificationStep4If you see the MonoGame subsection of the Visual C# subsection, you have successfully installed MonoGame v3.2.  Next up we’ll show how to install via NuGet, followed by the classic “Hello, World!” tutorial.


Posted in Games, Programming | Leave a comment