Sunday, June 8, 2014

Mint 17

Wow, I guess it's a long time since I blogged.

I'm installing Mint 17 Mate on my laptop this weekend.

Last year I went through a lot of pain installing Linux on this hardware due to Linux support for UEFI still being in its infancy. I'm happy to say jumping through all those hoops is a thing of the past with Mint 17.  This was pretty much a routine install.

For the first time, I didn't need to do anything special with the window manager.  Usually I have to switch to metacity or mutter, but in this case marco just works.

I could not get either mintbackup or the dpkg/dselect technique to work this time, possibly due to all the additional repos, such as xorg-edgers, I had installed to get things working previously.  Or possibly I should say, after one 8 hour attempt to restore everything led to an unstable system, I was out of time to experiment with this.  I figure since this is a 5 year LTS release I'll have plenty of time to install all the packages I want, and I do still have the list of the ones I installed before to install manually as needed.

The xorg-edgers packages I formerly needed to get Bumblebee to work are now part of the standard repos.  See Nvidia Optimus on Linux Mint 17 - GT650M ASUS N56, for example.  This is now an easy and routine thing.

Suspend and hibernate work out of the box, yay.

Monday, October 28, 2013

Pair programming

I was looking at a job description at a place I'd really like to work.  Everything about it sounded great, but it also said this:

'We pair program all day, every day because we know it delivers remarkable results.'

I have a number of concerns about pair programming.  Wouldn't there be a suffocating lack of privacy?  How can you get in the 'zone' with someone right there yammering at you?

What about when you're doing something other than coding?  At my previous job I was assigned to work on some code that was new to me.  It used an ancient proprietary framework that I wasn't that familiar with.  I spent about a week researching to understand the existing code.  If my pair programming partner knew the answers to all of my questions, great, but otherwise, how would two people effectively work on a problem like this at the same time?  Maybe it's just my imagination failing but this doesn't seem like it would work.

Here's two 'pro' articles:

I love Pair Programming
First Impressions of Paired Programming

And a 'con' article:

Why I Don't Like Pair Programming (and Why I Left Pivotal)

I decided to go ahead and apply.  I feel like this is something I need to learn to flesh out my experience and become a well-rounded developer.

Wednesday, October 23, 2013

Spring Web Flow

I was looking for something to walk me through Spring Web Flow in easy stages.
There's nothing on the snazzy new Guides page.

This was pretty good:

Spring Web Flow 2 Tutorial by Ivan A Krizsan

It's slightly retro (2010), but I found it pretty easy to follow and everything worked.

To get access to the Maven 'webapp-jee5' archetype, I needed to configure the Maven Central catalog as described here

Update: The Spring Web Flow chapter in Spring in Action is really good.  It's not free, though.

Working example at my Github repo.

Monday, October 14, 2013

I'm on Github

I've used Github for work-related stuff, so, not that big a deal, but this is my first personal Github repo:

https://github.com/BlackTrenchCoat/pokemon.git

