Saturday 14 October 2017

Bower versus Nuget for Package Management

This fine article argues for Bower above Nuget. However, it acknowledges that Nuget is "the" package manager for .NET and that will not change anytime soon.

Resources for Apache Cordova on Visual Studio

Check out the - twitter feed, and also the website.

Wednesday 6 September 2017

Scanning and TWAIN

The TWAIN Working Group is a not-for-profit representing the imaging industry, fostering universal standards for image acquisition.

Thursday 10 August 2017

Saturday 3 June 2017

An API for Network Interface Cards

NDIS (Network Driver Interface Specification) is an API for network interface cards, developed jointly by Microsoft and 3Com. It is mainly used in Microsoft Windows. NDIS 2.0 was used in Windows 3.1.

Monday 29 May 2017

Linear Algebra on Windows with LAPACK

The LAPACK library is a linear algebra library that succeeds an earlier package called LINPACK. It can be built on Windows using the cross-platform, open source build system, Cmake. It utilises block matrix techniques for efficiency.

Full documentation of LAPACK can be found here.

Parallel Algorithms in C++17

C++17 will introduce parallel algorithms as motivated by Jared Hoberock's thought piece on standardisation of the Parallelism TS (Technical Specification). Jared is the co-creator of Thrust  and is interested in parallel programming models and physically based rendering. His github site is dubbed "Parallel Experiments".

Cool things in C++17

C++17 reached Draft status in March 2017.  Cool features include:
  • nested namespaces (namespace X::Y {}, instead of namespace X { namespace y {}})
  • initializer in if statement (i.e. instead of if (condition), then if ( init; condition)
  • guaranteed copy elision by compilers in some cases
Notes - copy elision refers to a compiler optimization technique that removes unnecessary copying of objects.

Session 0

Every user in Windows is place in a separate session. Session 0 is created on startup and additional sessions are created as needed. Processes (generally services) running in Session 0 have no access to the graphics hardware. User applications must run in Session 1 or higher.

Saturday 15 April 2017

Make Table Headings Run on to Subsequent Pages

By default, table headings are omitted when tables run on to subsequent pages.

To change this -

1. Right click on your table and select "Table Properties"
2. Select "Row"
3. Tick "Repeat as header row at the top of each page"

Job done.

Saturday 4 March 2017

Viewing Code in Landscape Mode in Microsoft Word

Code in Word often looks better in Landscape mode rather than Portrait mode when rendered in Word.

To change a document to Landscape, click on "Layout" (or "Page Layout" in some versions of Word), find Orientation and switch to Landscape.

Manipulating Code in Microsoft Word

Manipulating Visual Studio code in Microsoft Word can be a messy affair.

For example, System.Text is not a recognized word in Word's dictionary.

An Error(argument) function might be corrected to Error ( argument ) by the Grammar Check.

So if you are manipulating code in Microsoft Word, here's the best thing to do. Turn off automatic spelling AND grammar checking as you type.

To do this, go to File, Options, Proofing and uncheck:

  • Check spelling as you type
  • Mark grammar errors as you type
Job done.

Sunday 19 February 2017

Windows Magazines

Visual Studio Magazine is usually the best for previewing upcoming changes in Visual Studio.

MCPmag is also a great resource for Microsoft Certified Professionals.

Sunday 12 February 2017

The NUL terminated string in C - An Ode to the PDP-11

In C, strings are null (or NUL) terminated ("backslash 0").  The PDP-11 assembly language supported NUL terminated strings, as did Martin Richards' BCPL, the precursor of C. Dennis Ritchie found the use of a NUL terminator more convenient than having to store the length of a string. It also makes for some elegant pointer based code!

MBCS and other Compiler Flags in Visual C/C++

When writing C and C++ code in Visual Studio understanding your compiler flags is critical.

These are configured under -

Project -> Properties -> Configuration Properties -> C/C++ -> Preprocessor.

One of the default ones you might come across is _MBCS, which stands for multi-byte character set (an alternative to _UNICODE).  These directives define what the compiler understands a "character" to be. ASCII and ANSI are not multi-byte character encodings.

A useful directive if you want to use the "traditional" C functions like fopen etc.which are deprecated in recent Visual Studio releases is _CRT_SECURE_NO_WARNINGS. (CRT is shorthand for C runtime).

More detail on why functions like fopen are deprecated can be found in this article on Security Features in the CRT.

Monday 2 January 2017

How do I add a comment to an Excel Spreadsheet?

Review Toolbar -> New Comment.

To review and edit - right click the cell and click "Edit comment".