Git with PowerShell and its Viability

Because I am new to Windows I was wondering if this could be done. Git works well with *nix toolset—it was designed around it. Because I am using Windows and its shell right now I was hoping it could do the same. Git for Windows does include a Bash shell and a number of *nix tools, however, I was hoping if it would be reasonable to use just the native tools.

The basics

The regular PowerShell has to be used. PowerShell ISE is for making scripts and some programs will only run on the regular PowerShell (e.g. Vim for instance). If PowerShell ANSI colors are desired to be edited they have to be done so manually—theme support is only available to PowerShell ISE.

PowerShell setup

Here are the Properties I edit:

Options
  Command History Buffer size to 1000, easy for processor to do
  Command History Discard Old Duplicates
  Text Selection Enable line wrapping selection
Layout
  Screen Buffer Size Height to 8000 or large number
  Screen Buffer Size Wrap text on resize

PowerShell configuration create:

test-path                     $profile  # config. existance test
new-item -itemtype file -path $profile  # config. creation

(Warning: After I created the profile I tried text redirection to add text to the file. This led me on a long path learning about file encoding. Text redirection uses a Out-File cmdlet that uses the system’s current ANSI code page which is mainly UTF-16LE (with BOM) for most Windows users now. Since I am mainly a Linux user I use UTF-8 without a BOM. The only help that appears to be reasonable to use UTF-8 without a BOM is to use this function but this will create Windows line endings. Using a regular text editor appears to be the only solution for me. More can be read about it here.

Scripts on Windows require that the ExecutionPolicy to allow them. The profile is considered a script. The current execution policy can be obtained by typing Get-ExecutionPolicy. The execution policy help pages can be viewed by typing help about_signing. I choose to use RemoteSigned where only remote scripts have to be signed: Set-ExecutionPolicy RemoteSigned.

To edit the console colors here are all the variables that can be edited:

[enum]::GetNames([System.ConsoleColor])  # colors available print
$host.ui.rawui                           # colors fore/back-ground print
$host.ui.rawui.foregroundcolor         = "Green"
$host.privatedata                        # colors for errors print
$host.privatedata.errorbackgroundcolor = "darkcyan"

The PowerShell syntax highlighting can altered. To see the set values type get-psreadlineoption. To set them type set-psreadlineoption -tokenkind comment gray....

Vim setup

Vim is a good text editor to work with Git for me. I hope to be able to continue using it. However, PowerShell uses unique ANSI colors and I lacked the know-how to map together Vim’s and PowerShell’s (like this other user). PowerShell itself is only a 16 color terminal which is good enough with a good Vim colorscheme. I edited PowerShell’s colors to match the ANSI colors (this post) shows how they line up. My Vim colorschemes look better now but how Vim is handling the background color and maybe other things the colorschemes look off still. I have yet to resolve this.


To install:

  • executable installer download
  • installation options:
    Vim executables  # gvim and runtime files are likely desired
    Vim console      # vim.exe for console version
    _vimrc           # configuration with many basic settings
    plugin directrys
    native lang      # english default (for other languages)
    .bat files       # vim shortcuts... unrecognized in PowerShell
  • installation location can be for allusers or local (e.g. C:\Program Files (x86)\Vim or $HOME\AppData\Local\). I recommend local as configuration files can be tucked there and because local data can only be edited by the local user.

For Vim to be recognized in PowerShell I create an alias (allusers may install vim.bat, vimdiff.bat): Set-Alias vim "C:\Program Files (x86)\Vim\vim80\vim.exe". I be recognized every time PowerShell is launched I added it to the $profile.

I also created a hackish $MYVIMRC setting so UTF-8 is used. Here is how it works: UCS [Unicode Character Set] is used as part of UTF-8 and UTF-16, so I set the characters that Vim uses to UTF-8). fileencoding can now be left blank for discovery and will adopt &encoding (UTF-8) otherwise:

if has ("multi_byte")
  if &termencoding == ""    " characters the keyboard uses, null=basic of $enc
    let &termencoding = &encoding
  endif
  set encoding=utf-8        " characters that Vim uses
  setglobal fileencoding=   " encoding of the file, null=discovr else=encoding
  "setglobal bomb            " byte-order-mark used for discovery, leaves mark
endif

Git setup

When installing Git I used all the default settings.

After the install, I was able to use Git normally. I had wondered if Git would be tied to a number of *nix tools for it to be able to function: thank goodness it appears from all uses I have done that it can run on its own. I am happily using Git from PowerShell now.