This is my Spring and Hibernate playground.  It's a Pokemon-related app.  It's nowhere near finished (though I've been working on some version of this on and off since 2010).

I'm hoping this will be useful when prospective employers ask for code samples.  It's often a problem producing code that is 100% purely mine from work.  Plus we sure aren't doing a lot of Spring and Hibernate at my day job.

Saturday, September 14, 2013

HP Envy 17t-j000 (5) (hybrid graphics)

Note: skip down to 'Update 9/28' for the successful way to get hybrid graphics working.

Today I tried installing  NVIDIA-Linux-x86_64-319.49.run from Nvidia Drivers.  It went all the way through installation without errors (other than a message about not being able to run some preinstall script).  And now I can use 'optirun'.  'optirun glxgears' reports 800 FPS instead of the 60 FPS it was reporting before.

I can't run glxgears without optirun any more.  It says
% glxgears
Xlib:  extension "GLX" missing on display ":0.0".
Error: couldn't get an RGB, Double-buffered visual

Here's what inxi is saying now:

% inxi -Gxx
Graphics:  Card: Intel Haswell Integrated Graphics Controller 
    bus-ID: 00:02.0 
X.Org: 1.13.3 drivers: intel (unloaded: fbdev) FAILED: 
    vesa Resolution: 1920x1080@60.0hz 
GLX Renderer: N/A GLX Version: N/A Direct Rendering: N/A

% optirun inxi -Gxx 
Graphics:  Card: Intel Haswell Integrated Graphics Controller 
    bus-ID: 00:02.0 
X.Org: 1.13.3 drivers: intel (unloaded: fbdev) FAILED: 
    vesa Resolution: 1920x1080@60.0hz 
GLX Renderer: GeForce GT 740M/PCIe/SSE2 GLX Version: 4.3.0 
    NVIDIA 319.49 Direct Rendering: Yes

800 FPS? That seems a little on the slow side... the ATI Radeon HD 6770 on my desktop computer gets over 10,000 FPS.

When I was trying to run the install script (NVIDIA-Linux-x86_64-319.49.run), the first error it gave me was the 'You do not appear to have an NVIDIA GPU supported by the NNN.NN NVIDIA Linux graphics driver'.  Then it gave me a second error to the effect that I couldn't install the driver with X already running.  But when I rebooted in 'text' mode, both of these errors went away.  So, they really mean it about turning off your X server to install the driver, but more importantly, the error message is misleading.  I wonder if when I was trying this a month ago if I ever tried shutting X off, or did I just see the  'You do not appear to have an NVIDIA GPU' error and give up?

I reconfigured the few games I occasionally play on this computer to use 'optirun'.  Everything looks good except for 'pinball', which gets an error like this:
ERROR: ld.so: object 'libdlfaker.so' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object 'librrfaker.so' from LD_PRELOAD cannot be preloaded: ignored.
Initing SDL

0 joysticks were found.
Couldn't set video mode: Couldn't find matching GLX visual

Looks like totem is an OpenGL application.  So when I just put a DVD in the drive, I guess it's not going to play.  How can I configure totem and other apps that I'm not running from a launcher on the desktop to use optirun?

I thought  vlc might work now with optirun, but no... still just a solid green screen.

 I was getting ready to update all the OpenGL apps in my xscreensaver config file, but looks like there's more to it than that.  Screen saver 'hacks' fail with an error like
superquadrics: root window's visual 0x20 does not support the GLX extension.
But note that 'optirun superquadrics' from the command line works fine.

I tried this:
sudo apt-get install --reinstall xserver-xorg-video-intel 
    libgl1-mesa-glx libgl1-mesa-dri xserver-xorg-core
to get the Intel OpenGL graphics working again. That worked, but Nvidia graphics went away. I reinstalled the Nvidia driver, which fixed Nvidia but broke Intel again.

The problem is that there are conflicts between the two drivers, particularly the OpenGL library:
Smxi was frequently helpful for getting me back to a known-good configuration with just the Intel driver and OpenGL working.

One more useful resource:  Listing of Installed Components from NVIDIA Accelerated Linux Graphics Driver README and Installation Guide.

Update 9/28:

I tried this again using the xorg-edgers repo as described here and this time everything worked.  I'm not sure what I did different, except maybe installing nvidia-25 and bumblebee at the same time?  Whew.  I put many hours into this, but in the end the solution was pretty simple.  When I was beating my head against a brick wall trying to get it to work with the driver from Nvidia's web site, I kept thinking about this and wondering if the conflicts would go away if I was installing the Intel and Nvidia drivers from the same repo.  Looks like the answer was yes.

The only major feature I still don't have working in Linux is Beats Audio.

Tuesday, August 20, 2013

HP Envy 17t-j000 laptop (4) (misc)

A few miscellaneous remarks and observations:
  • The default marco window manager is working fine.  First time for me, but this is Mint 15 instead of the Mint 13 I've been using in the past.  I also gave compiz a quick try; it seems stable.
  • Problems with hibernate.  About one time out of three, resume from hibernate fails with a hideous kernel stack trace.  I tried uswsusp; resume from s2disk always fails (hangs after displaying the 'splash').  Suspend (which is mostly what I use) seems OK.  I was a little surprised to see it resume from suspend if I close the lid and then open it again.  I guess I can live with just suspend.  This is actually pretty cool once I got used to it.  Use Power Management to configure On Battery Power -> When laptop lid is closed -> Suspend.  Then close the lid to suspend and open it to resume.  Still, I would like to get hibernate working so I could switch to Windows and back without losing my whole Linux session.
  • Problems playing a DVD.  I got this working following RestrictedFormats/PlayingDVDs.  The two specific things I needed to do were to set a region on my DVD player using regionset, and to delete my old $HOME/.dvdcss.  To make vlc work, I need to use 'vlc -V x11'.  With volume turned up to 100%, it's borderline audible, but that seems to be true of all applications that use sound.
  • Similar issues just playing a movie file.  Totem is fine.  vlc needs '-V x11'.  Audio volume is too low.
  • The touchpad is awful.  By default there was no way to get a middle button click.  I was able to configure this as described here
  • Just in case anyone is tempted to take the easy way out and just use Windows 8: German government warns key entities not to use Windows 8.
  • Disregarding the warnings of the German government, I installed Steam on Windows 8 and downloaded a bunch of games I already was playing on Windows XP.  Everything seems to work OK.  Frustrating to see Windows 8 easily accessing the Nvidia GPU.

Saturday, August 17, 2013

HP Envy 17t-j000 laptop (3) (hybrid graphics)

This computer uses hybrid graphics.

When X comes up, graphics are being rendered by the Intel Integrated Graphics Processor (IGP).  Glxgears gets about 60 FPS.

Linux detects the  Dedicated Graphics Processor (DGP):

 # lspci | grep -i nvidia
01:00.0 3D controller: NVIDIA Corporation GK208M [GeForce GT 740M] (rev ff)

The first thing I looked into was vga_switcheroo.  The kernel was built with this feature enabled:
# uname -r
3.8.0-27-generic
# grep -i switcheroo /boot/config-3.8.0-27-generic
CONFIG_VGA_SWITCHEROO=y
However, the key directory that vga_switcheroo uses for everything does not exist:
# ls /sys/kernel/debug/vgaswitcheroo
ls: cannot access /sys/kernel/debug/vgaswitcheroo: No such file or directory
The /sys/kernel/debug directory does exist:
# ls /sys/kernel/debug
acpi       cleancache  gpio       kprobes  pwm             suspend_stats   x86
bdi        dri         hid        kvm      regmap          tracing
binder     extfrag     ieee80211  mce      regulator       usb
bluetooth  frontswap   iwlwifi    mmc0     sched_features  wakeup_sources 
I saw some messages like this in /var/log/syslog:
VGA switcheroo: detected Optimus DSM method \_SB_.PCI0.GFX0 handle
I couldn't find anything in the information available from HP about this computer using Optimus, but I decided to consider the possibility. So I installed Bumblebee.  Bumblebee fails with an error like ' Cannot access secondary GPU - error: Could not load GPU driver'.

I soon found that regardless of Bumblebee, the driver just wouldn't load.
# modprobe nvidia-304
ERROR: could not insert 'nvidia_304': No such device
Error (edited for legibility) from /var/log/syslog when this happens:
nvidia: module license 'NVIDIA' taints kernel.
nvidia 0000:01:00.0: power state changed by ACPI to D0
nvidia 0000:01:00.0: enabling device (0000 -> 0003)
NVRM: The NVIDIA GPU 0000:01:00.0 (PCI ID: 10de:1292)
NVRM: installed in this system is not supported by the 304.88
NVRM: NVIDIA Linux driver release.  Please see 'Appendix
NVRM: A - Supported NVIDIA GPU Products' in this release's
NVRM: README, available on the Linux driver download page
NVRM: at www.nvidia.com.
nvidia: probe of 0000:01:00.0 failed with error -1
NVRM: The NVIDIA probe routine failed for 1 device(s).
NVRM: None of the NVIDIA graphics adapters were initialized!
This page suggests loading a more up to date nvidia driver from ppa:xorg-edgers/ppa.  I tried nvidia-325 from xorg-edgers; still wouldn't load.
Note that if you configure the xorg-edgers repository, it might be difficult to remove it afterwards.  There are some instructions how to do this, but it didn't work for me and I wound up recovering my root file system from backups.

I tried nouveau.

I tried downloading the latest driver from the Nvidia web site.  The web site specifically says this supports the GeForce GT 740M, but I was still unable to load the driver.  Error is:
  WARNING: 
You do not appear to have an NVIDIA GPU supported by the 319.32     
NVIDIA Linux graphics driver installed in this system.  For further 
details, please see the appendix SUPPORTED NVIDIA GRAPHICS CHIPS in 
the README available on the Linux driver download page at           
www.nvidia.com.
It feels like there's something fundamental I don't understand about this... maybe something about this hybrid graphics environment is preventing the driver from being loaded, even when it's the right driver.