At the pub in Hursley on Friday, a white bee landed on the table outside.
An unusual colour, I think it might be an andrena cineraria, a type of miner bee. Ive never seen one before, but it was quite cool to look at.
I’ve been reading with great interest the blog posts from Michael Hall highlighting all the activity in the Ubuntu Touch developer community. It’s exciting to see people have started poking at our fledgling SDK and have already created some cool applications. Likewise, internally at Canonical developers are working hard on the infrastructure, platform and SDK to make it easy, fun and robust to create applications for Ubuntu Touch.
We’re keen to keep lines of communication between the developer community and platform developers wide open, while allowing everyone to get on with their work. From the Canonical side we’ll shortly be publishing more details of our plans for the platform so developers have a better understanding of our roadmap and can set their own expectations accordingly.
On the flip-side we’re also keen to get feedback from developers. We’ve scheduled regular check-up meetings with developers of the Core Apps which are listed on the wiki. Everyone is welcome to attend and join in, but the primary goal of each is to allow us to help Core Apps developers.
It’s great to see that new contributors, hackers and people just having a play with Ubuntu Touch Developer Preview are coming to #ubuntu-touch at all hours of the day and night to get and give help and discuss what they’re doing.
We have noticed though that sometimes people aren’t getting answers to their questions, usually because they ask when many core contributors are asleep or just busy doing other things. This is the nature of IRC, and we’re not looking to force people to only come to the channel at certain times.
We do though want to improve our communication by having a specific time when developers and other experts will actually be around, and if we can’t get an answer immediately, make a note of it so we can get back to people later.
So every Wednesday we’re also holding a regular open “Ubuntu Touch Weekly Clinic” in #ubuntu-touch on freenode IRC at 13:00 UTC. Feel free to ping myself (popey) or Michael Hall (mhall119) on IRC to get our attention
We picked a time when it seems most core contributors are available, covering European afternoon and American morning. Everyone is of course welcome at any time in the channel, this gives us a focal point for our users. This isn’t a formal “Q&A” like the Ubuntu On Air sessions, but simply an accessible-for-most slot when we can guarantee people will be around.
So come along on Wednesday to the “Ubuntu Touch Weekly Clinic” in #ubuntu-touch on freenode IRC at 13:00 UTC
TweetForeman integrates with a bunch of systems such as DNS (BIND, AD), DHCP (ISC) and Puppet when systems get created and destroyed. It does most of this via its smart proxy architecture, where an agent (the proxy) is deployed on your other servers which gets called from your central Foreman host during "orchestration".
Most production setups are a bit more complex though with other systems we don't integrate with in Foreman, so the plugin support in version 1.1 is there to extend Foreman's capabilities. Since this means learning some Ruby and Rails, I've released foreman_hooks so admins can instead write simple shell scripts to hook straight into Foreman's orchestration feature.
I'm going to walk through a example hook to run a PuppetDB command to clean up stored data (facts, resources) when hosts are deleted in Foreman. First we'll install the plugin by adding this config file:
# echo "gem 'foreman_hooks'" > ~foreman/bundler.d/foreman_hooks.rb And then run this to install and restart Foreman: # cd ~foreman && bundle update Fetching source index for http://rubygems.org/ ... Installing foreman_hooks (0.3.1) # touch ~foreman/tmp/restart.txt(Debian users will need to do: sudo -u foreman bundle update instead, due to packaging differences.)
Next, we'll create a hook script that runs when a managed host is destroyed in Foreman:
# mkdir -p ~foreman/config/hooks/host/destroy # cat << EOF > ~foreman/config/hooks/host/destroy/70_deactivate_puppetdb #!/bin/bash # We can only deactivate data in PuppetDB, not add it [ "x$1" = xdestroy ] || exit 0 # Remove data in PuppetDB, supplying the FQDN # # assumes sudo rules set up as this runs as 'foreman': # foreman ALL = NOPASSWD : /usr/bin/puppet node deactivate * # Defaults:foreman !requiretty # sudo puppet node deactivate $2 EOF # chmod +x ~foreman/config/hooks/host/destroy/70_deactivate_puppetdb(on Foreman 1.2, change "host" in the path to "host/managed")
There are a few things here to note. The path we're creating under config/hooks/ refers to the Foreman object and event (see the README). For hosts we can use "create", "update" and "destroy" to extend the orchestration process and there similar events for every other object in Foreman. The 70 prefix influences the ordering with other tasks, see grep -r priority ~foreman/app/models/orchestration for more.
The script gets two arguments, the first is the event name ("destroy" etc) and very importantly for orchestration events, this can change. If an orchestration task fails, the process will get rolled back so the script will then be called with the opposite event to the one it was first called with. For example, a hook in the create/ directory will first be called with "create", then a later task may fail and it will be called again with "destroy" to revert the change. Orchestration of DNS records etc in Foreman works in the same way. Since this example is only able to remove data and not add it, the first line checks the argument and exits if it isn't asked to destroy. Other scripts should take note of value of this argument.
The second argument is the string representation of the object, i.e. the FQDN for host objects. On stdin, we receive a full JSON representation which gives access to other attributes. There are helpers in hook_functions.sh to access this data, see examples/ to get a copy.
Lastly in this example, we run the PuppetDB command to remove the data. The exit code of orchestration hooks is important here. If the exit code is non-zero, this will be treated as a failure so Foreman will cancel the operation and roll back other tasks that were already completed.
Now when the host gets deleted from either the Foreman UI or the API, the host gets deactivated in PuppetDB: # puppet node status test.fm.example.net test.fm.example.net Deactivated at 2013-04-07T13:39:59.574Z Last catalog: 2013-04-07T11:56:40.551Z Last facts: 2013-04-07T13:39:30.114Z There's a decent amount of logging, so you can grep for the word "hook" in the log file to find it. You can increase the verbosity with config.log_level in ~foreman/config/environments/production.rb. # grep -i hook /var/log/foreman/production.log Queuing hook 70_deactivate_puppetdb for Host#destroy at priority 70 Running hook: /usr/share/foreman/config/hooks/host/destroy/70_deactivate_puppetdb destroy test.fm.example.net
One area I intend on improving is being able to interact with Foreman from within the hook script. At the moment, I'd suggest using the foremanBuddy command line tool from within your script - though you shouldn't edit the object from within the hook, unless you're using the after_create/after_save events.
I hope this sets off your imagination to consider which systems you could now integrate Foreman into, without needing to start with a full plugin. Maybe we could begin collecting the most useful hooks in the community-templates repo or on the wiki.
(PuppetDB users should actually use Daniel's dedicated puppetdb_foreman plugin. I hope development of dedicated plugins down the line will happen as a natural extension.)
As discussed in my earlier The Novatech nFinity n1410 Review, I made a mistake in sticking with the default 128gb SSD. I promised to write up how I carried upgraded my Ultrabook by adding an mSATA drive, but time has passed and I failed to take any notes.
The drive I ordered was a Crucial CT256M4SSD3 256GB m4 mSATA 6Gb/s Internal SSD.
The installation was not difficult, and to the best of my recollection followed these steps:
Apologies that these instructions are so poor, but hopefully the photographs in the Picasaweb album opposite will help.
For some time it has irritated me that launching URLs from my terminal would always launch Iceweasel/Firefox, rather than my default browser Chromium. If you’re running KDE or Gnome, then I accept that this would be governed from somewhere in the desktop environment’s control panel or settings, but I run PekWM, and assumed that setting the default browser in update-alternatives should be enough:
# update-alternatives --config x-www-browserUnfortunately of course many of the applications that I am using are native to KDE or Gnome and probably are still respecting their environment’s settings. In the end it was simply a case of editing:
~/.local/share/applications/defaults.listAnd adding the following line:
x-scheme-handler/http=chromium.desktopNow opening links from my terminal is correctly opening a new tab in Chromium, or running Chromium if it isn’t already.
Joy.
Turnbuckle Boot Cap
I realise that I have made a number of posts on Google+, without posting first on my blog. This is the first of several posts that I will be making to correct that oversight…
Sailing boats typically have plastic or rubber cylindrical covers for the lower part of the shrouds and stays (the wires that hold up the mast). These covers are apparently called “Turnbuckle Boots”.
Turnbuckle boots should be topped off with caps, but it is quite common to see the caps broken or missing entirely.
Turnbuckle Boot Cap is a replacement for those caps. It is fully parametric and printed perfectly without support.
Having purchased my Novatech nFinity n1410, I thought that I would install Windows as a virtual machine. Nothing easier, I thought, and trotted off to my local Currys.
On entering Currys there was plenty of evidence of the new Windows 8, but I noticed that all the copies were upgrades from Windows 7 or Windows XP. Currys explained that they do not stock full copies of Windows, only the upgrades, and stated that this was not a Curry’s issue, but that it was a Microsoft policy to only sell full versions of Windows via their website.
So I found myself searching online for “buy windows 8” and ended up on the Microsoft site, but, as with Currys, the only versions available were upgrades.
Starting to feel like I’d entered the Twilight Zone, I searched at BT Business Direct, this seemed to be much more successful and I found 4 choices available, but all the versions were OEM copies which I assumed that I was not legally permitted to install on a VM. It appeared that the only choices were OEM licences or Retail upgrade licences, on the face of it – leaving users like myself unable to legally buy Windows at all.
I thought perhaps that this was a short-term anomaly post-launch, but it seems not. Apparently the OEM version is all things to all people, being both a Retail copy for non-system builders, and an OEM copy for system builders (read more). If this is correct then this means that those 4 choices at BT Business Direct may be okay for me afterall.
And here is the word from Microsoft on the matter: “If you are building a computer for your personal use or installing an additional operating system in a virtual machine, you can now purchase OEM System Builder software using the Personal Use Licence.” After pouring over the text of EULAs, this is actually easy and unequivocal. Well done Microsoft.
Knowing my preference for all-things GNU/Linux and FLOSS, some of you may be wondering why I need Windows at all. The reasons are very few and I don’t use Windows from one month to the next, but I would find it difficult to eradicate completely:
So there we have it, we can now officially buy the OEM version for our VMs.
At least I think so.
The Southackton group had a pretty good meetup last thursday. Lots of fun things going on. There were walking robots, autonomous wheeled robots, RF hacking of LightWaveRF remote control systems, arduinos, raspberry pis and more. Also, there was cake!
Autonomous robots
Benjie RF hacking
Mark supplying cake
Hacking some android hardware
Our youngest attendee!
Wheeled robots
Arduino controlled robots
home-built portable server (raspberry pi)
After spending much time trying to choose the perfect Ultrabook, I came to the conclusion that it is either not made, or is prohibitively expensive. In the meantime I ordered a Novatech nFinity n1410 (14″ Intel Core i5 3317 Mobile Processor – 8GB DDR3 Memory) for just £450 (plus VAT).
My expectations were fairly low, given the price, but I expected something that would be adequate and I was pleased to be able to buy a laptop without a Microsoft operating system pre-installed.
Purchase and delivery were quick and painless, thanks to Novatech.
My first impressions were very agreeable, it looked much better than expected with a metal top. The dimensions were just as I had expected – it would fit in my briefcase and be light and portable, but still have a decent sized screen.
Then I went to switch the n1410 on, oh dear, the power switch is terrible! Cheap, nasty, with a horrible unsatisfactory movement. It still irritates me every time I use it. It glows blue when powered and red with disk activity. Once I went to put the laptop in my briefcase and the flashing blue button reminded me that it was still in standby – so yes the button is clearly functional - but still I hate it.
Installing Ubuntu 12.10 was very simple, with no issues whatsoever. With Ubuntu installed and working well, it was time to reboot. I made the mistake of glancing away from the screen for few seconds, and it was already sitting at the login prompt. It boots in less than 15s, it takes longer to shutdown, but this is a great benefit for a portable laptop.
Logging in and things just got better – the buttons all work, including the FN buttons like brightness and media playback. This is seriously impressive and the Ubuntu community deserve congratulations, as this is no mean feat. Given how painless the installation is, you can’t but wonder why Novatech don’t offer Ubuntu as an option.
This all seemed to good to be true, and it was, suddenly the wireless signal dropped out, despite my sitting less than a metre away from the wireless access point. And this kept happening. Googling for an answer I ended up adding the following line to the end of /etc/modprobe.d/iwlwifi.conf:
options iwlwifi 11n_disable=1 bt_coex_active=NThis seemed to make the laptop usable, but it is not a long-term solution. I was advised to try a newer kernel, and I am now on 3.6.3, but it seems no different. The problem seems to be a bug with the iwlwifi module, and it does seem to be known about, so hopefully a fix will wander down to Ubuntu soon. Maybe upgrading to 13.04 will fix all, but that is one for another day.
I tried closing the laptop, whilst still on, and it promptly went into standby mode. I opened the lid again and the laptop sprung back into life, although the wireless was not connected. Restarting network-manager revived the wireless connection. I can live with that. In fact I do find that I frequently need to restart network manager when first powering up, which may well be more evidence of the flaws in iwlwifi.
The screen is glossy, which is never a good thing, but other than that I cannot fault it. The speakers are a little tinny, but I suspect that that is par for the course with an Ultrabook. The keyboard feels a bit cheap and I keep missing letters, or getting letters twice. I hope I get used to this, but it has to be said that the keyboard is not a pleasure to use.
I am also struggling with the trackpad. My previous laptops have had smaller trackpads, which I would occasionally catch when typing. This laptop has a large trackpad, which I am constantly catching, and it is driving me slightly mad. I am not sure that this is the fault of Novatech though, in theory Ubuntu should disable the trackpad when typing, but in my experience it could work better. Maybe I can improve this is some way and I will do further research.
Another trackpad irritation is that the right hand side of the pad seems to be the right-mouse-click, and the left hand side – the left mouse click. Whilst flawlessly logical, it means that right handed users have to travel a long way for left click. I suspect that this is a trait of new Xorg versions, but I have done no research on the matter. Maybe I will get used to it.
The trackpad does have buttons below it, but they are simply horrible to use, requiring a considerable pressure to work, for that reason I tend to only use the trackpad itself.
Sticking with the default 128gb SSD was a mistake though, as I could not even transfer my Pictures folder (blame my young family and camera touting wife!). I knew that popey had added an mSATA drive to his Lenovo X220, and I telephoned Novatech to find out if this would be possible with the n1410. The answer was that yes it had an mSATA port, but that it was limited to 32gb and would only be used to improve the boot speed. I was not convinced that they were correct and Googling the subject showed that Dell had said the same about their laptops, and it was not true. With some concern I ordered a Crucial CT256M4SSD3 256GB m4 mSATA 6Gb/s Internal SSD. To cut a long story short- this proved successful and I intend writing up the experience in a separate post.
Battery life seems excellent – with past laptops I have generally used them connected to the mains, but the battery life on the n1410 is good enough that I am finding myself using it more like a tablet, in leaving it on most of the time. I believe 5 hours should be possible.
Overall this is a very good value Ultrabook. Clearly it is not perfect, but I never expected it to be, I expected it to be adequate and functional, and that it certainly is. That it is also attractive, with a reasonable screen, battery life and all working with Ubuntu is just fantastic. All in all I am very pleased with my new Ultrabook.
Whilst my Company is predominantly a Linux user, it has not been without its problems. OpenOffice in particular struggles with some newer Powerpoint presentations and the lack of the Calibri font seems to cause layout issues. More recently, our primary system vendor has introduced “Business Intelligence” as a product and we would like to take the benefit of that. Unfortunately most of those benefits are only available if you are also running Microsoft Excel 2010 and later, whilst we of course use OpenOffice.
So, with a heavy heart I reached for my dog-eared copy of the Internet, to see what this would cost me. I knew I needed Microsoft Office Professional, as Microsoft Access is occasionally needed. I found that a full retail licence from BT Business Direct cost £205 plus VAT, not so bad after all.
I considered buying 12 of these full retail licences, but decided in the end to contact our BT account manager to request a quote. I was informed by BT that the full retail licences could not be used on a server; no explanation was given for this, but I was assured that this was the case. The result was that the cost would in fact be £288 each, an additional £1000. A rather strange reversal of the usual – the more you buy, the lower the unit price.
As I was going to be installing on a virtual machine, I was also interested in knowing that I would be able to reinstall on a new virtual machine, if for any reason I needed to rebuild. For some reason this seemed far less clear than I would have liked, but ultimately I did receive that assurance; albeit in a way that left me wondering if that would indeed ultimately prove to be the case.
One additional confusion is that 2013 is just out, and so there was a choice of 2010 or 2013, we had been told to buy 2010 or later, in order to work with Business Intelligence, but then I read an article on ZDNet Can Microsoft bring BI to the masses if the Excel 2013 masses can’t get BI?. The upshot seems to be that Microsoft Office Professional 2013 may not be enough – I might need Microsoft Office Professional Plus 2013, which as far as I can see is not even listed on BT Business Direct.
I visited the Microsoft page on Microsoft Office Professional Plus 2013 but this left me none the wiser. Following the link to Licensing Options looked promising, but was not. Following the link to View Licensing Options - seemed to suggest that the only option was a three year Enterprise Agreement, but there was no pricing shown, not even under the “Volume Pricing” heading.
So now I need to re-contact BT to find out if they offer Professional Plus 2013 and try and find out if this is what I need and whether I can in fact reinstall on different hardware.
To seasoned purchasers of proprietary software this might all seem par for the course, or perhaps there is an easier way that I have not yet found? I suspect that the truth is that we are too large a company for buying single licences, but too small a company for an enterprise agreement. Neither fish nor fowl, as the saying goes.
But, for the past 5 years or so, I have not had to think about licensing once. If I need a copy of office, then I download OpenOffice (or more recently LibreOffice); if I need a desktop publishing program, then I download Scribus; a graphics editor, the GIMP; an illustrator, Inkscape. And for each of those programs I can install it for all staff without even a thought about how many licences I might have available.
There is no way out for me, sadly, and I will need to navigate these difficult waters whether I like it or not, but there is a better way and that way is Free Libre Open Source Software (FLOSS).
Following an earlier post on using GPS under Ubuntu, I have been trying to get PolarNavy working under Ubuntu 12.10. Polar Navy is the only Linux chart navigation software available for Linux. I know people will correct me by quoting OpenCPN, but there are no charts currently legally available for the UK, at least that I could find.
Polar Navy has two components – PolarCOM which communicates with the GPS receiver, and PolarView which displays the actual charts. The two applications can connect together, to show the vessel’s current position.
I had Polar Navy working fine under Ubuntu 12.04 i386, but for some reason I had problems running under Ubuntu 12.10 amd64. The problem was that PolarCOM would simply not display the position, i.e. the Lat and Long. I tried running from the command line, and there were a large number of errors when running PolarCOM, for example:
`menu_proxy_module_load': ./PolarCOM.bin: undefined symbol: menu_proxy_module_load
(PolarCOM.bin:4487): Gtk-WARNING **: Failed to load type module: (null)
I eventually fixed that by adding the following to the /opt/polarcom/bin/PolarCOM script:
export UBUNTU_MENUPROXY=0
Sadly PolarCOM was still not working. The GPS Receiver that I use is the BU-353, a terrific piece of hardware that “just works” under Linux. This is the recommended GPS for Polar Navy, which was a happy coincidence. When I plugged in the receiver it was detected as /dev/ttyUSB0, which I noticed had a group “dialout”. I added myself to that group:
$ sudo adduser dialout
I posted a request for help on the Polar Navy forums and they suggested I connect directly to the receiver using screen. I was unsure how to terminate that session, but ended up killing the screen session (Ctrl+Alt+a followed by k to kill). There is probably a better way – feel free to comment below.:
$ screen /dev/ttyUSB0 4800
But doing so just output a load of binary garbage, which I realised (with help from Surrey LUG IRC #surrey on irc.lug.org.uk) meant that the receiver was no longer in NMEA mode. Apparently GPSD automatically reconfigures the receiver to SIRC III binary. I have no idea why this was not a problem in Ubuntu 12.04.
To fix this problem I needed to ensure that GPSD was not running. Unfortunately stopping the service does not seem to terminate the process, so I also had to kill it off:
$ sudo service gpsd stop
$ ps aux | grep gps
$ killall PolarCOM.bin
Next I placed the GPS receiver into NMEA ASCII mode, instead of SIRCIII Binary mode:
$ gpsctl -f -n /dev/ttyUSB0
Lastly, you may also need to configure the serial port, although I did not need to do this:
$ stty -F /dev/ttyUSB0 ispeed 4800
A quick check to see that we are getting ASCII NMEA sentences, showed that it was working perfectly, with easy to read text output from the receiver.
$ screen /dev/ttyUSB0 4800
To prevent GPSD from reconfiguring the receiver again, I then needed to reconfigure it to use read-only mode:
$ sudo dpkg-reconfigure gpsd
And at the point where it requests switches, I added “-b” (Broken Device Safety Mode), otherwise known as read-only mode.
With trepidation I launched PolarCOM, which immediately showed my current position.
Augeas resources in Puppet have always been a bit of a black box, as they use somewhat esoteric commands (based on augtool, but with a different parser), are often not idempotent without some work, and are difficult to test.
Last year I wrote about a small test framework I'd written for augeasproviders, a set of new types and providers. These tools allowed me to check the providers were making the change correctly and were idempotent.
Before his talk on testing Puppet modules at Puppet Camp Ghent, vStone asked me about testing Augeas resources in the same way, so I decided to refactor this code into a new extension for Tim Sharpe's rspec-puppet tool, so it could be used against resources in manifests.
rspec-puppet-augeas is a small gem you can install to run Augeas resources inside your rspec-puppet tests. It runs the resource against as many test fixture(s) as you like, then runs it again to make sure it's idempotent. It can provide debug output from the provider when it goes wrong, and adds many file inspection tools to check it went right.
The README has info on setting up (it's quick) and I've published an example module showing how it should look. There are lots of examples showing off each feature inside the project tests themselves.
Feedback gratefully received. File issues, PRs or contact me on IRC.
The flashing tool for these phones works only on Windows. You also might want to back the phone up. Do not install N820 ROMs on N821 and viceversa.
All files you need are in this archive: https://docs.google.com/file/d/0B-vvQ3P2Q9o0UUVUaEZ3RTVyajg/edit?usp=sharing
Info about this ROM:
Tips
Recovery: Vol up + power, then ‘home’ to display the recovery menu.
Screenshot: Hold vol down and power.
Installing the driver
I’ve seen that many people on internet have problems with this, so I’ll describe the process.
Upgrading the firmware
Restore IMEI
After I’ve installed this ROM on my N821, I noticed it wiped my IMEI.
A link for more detail regarding IMEI on these phones: http://forum.xda-developers.com/showthread.php?t=1677955
I’ve found this ROM here: http://bbs.amoi.com.cn/viewthread.php?tid=37677&extra=page%3D1
If something is not clear enough, don’t hesitate to let me know.
Enjoy ^^