External links

Microsoft Surface Pro 3 Overview

I wanted a tablet that would help me type. I am a journalist and hoped to have the ability of a tablet to handle it. I bought a Surface Pro 3 with a Type Cover (snap on keyboard) because of a video I found on YouTube. This tablet works good for me and is handling other tasks well like graphic creation. It is also reasonably sized and lightweight; this makes it easy to carry in my backpack. Read this hardware review for hardware information.

This is an overview of the Surface Pro 3. I created a install CD, tested the hardware, and did some custom setup options.

Install Disc creation

I learned the hard way. I grokked that an install DVD was legacy, that the Reset PC and other tools in the Windows Recovery Environment could fix it. I had to buy it new later ☻ (BTW the boot error was entirely my own fault). The good news is that Microsoft has made available a Install DVD that can be downloaded. A search for Windows Media Creation Tool lead me to the right place.

Recovery Environment creation

Most Windows installations have a Recovery Environment partition. The Recovery Environment has tools to repair common problems and is real useful. However I have only been start it when in a running Windows installation (under Recovery Options). To have it always available a Recovery Environment creation utility exists to put it on a DVD or Flash Drive or SD card. Type create a recovery drive to open it.

If there is ever a need to recover Windows later this page has more details.

Hardware test and benchmarks

I wanted to test the hardware to make sure it was working correctly. I used the Windows Memory Diagnostic (open Start Menu and type this is the quickest way to get to it) utility first. Then did disk error check (File ExplorerThis PC(right-click C:\, Properties)Tools TabError checking Check. Then I ran a S.M.A.R.T. test on the disk. S.M.A.R.T. tests are built into the disk drives themselves and test the functionality of the hardware. I recommend doing a S.M.A.R.T. extended test with smartctl.

I tested the drive speeds as:

drive             read  write
----------------  ----  -----
SSD               ~500  100
USB Flash drive:  ~100  12
----------------
* MB/sec

Custom setup options

  • display scaling (aka desktop scaling): I increased to 158%: change display settingscustom scaling. (For a 217PPI display 225% is technically right so the scaling must be disproportional.)
  • display color calibrate: I have a guide that might help
  • recycle bin link to quick access to leave Desktop open for work files: themesDesktop icon settings
  • power plan adjustments: Control PanelHardware and SoundPower OptionsChange plan settingsChange advanced power settings
           bat  plg
slideshow  ava       # battery life should be ok with this on
sleep      10   45
hibernate  45   -    # hibernate loads quick enough
brightnes  50   50   # easy for the eyes brightness level
adaptbrig  on   on   # adaptive brightness is a nice bonus
  • touchpad
    • “leave touchpad on when a mouse is connected” turn off
    • tap as mouse click disable—bottom corners use
    • “drag two fingers to scroll”—on leave, ♥ the two-finger scroll
    • “pinch to zoom”—off turn, occasional and helps avoid accidentals
    • three and four finger gestures—off turn, repetitive and helps avoid accidents
  • right mousebutton key to Right Control key, keyboard-layout_context-menu-key-as-right-control.reg (requires reboot):
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,e0,5d,e0,00,00,00,00
  • date format I customized as “yyMMdd ddd” so that it would fit in the taskbar, this can be done in Control PanelClock, Language, and RegionChange date, time, or number formatsAdditional settingsDate tab

Program additions

  • 7-zip
  • Arachnophilia
  • CorelDRAW
  • Geany—good basic text editor. I wrote a post to pare it down to just what I use.
  • HDGraph
  • Git
  • Steam
  • Vim
  • Visual Studio Code
  • WordWeb

Final thoughts

I am proud I got to own this tablet. Microsoft has put some love in to it. I began with the Surface User Guide I found out online that was very helpful.

I wondered if the 4GB of memory was going to be enough. I have emailed, web browsed, typed, and more and it has been running nicely. The GPU plays videos smoothly. On other GPU intense tasks with some programs on lower settings it can do a bit.

The updates are seamless and I am happy with how Windows 10 is running. The Edge browser I have been using although I am a long time Firefox user. It is efficient and just the basics.

(Tip: I read quite a bit offline and find the Print to XPS option useful. I find a page in web browser and type Ctrl + p. I think I have tried out enough options to be able to save these files nicely offline: The Surface Pro 3 has a 2160 x 1440 resolution, a 3:2 aspect ratio, a 12.01″ diagonal physical size, and a 217 PPI. The closest paper size (and I looked through most of them) is the A2 size, the PPI and size match best. To have it work: use the Landscape view and scale 200%. Scaling is necessary because Print to XPS only does 96 PPI. Thereafter in the XPS Viewer the page will need to be scaled down to look right; this can be done with Ctrl + N. Also tabloid at 150% also works good.)

External links

A beginner’s primer for the Amazon Fire

00-post

I have a dream of being able to use a tablet as a personal computer. I bought an Amazon Fire tablet to see if it was possible. This is my first time buying either an Android or Amazon product. I gave the tablet a good going over. I had a good experience and thought I would share my observations to people new to the Amazon Fire or could use a few tips.

The good

  • the display is pleasant to look at, it has good color reproduction and a wide viewing angle
  • the glass is hardened, though I’ve been good to it it has more to do with the thoughtful quality of the construction
  • the CPU runs the apps reasonably fast and the graphic animation is usually smooth
  • a SD card slot
  • the files can be organized (either by plugging in the tablet to a personal computer or by a file manager app)
  • the price of $50
  • many apps are available, some quite good

What I would like to see improved

  • built-in storage if it can be done, it is currently four gigabytes after OS updates
  • memory, it is 500MB which makes apps usually have to save states rather then be retained in memory
  • edge tapping, this might be my big, clumsy fingers but I have a hard time with buttons recognition on the edges
  • SD card write access for third party apps for conventional file saves, this would be nice though I know is currently prevented because of a security precaution
  • file organization by folders only, currently Android OS tries to index all the files into four libraries (Documents, Images, Movies, Music) and some apps use these libraries; knowing all file types is a big task and folder organization would mean my family photos don’t get grouped with my web development photos
  • the calendar app to get a notification daemon, currently the app needs to be open to display reminders
  • a setting to define the Text to Speech (TTS) default app; I selected the online TTS app by accident and now when I want to hear pronunciations I have to be online

Book’em

The tablet has a great reader, for both books and the newsstand. It has easy to look at text and is enjoyable to use. I get the feeling the Amazon tablet was created with the intention of expanding on the Kindle stand-alone reader. The Kindle app behaves just like a Kindle product: intuitive to use, responsive, and the standard extra features. The tablet is worth the price, IMHO, if used just for reading.

Doggie in the window

I like the Amazon store and use it occasionally. The first time I bought something I used the web browser, but I learned since the Shop Amazon app provides a better interface: increased font/image size, good organization, a shelf to compare products… it made it kinda fun. I also found it good to write the reviews in.

Power

Battery discharge time depends on screen brightness and wireless. I’ve noticed that using Bluetooth uses a good amount of power. With a slightly dimmed screen and no wireless, I will get about eight hours from the battery. Recharge time with slightly dimmed screen and no wireless takes about four hours to charge; with Bluetooth it takes about seven hours. When not in use about four percent battery discharge will occur in about eight hours.

Accessories that will probably be needed

  • a $10 stylus will help keep the screen clean
  • a $10 cover will help with accidental bumps
  • a $5 microfiber cloth will help clean the screen
  • a $30-$50 keyboard will help typing a lot
  • a SD card will help if planning to use for any amount of time

Tips

  • to move/delete/categorize an app press the app for a few seconds
  • to save home page space categorize the Amazon apps that have a content-page/tab
  • to save home page space turn off to display “Recent Items”, these will still show in the “Recent” content page; Settings > Apps and Games > Amazon Application Settings > Home Screen Settings
  • to switch apps more efficiently with the app switcher touch the window’s title bar
  • to help efficiency consider using the tablet with the orientation as upright – the Android OS is used on many phones where this orientation is common and many apps are designed with this in mind
  • to help performance, it appears to me, it is improved with only a few apps open; apps can be closed in the app switcher by swiping them
  • screenshots are done by holding down power and volume down at the same time for two seconds, a click will sound if successful; it will be saved in Internal Storage/Pictures/Screenshots
  • the tablet will shutdown on its own on a low battery, it does so at zero percent

Keyboard shortcuts

system:

alt   + tab    app switch
ctrl  + t      tablet notifications
space          page down (in browser or readers)
shift + space  page up
alt   + space  search
space + space  lock screen quit

typing:

alt   + left/rght  cursor move to line beginning/end
alt   + up/down    cursor move to doc. beginning/end
ctrl  + left/rght  cursor move to word before/after
shift + arrow      cursor move and select text
                   (+alt/ctrl use as modifiers)
shift + backspace  cursor erase forward character
alt   + backspace  cursor erase line
ctrl  + x/c/v/a    cut/copy/paste/all-select

Silk browser (generally the same as Chromiums):

ctrl + t    tab new
ctrl + tab  tab switch
ctrl + w    tab close
ctrl + l    location bar
ctrl + f    find
ctrl + h    history
ctrl + m    menu
ctrl + r    reload

apps:

menu + b          browser
menu + c          contacts
menu + e          email
menu + l          calendar
menu + p          player (music)
menu + backspace  desktop

Apps I liked

basic:

Converter Free                a unit converter
Dictionary - Merriam-Webster  offline, good defs
DroidEdit                     a nice text editor
File Commander + Cloud        very nice file manager
LastPass                      password manager
MapQuest
NPR News
Podcast Republic
Radar Express
ruler(cm, inch)
Stellarium Mobile Sky May     a nice star chart for a few
TK Music Tag Editor
Weather by MacroPinch
WordWeb - English Dictionary

entertainment:

IMDb
TED
Watch ABC

games:

CSI: Hidden Crimes
Cut the Rope: Time Travel HD
Doodle Numbers
Geometry Dash
Monument Valley
Pocket Mine
Quick Logic Puzzles
Simple Mahjong
Solitaire
Survival Run by Bear Grylis
Temple Run: Oz
The Hunger Game Adventures
The Secret Society–Hidden Mystery
Where's my Water?

Question(s)

01-screenshot

  • Unicode, never could find a way to enter unicode characters… no character map and no key combinations possible
  • are there finger covers I can buy to keep from smudging the screen?

A beginner’s primer for the iPad

blaues_Tablet-150px

I got an opportunity lately to try out and setup an iPad. This was my first time trying an Apple IOS device and I wanted to share a beginner’s perspective for those any who have thought about trying it. I will discuss how to operate it, its design philosophy, and some basic settings that helped me.

Good

  • top quality hardware, all of it, runs smoothly and dependably
  • software is well designed and the user interface intuitive
  • plenty of good apps are available

Could be better

  • no file organization, nor file manager
  • apps often have to reload every time they are switched to

Interoperability

Almost all interoperability is done with three finger gestures: tap, for buttons; finger pinches, for resizing; and swipes, for page flipping. The Home button is used to return to the Desktop.

Design philosophy

Having used computers since the 1980’s, I expected common computer operations to be carried to the IOS. I had the notion to use my iPad as I had my laptop, hoping to get a likewise functionality out of it. One thing I learned definitively though is that the iPad is designed only to be a companion device. To elaborate: it is designed to be a supplemental piece to a personal computer for the purpose of doing specific tasks in an intuitive manner. I did attempt to add common computer functionality to it through apps and settings but it just isn’t designed to do so.

The following point is an expression meant in a positive attitude. However, just for note, I am very peculiar about how I control my files.

The functionality that I expected, that I considered necessary for any computer user, was to be able to manage files. I thought I would be able to rename, organize, copy…. However, there is no file manager. The design philosophy of the IOS is centered around apps. To open a file a user has to adapt their behavior to first recall the app that created it. To transfer files to/from the IOS device requires the user either to: plug the IOS into the personal computer and use iTunes (if the app has iTunes support built in); or use the iCloud app (which I only learned about after returning the iPad). So the process just appears complicated.

Tips

  • a $10 stylus will help keep the screen clean
  • a $10 cover will help keep the tablet safe from common bumps
  • a $30 tablet-sized keyboard is nice for typing… common keyboard shortcuts may not always be available, for Safari hold Command to see them
  • apps can be moved or removed from the desktop, press and hold the app for a few seconds to do so
  • close unused apps for better performance (double-click Home and swipe up)
  • for *nix tools a remote shell account can be used with a SSH app

Apps I liked

  • Apple Store
  • Apple Trailers
  • CBS, NBC, FOX
  • Coda \$10
  • Does not Commute
  • Microsoft Word is free, but Papers is supposed to be real good if it can be afforded
  • Rayman Adventures
  • Vim
  • Weather Channel
  • Wallpapers
  • Yahoo Mail

Feedback

For users that have other ideas, consider giving Apple your iPad Feedback.

decompress—a wrapper script to decompress various archive types

00-post

The Arch Linux BBS has a thread where people put up their scripts so that others can peruse them. A long time ago someone came up with the idea to create a script that would detect various archive formats and decompress them. That post is unfortunately gone now, but I kept the idea and have expanded on it a bit: I’ve added a couple archive types, file detection, program detection, and archive list support. I gave it a good, overall test so I feel comfortable with it.

Options can be in any order:

$ decompress archive-r.zip --help
decompress [*-l] ... — wrapper script to decompress various archive types
  -l, --list  - list archive contents

If an archive’s existence isn’t detected it will be displayed:

$ decompress archive-r.zip
archive non-existent: archive-r.zip

If a program’s existence isn’t detected it will be displayed:

$ decompress archive-q.zip
program required: unzip

Listing support is available:

$ decompress -l archive-q.zip
 archive-q.zip
       32  2016-04-11 10:39   file-q1
       32  2016-04-11 10:39   file-q2

Listing and decompressing can be done for multiple documents:

$ ls
archive-a.tar.bz2  archive-f.tgz       archive-k.txz  archive-p.xz
archive-b.tb2      archive-g.tar.lz    archive-l.7z   archive-q.zip
archive-c.tbz      archive-h.tar.lzma  archive-m.bz2
archive-d.tbz2     archive-i.tlz       archive-n.gz
archive-e.tar.gz   archive-j.tar.xz    archive-o.lz
$ decompress archive-*
archive-a.tar.bz2...
archive-b.tb2...
archive-c.tbz...
archive-d.tbz2...
archive-e.tar.gz...
archive-f.tgz...
archive-g.tar.lz...
archive-h.tar.lzma...
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
archive-i.tlz...
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
archive-j.tar.xz...
archive-k.txz...
archive-l.7z...
archive-m.bz2...
archive-n.gz...
archive-o.lz...
archive-p.xz...
archive-q.zip...

.exe and .rar files are untested because I was lazy. If there is an error its error message will be displayed.

decompress can be found in my general-scripts repository.

compress—a tar wrapper script to simplify archiving files

00-post

I have become accustomed to using long options over the years as they are easier to remember. I do however use tar in numerous ways. I needed to have a quick way to remember how to archive files; I wrote this script to make it real basic:

$ cd ~
$ compress .local/bin/ Development/general-scripts/
archive name [archive.tar.gz]: /dev/sda4/sc
scripture.css  scripts.tar.xz
archive name [archive.tar.gz]: /dev/sda4/scripts.tar.xz
archive exists, overwrite? (y/n): y
archive created: scripts.tar.xz

The compression type to be used will depend on which extension is typed; tar has a nice option called --auto-compress. So, in the above example, typing ...tar.xz will use the LZMA compression algorithm. Just typing Enter on the archive name and the default archive.tar.gz will be used. The script also supports tab-completion for typing the archive name to help navigate folders and files.

compress can be found in my general-scripts repository.

Perl module installation

If doing Perl programming or if another package requires a Perl module, learning how to install one may become necessary. The recommended way to install a Perl module is through the distribution’s repositories, however, they can be installed manually with Perl.

Configure

Perl has its own repository where programmers make available their modules called the comprehensive Perl archive network, which is better known as the CPAN. Perl includes a built-in module that can download, build, and install from the network. For some distributions this module may already be built, however, it is probably a good idea for all to build it… to be sure it is set up correctly. Begin by starting the CPAN module shell so that it may be configured:

perl -MCPAN -e shell

A configuration message will appear… most users will be good with the automatic configuration it recommends. If additional configuring needs to be done later typing o conf init will re-run the configuration dialog. To leave the shell type exit.

Install

The first requirement most people will need to do is build and/or update the CPAN module. Modules can be installed with the built-in module in three ways: from the module shell, from the perl command, or from the CPAN module binary.

From the shell (which was entered in the configuration section), the following command will install a new module, or in this case, update the CPAN module:

install Bundle::CPAN

From the perl command:

perl -MCPAN -e 'install HTML::Template'

From the cpan module binary:

cpan Module::Name

Note: CPAN itself recommends using the cpanm module for installation. Modules will need to be reloaded after being updated: reload cpan.

Execute

Modules are sometimes executable binaries and if they are known to the shell can be executed like any other command. Some modules are support modules and can only be used for programming or by use of another module. Information of installed modules can be discovered with the command perldoc perllocal.

Uninstall

Module maintenance is typically unexpected after installation and the built-in CPAN module has no ability to be able to do so. If the cpanm module is installed it does have the ability with the --uninstall/-U option. It will display the files to be removed and prompt for approval before uninstalling.