Planet Sysadmin               

          blogs for sysadmins, chosen by sysadmins...
(Click here for multi-language)

January 27, 2012

Geeking with Greg

More quick links

More of what has caught my attention lately:
  • Laptops with Kinect sensors are coming. Worth paying attention to, gesturing in air to issue commands, a very different UX could be built on top of this ([1] [2])

  • "Each streaming subscriber is worth only $2.40 in profit each quarter to Netflix, compared to $17.32 for each DVD subscriber. The old business was very lucrative. The new business kind of sucks." ([1])

  • "You're not going to get content owners to license ... for less than what they get from the cable companies ... [if you will] use that cheap content to destroy the cable companies' business model." ([1])

  • "Federal officials approached Google with evidence of its employees' wrongdoing ... Google agreed to pay $500 million to ... ward off criminal charges against the company." ([1])

  • Google is spending nearly $1B every quarter buying new servers and data centers. That buys a lot of machines. ([1] [2])

  • Education startups are suddenly very, very hot. ([1] [2] [3] [4])

  • "Tiny directional antennas at the top of each rack ... send and receive data. A central controller monitors traffic patterns, finds network bottlenecks, configures the antennas and turns on the wireless links when more bandwidth is required ... The design sped up traffic by at least 45 percent." ([1])

  • "Wimpy cores are fine, but if you go down to the wimpiest range, your gains really have to be enormous if you want to consider all the aggravation -- and the hit to their productivity -- that your software engineers face." ([1])

  • A Facebook engineer explains why is actually the right thing for Facebook to produce buggy code ([1])

  • "How sex, bombs, and burgers shaped our world" ([1])

  • "There is a monolithic view that this generation of technology I.P.O.'s is completely broken." ([1])

  • Just three engineers built and run Instagram, which has 14 million users, 150 million photos, several terabytes of data, and hundreds of machines. ([1] [2])

  • Startup founders "say that if they'd known when they were starting their company about the obstacles they'd have to overcome, they might never have started it." ([1])

  • Two 17-year-olds used a weather balloon to send a little Lego astronaut and a video camera 15 miles into the stratosphere. Very fun. ([1])

by Greg Linden (noreply@blogger.com) at January 27, 2012 04:29 PM

Linux Poison

Powerful and Open MediaCenter for Ubuntu Linux - Enna

Enna is a Media Center application. Featuring a simple user interface, Enna allows the user to browse and play music and video files, browse pictures and play photo slideshows, build a database of the available media retrieve information from the Internet (such as covers, fan art, song lyrics, and much more). Enna is based on the powerful Enlightenment Foundations Libraries (EFL) for its graphical user interface and GeeXboX libraries for multimedia playback and information retrieval.

Enna Currently Supported ...
 * Read your favorite books from over the Internet. Enna currently support GoComics and OneManga content providers.
 * Get information from your system and configure it (as well as Enna) quite easily.
 * Listen to your favorite songs. Enna currently can display your music cover, the usual metadata information (song title, artist, album) and lyrics as well.
 * Provide a pictures wall representation of your photo collection. Also supports customizable slideshow effects.
Continue Reading...

by noreply@blogger.com (Nikesh Jauhari) at January 27, 2012 03:30 PM

apt-get

People Behind Debian: Josselin Mouette, founder of the Debian GNOME team

Josselin Mouette is one the leaders of the pkg-gnome team, he takes sound technical decisions and doesn’t fear writing code to work-around upstream issues. He deserves kudos for the work he has put into packaging GNOME over the years. He can also be very sarcastic (sometimes he even enjoys participating to flamewars on debian lists), and there are quite a few topics where we have long agreed to disagree. But this kind of diversity is also what makes Debian a so interesting place…

Read on to learn more about the pkg-gnome team, its plans for Wheezy, Josselin’s opinion on the GNOME 3 switch, and much more.

Raphael: Who are you?

Josselin: I am a 31 years old Linux systems engineer. I started in life with physics, which I studied at the ENS Lyon. I started a thesis on experimental and numerical models for optoelectronics, but when it became clear that research was not for me, I abandoned it and accepted a job at the CEA, which holds the largest computing center in Europe. Working on these machines has been the most awesome job ever (except for it being near Paris). After that I worked a bit on system monitoring technologies.

I am married, currently living in Lyon, and working for EDF (the French historical electricity company) on scientific workstations using Debian. EDF is using Debian on more than a thousand workstations and holds the fastest Debian supercomputer in the world (200 Tflops), which makes it another obvious place for Debian developers.

Raphael: How did you start contributing to Debian?

Josselin: I discovered Debian in 1999 while studying at the ENS, which is one of the biggest nests of Debian developers – while being a small place, it is producing almost one Debian developer per year on average. After wondering for a while what it could be useful for, hacking on a slink snapshot made me think that it was for, well, everything except for gaming. Later, in 2002, when I was working on optoelectronics computing codes, I started to package them for Debian in order to make them easier to install, for us as well as other labs over the world. I started the NM process, and it was going smoothly but also going to take time. However, at that moment, the frozen-bubble game went out and made quite some buzz. Since I knew a guy who knew the game’s developer, he asked me to package it. The package found 3 sponsors in a very short time and was fast-tracked into the archive at a speed that was unseen before. After which the NM process was completed very quickly.

At that time, I was a heavy WindowMaker user, but I didn’t like the direction the project was taking (actually, I wonder if there was one). GNOME was starting to become attractive, but its packaging in Debian was very ineffective, with many inconsistent packages maintained by people who didn’t ever talk to each other – some of them didn’t speak English, and some of them didn’t talk at all. Together with awesome people, among which Jordi Mallach, Gustavo Noronha Silva, JHM Dassen, Ross Burton and Sébastien Bacher, we started the GNOME team in 2003, introducing consistent packaging practices, and initiating synchronized uploads. Releasing a completely integrated GNOME 2.8 in sarge was a considerable achievement; proving (together with the Perl team) that a team was the best way to maintain large package sets changed the way people work on Debian.

“Proving […] that a team was the best way to maintain large package sets changed the way people work on Debian.”

Raphael: You’re one of the most active contributors of the team which is packaging GNOME for Debian. What would you suggest to a new contributor who would like to help the team?

Josselin: There are several ways to contact the team, but the recommended one has always been IRC. We hang on #debian-gnome on the OFTC network, so just come around and ask for us.¹ The real question is what you want to do in the team. Of course, most new volunteers want to help packaging the latest and greatest version of GNOME into unstable as soon as possible, but unless they already have Debian background, this is not the easiest task. Since there are already people working on this, the “big” packages are usually waiting on dependencies.

I used to direct newcomers towards bug triage, but it is a tedious task and I’m now convinced that our huge bug backlog will never be dealt with. The most useful thing to do for newcomers now is probably to find a GNOME or GNOME-related package that needs improvement or is lagging behind, and simply try to work on it. You can also come and fix the bugs you find annoying. Find a patch on the GNOME bugzilla, or cook it yourself, propose it, and if it’s worthy enough you’ll soon get commit access.

“Our huge bug backlog will never be dealt with.”

¹ At this point I feel worth mentioning that if no one answers in 10 minutes, it doesn’t mean that no one will answer in 2 hours, so please stay on the channel after asking.

Raphael: There’s been some controversy about GNOME 3 and the direction that the project is taking. What’s your personal stance on GNOME 3? And what’s the position of the pkg-gnome team?

Josselin: The controversy is not new to GNOME 3, but the large-scale changes made with it have put it more prominently. The criticism usually boils down to a few categories:

  1. General lack of configurability
  2. Strange design decisions
  3. Red Hat centric development
  4. Hardware requirements
  5. Change resistance

The lack of configuration options has been an ongoing criticism since GNOME 2.0 has decided to rip off most of them. Of course, when the control center was redesigned again for 3.0, there was a surge of horrified exclamations from people who missed their favorite buttons. On this topic, I fully concur with GNOME developers. The configuration option that is useful for you is not necessarily useful for someone else. Of course, sometimes developers go a bit too far, but the general direction is right. At work, we found that only a minority of users actually configure anything on their desktops: they just want something that works to launch their applications. Apple and Google have sold millions of devices by making them the simplest possible and without any configuration.

Design decisions are, on the contrary, individual decisions, and each of them, while having reasons behind it, can be questioned. I remember seeing a lot of complaints when the OK and Cancel buttons were reversed in dialog boxes, something that nobody questions anymore. GNOME Shell is full of such changes; some are easy to get accustomed with, some others just make eyebrows raise. The most obvious example is the user menu in GNOME 3.2, which contains an entry to configure your Google account, but no entry to shutdown the computer. Both decisions were taken independently, each of them with (good or bad) reasons, but the result is simply ridiculous. The default configuration in Debian will contain an extension to make it a bit better, but on the whole we don’t intend to diverge from the upstream design, on which a lot of good work has been done.

“On the whole we don’t intend to diverge from the upstream design, on which a lot of good work has been done.”

Point 3 is more complex. Red Hat being the company spending the most on GNOME, it is obvious that their employees work on making things work for their distribution. An example is the recurring discussions about relying on system services that are currently only implemented by systemd. Since there is a lot of (mostly unjustified) resistance against systemd in Debian, and since it won’t work on kFreeBSD anyway, someone needs to develop an alternative implementation of these services for upstart and sysvinit. Everything is in place for someone else to do the job but it has to be done, and this can be frustrating. Especially since it can also be hard to integrate changes needed for other distributions¹.

Hardware requirements are mostly a consequence of the previous criticism: there’s hardware that most distributions just don’t want to bother supporting. We’ve seen it in squeeze with the introduction of a hard dependency on PulseAudio. The Debian GNOME team (together with the Gentoo maintainers) made this dependency optional, carrying heavy patches, in order to cover the cases where it does not work. Now that it has gained more maturity, making this effort obsolete, the new tendency is to require 3D acceleration. For various reasons, it is not available to everyone². On this matter, the position of the Debian GNOME team has always been to support as much different configurations as possible with reasonable effort. Thanks to efforts from the incredible Vincent Untz, upstream supports a so-called “fallback mode”, which is the GNOME panel from 2.x with a lot of its bugs fixed. We intend to support this mode for as long as reasonably possible in Debian, possibly even after upstream ends up dropping it. However, other applications are going to require 3D because GStreamer is moving to clutter too, affecting video playback performance on non-accelerated systems³. For epiphany this is not a problem; only embedded video will be affected. But for totem, this is a major issue; because of that we will probably keep totem 3.0 in wheezy.

Finally, there is a natural human tendency to dislike change (I have it too), and it applies a lot to desktop users’ habits. Needless to say a change of such a scale as introducing GNOME Shell can trigger reactions. However, I don’t think it is reasonable, because of this resistance, to keep gnome-panel 2.x in Debian. This would be a lot of work on obsolete technology, and would prevent the upcoming removal of a lot of deprecated libraries. This time is much better spent improving gnome-panel 3.x in Debian and keeping the “fallback mode” great. One of the change that was made in Debian was to make it easier to find, being available as “GNOME Classic” directly from the login manager, instead of having to find it in an obscure configuration panel. In all cases, I would recommend to actually try GNOME Shell for a few hours before ditching it. I had never been accustomed to a new environment as quickly ever before.

“In all cases, I would recommend to actually try GNOME Shell for a few hours before ditching it.”

¹ Having seen several of my GDM patches reverted without a warning, I know we are not finished with carrying patches in Debian packages.
² Scientific workstations are a non-trivial example, since there is a measurable effect of using 3D in the window manager on heavy 3D applications.
³ On the other hand, on accelerated systems, this feature should end up improving performance a lot.

Raphael: What are your plans for Debian Wheezy?

Josselin: The first goal of the GNOME team is, of course, to provide again a great desktop environment to work on. For wheezy it will probably be based on GNOME 3.4. There also needs to be some work on package management interfaces. Upstream bases everything on PackageKit, but it is not as featureful as the aptdaemon Ubuntu technology. If I have time, I would also like to improve HTTP proxy support, since currently it is based on a stack of terrible hacks.

Raphael: If you could spend all your time on Debian, what would you work on?

Josselin: Obviously I would like to make GNOME in Debian even better. That would imply working on underneath dependencies (what we now like to call plumbing) to make sure everything is working great. This would also imply working more as GNOME upstream to make it more suitable for our needs.

I would also work on large-scale improvements on the distribution, like conditional recommends which I’d love to see implemented¹, or automatic build-dependency generation. I would also work on the installer to make it better for desktops machines.

¹ The idea is to automatically install language packs, or glues between two packages when both packages are installed.

Raphael: What’s the biggest problem of Debian?

Josselin: The obvious answer is the same as the one most people you interviewed before gave: not enough members in core teams. A lot of developers join Debian to work on a small number of pet packages, and don’t necessarily want to be involved with existing teams. It is probably still not obvious enough that the primary way to start contributing to Debian is to join an existing team.

But if there is one thing that is preventing Debian from gaining more momentum now, it is a completely different one: the too short support timeframe. 3 years is really not enough for corporate users. One year to migrate from one version to another is too short, and it is not possible to skip a release. It is definitely possible to change that with reasonable effort: the long-term support after 3 years doesn’t have to cover the same perimeter as the short-term one. For example, we could upgrade the kernel to the version in the current stable release, and stop fixing all non-remote security holes. The important thing is to cover the most basic needs: companies are ready to take the risk of having less support if it allows skipping a version, but not the risk of having no support at all. And even more important is to say that you do something. Red Hat says they support a release for 10 years, but of course after 5 years the supported perimeter is extremely small.

“3 years [of support] is really not enough for corporate users.”

Long-term support will not magically fix all problems in Debian, but it will bring more corporate users into the picture. And with corporate users come paid Debian developers, who can work on critical pieces of the system. Debian was built on the synergy between individuals and companies, and in recent years – perhaps as a reaction against what happened with Ubuntu – we’ve kind of forgot the latter. A lot of individuals have joined the project, and they are actively working, for example, on shortening the release cycle, which goes against the interest of professionals. We should embrace again such users and developers, and that means adapting to the current needs of larger entities.

Raphael: You’re the maintainer of python-support, a packaging helper that was competing with python-central. Both helpers are now deprecated in favor of dh_python2. Does this mean that the situation of Python in Debian is now sane? Or are there remaining problems?

Josselin: dh_python2 (and the Python3 version, dh_python3) has a sane enough design. It fixes a lot of issues in python-central and also python-support, at the expense of somehow reduced functionality for developers. However, just like the previous tools, it merely works around design mistakes in the Python interpreter. For example it is not possible to split binary modules, pure-Python modules and byte-compiled modules in different directory trees, like Perl does – although PEP 3147 introduces a way to do so. There is still no sane and standardized way to deal with module versions. There is no difference made between the module (which is a part of language semantics) and the file containing it (an information which depends on the implementation). Developers heavily rely on introspection features and make assumptions based on the implementation, that make it impossible to work around problems with module files.

Such problems are not restricted to Python. Those who fought against Ruby gems could tell even worse stories. While introducing GObject introspection packages in Debian (they can be used in JavaScript and Python to provide modules based on GObject libraries), I was pleased to see a clear distinction between file and module, but I was again struck by the fact you are not forced to declare API versions in your Python/JS code. In all cases, there is no reliable way to detect runtime dependencies in a given Python or JavaScript file, which leaves the maintainer to declare them by hand, and of course, often be wrong about them. Add to that the fact that most errors cannot be detected before runtime. For all these reasons, and while still being fond of Python for scripts and prototyping, I’ve become really skeptical of using purely interpreted languages to write real applications. Some GNOME developers are moving away from Python and JavaScript, mostly towards Vala; I can only approve of that move and hope the same happens to other projects.

Raphael: Is there someone in Debian that you admire for their contributions?

Of course there is the never-sleeping, never-stopping, Michael Biebl who can upload a whole GNOME release in a single week-end. But there are a lot of awesome people who make Debian something that simply works. I could talk about Cyril Brulebois from the X strike force, Julien Cristau from the release team, Sjoerd Simons for his sound advice and work on plumbing, Luca Falavigna who is so fast at processing NEW, to quote only a few of those I work with frequently. And of course, Jordi and Sam for their humor.


Thank you to Josselin for the time spent answering my questions. I hope you enjoyed reading his answers as I did. Note that you can find older interviews on http://wiki.debian.org/PeopleBehindDebian.

Subscribe to my newsletter to get my monthly summary of the Debian/Ubuntu news and to not miss further interviews. You can also follow along on Identi.ca, Google+, Twitter and Facebook

.

One comment | Liked this article? Click here. | My blog is Flattr-enabled.

by Raphaël Hertzog at January 27, 2012 09:00 AM

Chris Siebenmann

Why metaclasses work in Python

Why metaclasses work in Python

I've covered what you can do with metaclasses (1, 2, 3, 4) and even, sort of, the low level details of how they work (1, 2, 3). But I've never covered the high level view of why metaclasses work, ie what overall Python features make them go (partly because I am so immersed in Python arcana that much of that stuff feels obvious to me, although I doubt it actually is).

To start with, in Python everything is an object and all objects are an instance of something (yes, there are spots where this gets recursive). This includes even things that you wouldn't normally think of as objects, such as functions. Crucially, this includes classes: classes are objects. Any time you have an object in Python, a lot of its behavior is usually provided by whatever it is an instance of (to avoid confusion, I'll call this the type of the object). Classes are no exception to this; a lot of how classes behave is handled by their type, even things like how a new object gets created when you call the class.

(For simplicity, I'm going to ignore old-style Python 1.x classes from here onwards and assume that all classes are new-style Python 2 classes that ultimately subclass object.)

To avoid a point of confusion: classes have ancestor ('base') classes that they inherit from (or just object(), the root class). However, classes are not instances of their base class; we can see why this has to be when we note that a class can inherit from multiple base classes. You can't be an instance of several different things at once. So classes exist in a two-dimensional relationship; they inherit from one or more base classes, and at the same time they are instances of something that provides much of their 'class' behavior. The type of classes (the thing that provides the 'class' behavior) is called type().

(This two dimensional structure can get a bit weird.)

In some languages, the creation of classes is black magic that happens deep in the interpreter and isn't something you can do inside the language (even if the classes are visible as objects). Python has instead chosen to expose the ability to create classes by hand; you you can do this by calling type() with the right arguments (and then binding the class object to a name), just as you create instances of normal classes by calling the class itself. As part of creating classes yourself by hand, you can obviously manipulate class creation; you can create a new class with whatever methods, base classes, and so on you want.

(What's odd about type() is that despite it being a class, you can call it with a single object to get the type of the object.)

Python is also an unusual language in another way; in Python, things like defining functions and classes are themselves executable statements. Python doesn't parse your program, create all the functions and classes, and then start running your code; instead it starts running your code and things like def and class execute on the fly (as does import and so on). So it's natural to have your code running as classes are being created.

The combination of these two things means that Python can easily provide a way to hook your own code into the process of creating the class objects for classes that are written in straight Python, with 'class X(object): ....'. Python is already running code in general when this happens, and the mechanisms of creating classes by hand means it's relatively easy for Python to hand you the bits of the class-to-be so you can modify it and then have everything continue onwards to create a new class. This is why metaclasses can change classes as they are being created.

The other half of why metaclasses work is that Python allows classes to be instances of something other than type(). Since classes get a lot of their 'class' behavior through normal instance method inheritance from type(), a class being an instance of something other than type() lets the other thing intercept or change the normal as-a-class behavior for that class (for example, what happens when you call the class). This is why metaclasses can do things with a class after the class has been created.

by cks at January 27, 2012 05:40 AM

System Adminstrators' Blog

VxVM vxassist ERROR V-5-1-5455 Operation requires a disk group

On this post we will take a closer look at this veritas volume manager error when trying to display the available disk space in an existig datagroup. The error is “VxVM vxassist ERROR V-5-1-5455 Operation requires a disk group

This is a draft post as I currently have no answer yet.. Weird thing is, the vxassist command works on one server and not in the other.. which is spitting out the error in subject.

Take this example:

Working server:


# vxdg list
NAME STATE ID
datadg1 enabled 1169455228.81.sgtjcpb1
datadg2 enabled 1169455429.95.sgtjcpb1
# vxassist -g datadg1 maxsize layout=concat
Maximum volume size: 390506496 (190677Mb)
# vxassist -g datadg2 maxsize layout=concat
Maximum volume size: 676767744 (330453Mb)
# vxassist -g datadg1 maxsize layout=raid5
Maximum volume size: 270483456 (132072Mb)
# vxassist -g datadg2 maxsize layout=raid5
Maximum volume size: 375160832 (183184Mb)

Looks fine right? But when I tried the same syntax on the other sever, I got this:

# vxdg -g sysdg free
DISK DEVICE TAG OFFSET LENGTH FLAGS
sysdg05 emcpower5s2 emcpower5 16777216 2029952 n
sysdg06 emcpower3s2 emcpower3 16777216 2029952 n
sysdg07 emcpower4s2 emcpower4 167772160 2020352 n
# vxassist -d sysdg maxsize layout=concat
VxVM vxassist ERROR V-5-1-5455 Operation requires a disk group
#

I suspect it has something to do with the Veritas VX version or the OS it is running. Will investigate further and let you know.

UPDATE.. saw the error after 5 minutes.. saw it? I found “d” error.

by elizar at January 27, 2012 04:30 AM

January 26, 2012

my other pc is a cloud

Monitoring with Windows Remote Management (WinRM) and Powershell Part I

Hey guys. I should have called this post "Monitoring with Windows Remote Management (WinRM), and Powershell, and maybe a Certificate Services tutorial too," but then the title would have definitely been too long. In any case, I poured many hours of effort and research into this one. Lots of trial and error. And whether it helps anyone else or not, I definitely bettered myself through the creation of this post.

I'm pretty excited about this topic. This foray into WinRM and Powershell Remoting was sparked by a conversation I had with a coworker the other day. He's a senior Unix engineer, so he obviously enjoys *nix and when presented with a problem, naturally he approaches it with the mindset of someone very familiar with and ready to use Unix/Linux tools.

I'm the opposite of that - I feel like Microsoft is the rightful king of the enterprise and usually approach problems with Windows-based solutions already in mind. But what's important is that we're both geeks and we'll both still happily delve into either realm when it presents an interesting problem that needs solving. There's a mutual respect there, even though we don't play with the same toys.

The Unix engineer wants to monitor all the systems using SNMP because it's tried and true and it's been around forever, and it doesn't require an agent or expensive third-party software. SNMP wasn't very secure or feature-rich at first so now they're on SNMPv3. Then there's WBEM. Certain vendors like HP have their own implementations of WBEM. I guess Microsoft wasn't in love with either and so decided to go their own way, as Microsoft is wont to do, hence why you won't find an out of the box implementation of SNMPv3 from Microsoft.

One nice thing about SNMP though, is that it uses one static, predictable port.

In large enterprise IT infrastructures, you're likely to see dozens of sites, hundreds (if not thousands,) of subnets, sprinklings of Windows and Unix devices all commingled together... and you can't swing a dead cat without hitting a firewall which may or may not have some draconian port restrictions on it. Furthermore, in a big enterprise you're likely to see the kind of bureaucracy and separation of internal organizations such that server infrastructure guys can't just go and reconfigure firewalls on their own, network guys can't just make changes without running it by a "change advisory board" first, and it all basically just makes you want to pull your hair out while you wait... and wait, and wait some more. You just want to be able to communicate with your other systems, wherever they are.

Which brings us to WinRM and Powershell Remoting. WinRM, a component of Windows Hardware Management, is Microsoft's implementation of the multi-platform, industry-standard WS-Management protocol. (Like WMI is Microsoft's implementation of WBEM. Getting tired of the acronym soup yet? We're just getting started. You might also want to review WMI Architecture.) I used WinRM in a previous post, but only used the "quickconfig" option. Seems like most people rarely go any deeper than the quickconfig parameter.

Here's an excerpt from a Technet doc:

"WinRM is Microsoft's implementation of the WS-Management protocol, a standard Simple Object Access Protocol (SOAP)-based, firewall-friendly protocol that enables hardware and operating systems from different vendors to interoperate. You can think of WinRM as the server side and WinRS the client side of WS-Management."

I bolded the phrase that especially made my ears perk up. You see, Windows has a long history with things like RPC and DCOM. Those protocols have been instrumental in many awesome distributed systems and tool sets throughout Microsoft's history. But it just so happens that these protocols are also probably the most complex, and most firewall unfriendly protocols around. It's extremely fortuitous then that Ned over at AskDS just happened to write up a magnificent explication of Microsoft RPC. (Open that link in a background tab and read it after you're done here.)

Here's the thing - what if I want to remotely monitor or interact with a machine in another country, or create a distributed system that spans continents? There are dozens of patchwork networks between the systems. Each packet between the systems traverses firewall after firewall. Suddenly, protocols such as RPC are out the window. How am I supposed to get every firewall owner from here to Timbuktu to let my RPC and/or DCOM traffic through?

That's why monitoring applications like SCOM or NetIQ AppManager require the installation of agents on the machines. They collect the data locally and then ship it to a central management server using just one or two static ports. Well, they do other more complex stuff too that requires software be installed on the machine, but that's beside the point.

Alright, enough talk. Let's get to work on gathering performance metrics remotely from a Windows server. There are a few scenarios to test here. One is communications within the boundaries of an Active Directory domain, and the other is communications with an external, non-domain machine. Then, exploring SSL authentication and encryption.

The first thing you need to do is set up and configure the WinRM service. One important thing to remember is that just starting the WinRM service isn't enough - you still have to explicitly create a listener. In addition, like most things SSL, it requires a certificate to properly authenticate and encrypt data. Run: 

winrm get winrm/config

to see the existing default WinRM configuration:

WinRM originally used ports 80 for HTTP and 443 for HTTPS. With Win7 and 2k8R2, it has changed to use ports 5985 and 5986 respectively. But those are just defaults and you can change the listener(s) back to the old ports if you want. Or any port for that matter. Run:

winrm enumerate winrm/config/listener

to list the WinRM listeners that are running. You should get nothing, because we haven't configured any listeners yet. WinRM over SSL will not work with a self-signed certificate. It has to be legit. From support.microsoft.com:

"WinRM HTTPS requires a local computer "Server Authentication" certificate with a CN matching the hostname, that is not expired, revoked, or self-signed to be installed."

To set up a WinRM listener on your machine, you can run

winrm quickconfig

or

winrm quickconfig -transport:HTTPS

or even

winrm create winrm/config/listener?Address=*+Transport=HTTPS @{Port="443"}

Use "set" instead of "create" if you want to modify an existing listener. The @{} bit at the end is called a hash table and can be used to pass multiple values. The WinRM.cmd command line tool is actually just a wrapper for winrm.vbs, a VB script. The quickconfig stuff just runs some script that configures and starts the listener, starts and sets the WinRM service to automatic, and creates some Windows Firewall exceptions. What is more is that Powershell has many cmdlets that use WinRM, and the entire concept of Powershell Remoting uses WinRM. So now that you know the fundamentals of WinRM and what's going on in the background, let's move ahead into using Powershell. In fact, you can emulate all of the same behavior of "winrm quickconfig" by instead running 

Configure-SMRemoting.ps1

from within Powershell to set up the WinRM service. Now from another machine, fire up Powershell and try to use the WinRM service you just set up:

$dc01 = New-PSSession -ComputerName DC01
Invoke-Command -Session $dc01 -ScriptBlock { gwmi win32_computersystem }

Returns:

You just pulled some data remotely using WinRM! The difference between using a "session" in Powershell, and simply executing cmdlets using the -ComputerName parameter, is that a session persists such that you can run multiple different sets of commands that all share the same data. If you try to run New-PSSession to connect to a computer on which you have not configured the WinRM service, you will get a nasty red error. You can also run a command on many machines simultaneously, etc. Hell, it's Powershell. You can do anything.

Alright so that was simple, but that's because we were operating within the safe boundaries of our Active Directory domain and all the authentication was done in the background. What about monitoring a standalone machine, such as SERVER1?

My first test machine:

  • Hostname: SERVER1 
  • IP: 192.168.1.10 
  • OS: Windows 2008 R2 SP1, fully patched, Windows Firewall is on
  • It's not a member of any domain

First things first: Launch Powershell on SERVER1. Run:

Set-ExecutionPolicy Unrestricted

Then set up your WinRM service and listener by running

Configure-SMRemoting.ps1

and following the prompts. If the WinRM server (SERVER1) is not in your forest (it's not) or otherwise can't use Kerberos, then HTTPS/SSL must be used, or the destination machine must be added to the TrustedHosts configuration setting. Let's try the latter first. On your client, add the WinRM server to the "Trusted Hosts" list:

We just authenticated and successfully created a remote session to SERVER1 using the Negotiate protocol! Negotiate is basically "use Kerberos if possible, fall back to NTLM if not." So the credentials are passed via NTLM, which is not clear text, but it's not awesome either. You can find a description of the rest of the authentication methods here, about halfway down the page, if you need a refresher.

OK, I am pooped. Time to take a break. Next time in Part II, we're going to focus on setting up SSL certificates to implement some real security to wrap up this experiment!

by ryanries09@gmail.com at January 26, 2012 04:51 PM

Tech@Sakana

Getting Spotify to run on Gentoo/Linux: A Gross and Cruel Hack

Spotify is a great way to listen to music. Unfortunately the official client only runs on Windows and Mac machines. There is an experimental unsupported client for linux, however it’s provided as a DEB (ubuntu/debian) package.

Here’s a gross hack for whom is desperate to get it working on Gentoo.

Step 1 : Get the package

You can download the package from here.
Pick the package matching your own architecture.

Step 2 : Convert the DEB package and extract it

Install the package deb2targz if you don’t already have it.

The following command will create a tar.gz file from the .deb package :

1
deb2targz spotify-client-qt_0.6.2.291.gcccc1f5.116-1_amd64.deb

You can then extract that tar.gz file like below :

1
tar zxvf spotify-client-qt_0.6.2.291.gcccc1f5.116-1_amd64.tar.gz

This will create you a usr directory, containing spotify files.

Toss them at the appropriate places on your system :

1
2
3
4
cd usr
mv bin/spotify /usr/bin/
mv share/pixmaps/* /usr/share/pixmaps/
mv share/spotify/ /usr/share/

Step 3 : Fixing library issues

Now this is the ugly part. Spotify is linked against specific versions of some libraries (SSL 0.9.8 and Crypto 0.9.8). In order to make it work, you need to fake those versions by creating a symlink from the wanted version to the existing (you’ll need to figure this out) version in your system.

1
2
3
cd /usr/lib
ln -s libssl.so.1.0.0 libssl.so.0.9.8
ln -s libcrypto.so.1.0.0 libcrypto.so.0.9.8

Step 4 : Instructing firefox to open the spotify protocol with the Spotify application

You need to register the spotify protocol so that Firefox will know how to deal with those “spotify:” urls.

  1. Open the about:config page
  2. Create a boolean value by the name of network.protocol-handler.expose.spotify
  3. Set its value to false
  4. Click on a spotify link (for example a playlist link or such). A popup will open and ask you to pick an application. Use /usr/bin/spotify.

That’s it. All set.
I’m not proud of it…. but I wanted to use Spotify badly :-)

Getting Spotify to run on Gentoo/Linux: A Gross and Cruel Hack is a post from: Tech@Sakana - A sysadmin's blog

by Stephane Kattoor at January 26, 2012 03:30 PM

Linux Poison

E-Book Reader for Ubuntu Linux - FBReader

An electronic book (e-book, ebook, digital book) is a book publication in digital form, consisting of text, images, or both, and produced on, published through, and readable on computers or other electronic devices. Sometimes the equivalent of a conventional printed book, e-books can also be born digital.

FBReader is an e-book reader.
Main features:
 * supports several open e-book formats: fb2, html, chm, plucker, palmdoc, ztxt, tcr (psion text), rtf, oeb, openreader, non-DRM'edmobipocket, plain text, epub, eReader
 * reads directly from tar, zip, gzip, bzip2 archives (you can have several books in one archive)
 * supports a structured view of your e-book collection
 * automatically determines encodings
 * automatically generates a table of contents
 * keeps the last open book and the last read positions for all open books between runs
 * automatic hyphenation (patterns for several languages are included)
 * searching and downloading books from www.feedbooks.com and www.litres.ru
 * partial CSS support for epub files

Continue Reading...

by noreply@blogger.com (Nikesh Jauhari) at January 26, 2012 03:30 PM

Google Webmasters

More Options for Google+ Badges

Webmaster Level: All

When we launched Google+ pages in November, we also released Google+ badges to promote your Google+ presence right on your site. Starting today in developer preview (and soon available to all your users), we're adding more options for integrating the Google+ badge into your website. You can configure a badge with a width that fits your site design and choose a version that works better on darker sites. You'll also see that Google+ badges now include the unified +1 and circle count that we added to Pages last month.


If you’re still considering whether to add a Google+ badge on your website, consider this: We recently looked at top sites using the badge and found that, on average, the badge accounted for an additional 38% of followers. When you add the badge visitors to your website can discover your Google+ page and connect in a variety of ways: they can follow your Google+ page, +1 your site, share your site with their circles, see which of their friends have +1’d your site, and click through to visit your Google+ page.

The Google+ Badge makes it easy for your fans to find and follow you on Google+. With these additional options, we hope it's even easier to create a badge that fits your website.

Follow the conversation on Google+.

by Maile Ohye (noreply@blogger.com) at January 26, 2012 01:53 PM

Adams Tech Talk

Zeo Sleep Manager


I received an email out of the blue through my contact form here from a representative over at “Intus Healthcare”. He pointed me in the direction of the Zeo Sleep Manager, with an aim to reviewing it. Sure enough, I was thoroughly interested, and we exchanged a few emails back and forth on it’s serial port, and other such things. Unfortunately at that point, things went dead – I’ve sent him several emails over the past few weeks but haven’t heard anything back. Nonetheless, the product looks really interesting, and hits several of my interests, and so I went ahead and ordered the product. I ordered directly from myzeo.co.uk which seems to be a store front for Intus Healthcare who are apparently Zeo’s UK distributors of the product.

The order process was simple enough, and I’m thoroughly looking forward to receiving the product. I’ll post further updates when it arrives.

by Adam Palmer at January 26, 2012 01:31 PM

Google Blog

Resources to support a new and open world for learning

Googlers are the types who never really leave the classroom. Guest speakers come to campus to give talks on subjects ranging from fiction to physics. Diverse groups of people work together to understand and solve big problems while groups of Googlers engage in passionate debate in our cafeterias. Given this environment, it’s no surprise how highly we value our external work in education. We have a growing number of successful education programs from primary school through to university, as well as a suite of free and open tools that reach families and classrooms around the world.

Recently, we decided to gather our resources and lessons learned into one place for educators everywhere. “Google in Education: A New and Open World for Learning” highlights how people are using Google resources to enhance teaching and learning. This booklet isn’t your typical annual report; it’s a living document for educators to use year-round. We’ve also revamped our website, google.com/edu, to be a one-stop shop for teachers, students, parents and organizations to explore all of our offerings. We’ve launched a Google+ page, where everyone can stay updated on our educational tools, products and programs, and join the conversation.


To develop all of these new materials, we went straight to the source, relying on dozens of educators to provide stories and feedback. We hope these resources will inspire and enable teachers, while affirming our commitment to increasing access to an excellent education for all.

Thanks to educators, students and supporters everywhere for helping to extend our spirit of lifelong learning into classrooms around the globe.

For more information about Google in Education, visit www.google.com/edu/about, and to stay updated on the world of education at Google and connect with fellow educators, follow us on Google+.

by A Googler (noreply@blogger.com) at January 26, 2012 12:23 PM

Google Webmasters

What’s new with Sitemaps

Webmaster level: All

Sitemaps are a way to tell Google about pages on your site. Webmaster Tools’ Sitemaps feature gives you feedback on your submitted Sitemaps, such as how many Sitemap URLs have been indexed, or whether your Sitemaps have any errors. Recently, we’ve added even more information! Let’s check it out:


The Sitemaps page displays details based on content-type. Now statistics from Web, Videos, Images and News are featured prominently. This lets you see how many items of each type were submitted (if any), and for some content types, we also show how many items have been indexed. With these enhancements, the new Sitemaps page replaces the Video Sitemaps Labs feature, which will be retired.

Another improvement is the ability to test a Sitemap. Unlike an actual submission, testing does not submit your Sitemap to Google as it only checks it for errors. Testing requires a live fetch by Googlebot and usually takes a few seconds to complete. Note that the initial testing is not exhaustive and may not detect all issues; for example, errors that can only be identified once the URLs are downloaded are not be caught by the test.

In addition to on-the-spot testing, we’ve got a new way of displaying errors which better exposes what types of issues a Sitemap contains. Instead of repeating the same kind of error many times for one Sitemap, errors and warnings are now grouped, and a few examples are given. Likewise, for Sitemap index files, we’ve aggregated errors and warnings from the child Sitemaps that the Sitemap index encloses. No longer will you need to click through each child Sitemap one by one.

Finally, we’ve changed the way the “Delete” button works. Now, it removes the Sitemap from Webmaster Tools, both from your account and the accounts of the other owners of the site. Be aware that a Sitemap may still be read or processed by Google even if you delete if from Webmaster Tools. For example if you reference a Sitemap in your robots.txt file search engines may still attempt to process the Sitemap. To truly prevent a Sitemap from being processed, remove the file from your server or block it via robots.txt.

For more information on Sitemaps in Webmaster Tools and how Sitemaps work, visit our Help Center. If you have any questions, go to Webmaster Help Forum.

by Jonathan Simon (noreply@blogger.com) at January 26, 2012 12:18 PM

Standalone Sysadmin

PICC Submissions: only 5 days left! Submit now!

I just submitted a proposal for an hour long talk for this year’s PICC Conference in New Jersey. I shouldn’t have waited so long, but at least I got it in.

Submissions are being accepted through the end of the month, and it’s really super-easy to do. All you need is a short paragraph describing the talk or poster session that you’d like to give. Email that to submissions@picconf.org, and they’ll consider it. It couldn’t be easier!

If you’d like, you can also read the Call For Papers online. Hurry and get it in!


by Matt Simmons at January 26, 2012 11:28 AM

Google Blog

Google Earth 6.2: It’s a beautiful world

We're taking bird's eye view to a whole new level with the latest version of Google Earth, released today. With Google Earth 6.2, we’re bringing you the most beautiful Google Earth yet, with more seamless imagery and a new search interface. Additionally, we’ve introduced a feature that enables you to share an image from within Google Earth, so you can now simply and easily share your virtual adventures with family and friends on Google+.

A seamless globe


The Google Earth globe is made from a mosaic of satellite and aerial photographs taken on different dates and under different lighting and weather conditions. Because of this variance, views of the Earth from high altitude can sometimes appear patchy.

Today, we’re introducing a new way of rendering imagery that smoothes out this quilt of images. The end result is a beautiful new Earth-viewing experience that preserves the unique textures of the world’s most defining geographic landscapes—without the quilt effect. This change is being made on both mobile and desktop versions of Google Earth. While this change will appear on all versions of Google Earth, the 6.2 release provides the best viewing experience for this new data.

Grand Canyon before and after

Sri Lanka before and after

Share your explorations with Google+
Google Earth is a great way to virtually explore the globe, whether revisiting old haunts or checking out a future vacation spot. With the Google Earth 6.2 update, we’ve added the option to share a screenshot of your current view in Google Earth through Google+. If you’ve already upgraded to Google+, you can share images of the places you’ve virtually traveled to with your Circles, such as family, friends or your local hiking club. To try this new feature, simply sign in to your Google Account in the upper right hand corner of Google Earth and click “Share.” Images of mountains, oceans, deserts, 3D cities, your favorite pizza shop on Street View—you can now experience all these amazing places around the world with people on Google+.


Search improvements
We’ve also made some updates to the search feature in Google Earth. Aside from streamlining the visual design of the search panel, we’ve enabled the same Autocomplete feature that’s available on Google Maps. We’ve also introduced search layers, which will show all the relevant search results (not just the top ten), so now, when looking for gelato in Milano, you can see all the tasty possibilities. Finally, we’ve added biking, transit and walking directions, so if you’re itching for a change of scenery or looking for a new route for your regular commute, you can now use Google Earth to generate and visualize all your options.


Biking directions in Google Earth


Download Google Earth 6.2 and start exploring and sharing today!



(Cross-posted on the Lat Long blog)

by A Googler (noreply@blogger.com) at January 26, 2012 10:27 AM

Chris Siebenmann

The drawback of modern X font handling gets mysterious

The drawback of modern X font handling gets mysterious

Back in The drawback of modern X font handling I covered how modern X font rendering happens in the client and so can vary from client to client, going from nice on one client to bad on another. I illustrated this with xterm on Fedora and Ubuntu displaying the same font, Fedora well and Ubuntu badly. I now have a good reason to change to using xterm with modern fonts, so I spent part of today poking at this issue; the results have turned this into a genuine peculiar mystery.

What I have so far:

  • the problem does not happen with all programs on Ubuntu. So far xterm and GNU Emacs have the bad font rendering, but Firefox, gnome-terminal, and TK-based programs such as exmh and tkmsg do not; they render DejaVu Sans Mono just like Fedora does.

  • the problem only happens with some monospace fonts, not all of them. The Ubuntu machine I was testing on has 11 candidate fonts listed by 'fc-list :scalable=true:spacing=mono: family'; seven of them show the problem but four do not.

    (The good four are TlwgMono, Tlwg Typo, Courier New, and FreeMono. Unfortunately my preferred xterm font is DejaVu Sans Mono.)

  • the problem is not the Ubuntu version of xterm, the Ubuntu app-defaults file for xterm, or even the Ubuntu Freetype library; I have built the Fedora xterm and my version of Freetype on Ubuntu and used the Fedora app-defaults, and the bad rendering is still there.

  • I've directly set several fontconfig font rendering options that might be doing this without changing anything; at this point I haven't seen any difference with autohint, weight, embolden, or aspect (the last was a wild shot). Similarly, Xft X resources (cf) do nothing that I can see.

    (Forcing autohint=true actually makes the Fedora font rendering slightly but visibly darker while leaving the Ubuntu rendering unchanged for both the good and bad programs.)

  • the problem doesn't happen with xterm on some FreeBSD machines I have handy; they render DejaVu Sans Mono the good way.

Clearly something mysterious is happening in the depths of the Ubuntu version of Xft or something it calls, but only if it's invoked in the right (or wrong) way. Unfortunately I don't think there's any good way for non-experts to see what font rendering choices are being made (the fontconfig library can be coaxed into some debugging output, but it's pretty much 'exports only' from what I can see), so I have no idea if I'll be able to figure out a solution that lets me use the font I want.

(Changing to gnome-terminal is not a solution for me.)

by cks at January 26, 2012 06:23 AM

Simplehelp

How to edit the hosts file in OS X Lion (the very easy way)


Mac Security

One of the added security features to OS X Lion resulted in making edits to the OS X hosts file more difficult. This tutorial will show you how to edit the hosts file without having to use the Terminal or a complicated Application.

Please note: If you’re using OS X “Snow Leopard” (10.6) or lower, you’ll want to use this tutorial to edit your hosts file instead. The method outlined below is intended for Mac’s running OS X Lion (10.7) only.

  1. Start out by heading over to the TextWrangler download page and download TextWrangler.

    TextWrangler is a free text editor for OS X, and is actually a great program (in addition to being required for this tutorial). Install it as you would with most OS X Apps – open the .dmg file and drag TextWrangler to your Applications folder.

    Unlike most OS X Apps, you need to run this program once to complete the installation. So open your Applications folder and double-click TextWrangler to open it.

  2. You’ll be prompted to register TextWrangler, which is completely optional. Whatever you decide – make sure that Install the current command line tools is checked. Then click Skip Registration, Later or Register Now based on your decision.
  3. TextWrangler will now open – and now you can close it :)
  4. Open a Finder window and select Go from the Menu Bar, then Go to Folder… from the list.
  5. Enter in /etc then click Go.
  6. Inside the etc folder, locate the hosts file. Right-click (or control-click for single-button mouse folks) the hosts file, select Open With and then TextWrangler.

  7. click to enlarge

  8. TextWrangler will launch and open your hosts file.

  9. click to enlarge

  10. As soon as you make a change to the file, TextWrangler will display a message (see screenshot below) that says Are you sure you want to unlock “hosts”?. Since you do, click the Unlock button.
  11. Once you make your changes (and be careful – editing the hosts file incorrectly can cause a variety of problems) – save it. You’ll instantly be prompted to enter your password. Do so, and then click OK
.

  • That’s it – you’ve edited you hosts file.
  • ---
    Related Articles at Simple Help:


    by Ross McKillop at January 26, 2012 03:00 AM

    How to Clear the Browsing History on your Kindle Fire


    Kindle Security

    This brief tutorial will show you how to delete the history of sites you’ve visited from the Web Browser on your Kindle Fire.

    1. Start out by selecting Web from the Kindle Dashboard.
    2. When your browser opens, select the “Options” icon (see screenshot below) from the bottom of your Kindle screen.
    3. Now tap the Settings button.
    4. Scroll down to the Saved Data section. Tap the Clear History entry.
    5. When prompted to confirm that you want to delete the browser navigation history, tap OK.
    6. To confirm that your history has been deleted, return to your browser and once again select the “Options” icon.
    7. This time tap the History button.
    8. As you’ll see – your entire browsing history has now been deleted. Also worth noting – you can clear your browser history from directly within this History window – just tap the Clear All button.

    9. click to enlarge

    10. That’s it – you’re done!

    ---
    Related Articles at Simple Help:


    by Ross McKillop at January 26, 2012 12:54 AM

    Ubuntu Geek

    Xnoise 0.1.31 released and installation instructions included


    {lang: 'en-GB'}

    XNOISE is a media player for Gtk+ with a slick GUI, great speed and lots of features.

    Unlike Rhythmbox, Banshee or itunes, Xnoise uses a tracklist centric design. The tracklist is a list of video or music tracks that are played one by one without being removed. This gives you the possibility to enqueue any track in any order, regardless if they are on the same album or not.
    The tracks can be reordered at any time via drag and drop.
    The media browser contains all available media in a hierarchical tree structure of the available metadata. It is easy to find a single track, artist or album by going through this tree or by just entering a search term. From the media browser, music or videos can be dragged into the tracklist to every position.
    Single or multiple tracks, streams, albums or artists can be dragged onto the tracklist and be reordered. Within the playing track, it’s possible to scroll to every position by clicking the position bar.
    (...)
    Read the rest of Xnoise 0.1.31 released and installation instructions included (170 words)


    © admin for Ubuntu Geek, 2012. | Permalink | No comment | Add to del.icio.us
    Post tags: , , ,

    Related posts

    by admin at January 26, 2012 12:19 AM

    January 25, 2012

    Standalone Sysadmin

    Sometimes, you just have to do something to make yourself happy

    Today, I’m in San Jose at the Wireless Mobility Symposium, and while we were planning it, Stephen Foskett jokingly suggested that we needed a “geek-o-meter” to help gauge the technical level of the presentations. It sounded like so much fun that I had to do it. And since it’s the Wireless symposium, it had to be wireless, too, right? Right.

    So I went to the store and bought the cheapest R/C car I could find ($7), took it apart, attached a piece of foam to the wheel, attached an arrow to the foam, made a suitable geek-o-meter image, and had it printed out and mounted on a foam board last night at FedEx.

    Today, I unveiled it at the symposium:


    (Image by Matthew Norwood)

    If you’re curious, the things are, from left to right, a kid’s toy computer, Milhouse from the Simpsons, Alton Brown, Adam and Jamie from Mythbusters, Rear Admiral Grace Hopper, and Sheldon Cooper from The Big Bang Theory.

    Yep, I built a radio-controlled Geek-O-Meter that the Wireless Field Day delegates can control from their seats in the audience. I suspect I’m a little too proud of myself.


    by Matt Simmons at January 25, 2012 07:00 PM

    SysAdmin's Diary

    Anwar Ibrahim Is Like A Boss!

    Picture tells a thousand words. Indeed, Anwar Ibrahim is like a boss, isn’t he? DISCLAIMER I’m not a supporter of Anwar Ibrahim nor a member of Parti Keadilan Rakyat. I just admire this picture. This picture isn’t mine, I found it on Facebook but I forgot the original URL. If you know the original owner, [...]

    by irwan at January 25, 2012 06:23 PM

    Managing Product Development

    Agile Lifecycles for Geographically Distributed Teams, Part 2

    Example 2: Using a Project Manager with Kanban, Silo’d Teams

    This is a product development organization with developers in Italy, testers in India, more developers in New York, product owners and project managers in California.

    This organization first tried iterations, but the team could never get to done. The problem was that the stories were too large. Normally I suggest smaller iterations, but one of the developers suggested they move to kanban.

    The New York developers had a problem biting off more than they could chew. So nothing moved across their board. The Italy developers had a board where the work did move across the board. The teams took pictures of their boards every day and shared the work across a project-based wiki. That allowed the New York-based developers to see the work move across the Italy board. And, that encouraged the New Yorkers to call the Italians and ask some questions. That helped the New Yorkers to change the size of their work by working with the product owners.

    Now, why did the New Yorkers have such trouble originally? Because the developers “knew better” than the product owners, so they changed the stories into architectural features when they had originally received them. (Now they don’t. They leave the stories as real stories.)

    Release planning: Management in California plan with agile roadmaps. They have features planned specifically week-by-week for the next 6 weeks, and have more of a quarter-by-quarter approach after that.

    Iteration planning: No iteration planning because they are using kanban.

    Daily commitment: No daily commitment needed because they use kanban. They do have a checkin a few times a week with each other as a technical team to make sure they don’t create bottlenecks and that they respect the WIP (work in progress) limits.

    At one point, both the New York and Italy developer teams created automated tests so that the testers could catch up and stay caught up with regression tests. They add a story like that every couple of weeks, and they are paying down their automated testing debt.

    The Project manager keeps an eye on the WIP, work in progress. Project manager also shepherds the product owner into keeping the queue of incoming work full and properly ranked. The product owner is notorious for changing the incoming work queue all the time. Project manager makes sure the team does retrospectives and is a little unclear how to do them in such a distributed team. The project manager is not so sure their retrospectives are working, and has started an obstacle list, to make sure the team has transparency for their obstacles.

    Measurements: cumulative flow, average time to release a feature into the product.

    (Want to learn to work more effectively on your geographically distributed team? Join Shane Hastie and me in a workshop April 17-18, 2012.)

    by Johanna at January 25, 2012 04:06 PM

    Linux Poison

    HTML and XML Manipulation Utilities - HTML-XML-utils

    HTML-XML-utils consists of a set of small C programs (filters) that read HTML and XML files and can add a table of contents, an alphabetical index, a bibliography, cross-references, numbered headings, remove elements, count elements, pretty-print them, etc. When it reads HTML, it assumes the code is correct HTML 4.0 or close to it.

    Below are the sets of utilities included:
     asc2xml      -  convert from UTF-8 to &#nnn; entities
     xml2asc      -  convert from &#nnn; entities to UTF-8
     hxaddid      -  add IDs to selected elements
     hxcite       -  replace bibliographic references by hyperlinks
     hxcite-mkbib -  expand references and create bibliography
     hxclean      -  apply heuristics to correct an HTML file
    Continue Reading...

    by noreply@blogger.com (Nikesh Jauhari) at January 25, 2012 03:30 PM

    The Nubby Admin

    How a DevOp Solves Every Systems Administration Problem

    I’m hoping to explore the DevOps phenomena a bit more, as I’ve seen what I believe are some colossal stretches of reasoning lately. To be sure, what I’ve gathered of that general line of thinking seems to be quite an improvement on the standard systems thinking. However, as with anything, it seems to have been speciated, inbred and over sold.

    As a result, if you listen to the more rabid proponents, the following is The One True Solution to all systems engineering and administration problems.

    If anyone wants to take a critical exploration of the DevOps movement, holla!

    by Wesley David at January 25, 2012 02:59 PM

    Google Webmasters

    Update to Top Search Queries data

    Webmaster level: All

    Starting today, we’re updating our Top Search Queries feature to make it better match expectations about search engine rankings. Previously we reported the average position of all URLs from your site for a given query. As of today, we’ll instead average only the top position that a URL from your site appeared in.

    An example
    Let’s say Nick searched for [bacon] and URLs from your site appeared in positions 3, 6, and 12. Jane also searched for [bacon] and URLs from your site appeared in positions 5 and 9. Previously, we would have averaged all these positions together and shown an Average Position of 7. Going forward, we’ll only average the highest position your site appeared in for each search (3 for Nick’s search and 5 for Jane’s search), for an Average Position of 4.

    We anticipate that this new method of calculation will more accurately match your expectations about how a link's position in Google Search results should be reported.

    How will this affect my Top Search Queries data?
    This change will affect your Top Search Queries data going forward. Historical data will not change. Note that the change in calculation means that the Average Position metric will usually stay the same or decrease, as we will no longer be averaging in lower-ranking URLs.

    Check out the updated Top Search Queries data in the Your site on the web section of Webmaster Tools. And remember, you can also download Top Search Queries data programmatically!

    We look forward to providing you a more representative picture of your Google Search data. Let us know what you think in our Webmaster Forum.

    by Susan Moskwa (noreply@blogger.com) at January 25, 2012 02:00 PM

    Blog o Matty

    Free video tutorials for C, Java, PHP, HTML5, Python, MySQL and more …

    I just came across the new boston video tutorial series. I’ve watched 20 of the PHP videos and am hooked. The production quality is great, and the content is really, really good! Once I finish the 200 PHP videos I plan to watch their MySQL and HTML5 videos. Can’t recommend these videos enough, and the [...]

    by matty at January 25, 2012 01:00 PM

    Google Webmasters

    Making form-filling faster, easier and smarter

    Webmaster Level: Intermediate

    One of the biggest bottlenecks on any conversion funnel is filling out an online form – shopping and registration flows all rely on forms as a crucial and demanding step in accomplishing the goals of your site. For many users, online forms mean repeatedly typing common information like our names and addresses on different sites across the web – a tedious task that causes many to give up and abandon the flow entirely.

    Chrome’s Autofill and other form-filling providers help to break down this barrier by remembering common profile information and pre-populating the form with those values. Unfortunately, up to now it has been difficult for webmasters to ensure that Chrome and other form-filling providers can parse their form correctly. Some standards exist; but they put onerous burdens on the implementation of the website, so they’re not used much in practice.

    Today we’re pleased to announce support in Chrome for an experimental new “autocomplete type” attribute for form fields that allows web developers to unambiguously label text and select fields with common data types such as ‘full-name’ or ‘street-address’. With this attribute, web developers can drive conversions on their sites by marking their forms for auto-completion without changing the user interface or the backend.


    Just add an attribute to the input element, for example an email address field might look like:

    <input type=”text” name=”field1” x-autocompletetype=”email” />

    We’ve been working on this design in collaboration with several other autofill vendors. Like any early stage proposal we expect this will change and evolve as the web standards community provides feedback, but we believe this will serve as a good starting point for the discussion on how to best support autofillable forms in the HTML5 spec. For now, this new attribute is implemented in Chrome as x-autocompletetype to indicate that this is still experimental and not yet a standard, similar to the webkitspeech attribute we released last summer.

    For more information, you can read the full text of the proposed specification, ask questions on the Webmaster help forum, or you can share your feedback in the standardization discussion!

    by Maile Ohye (noreply@blogger.com) at January 25, 2012 10:00 AM

    Chris Siebenmann

    The death of system administration: I'm all for it

    The death of system administration: I'm all for it

    Recently there was a little Twitter commotion about Julian Dunn's Chef, devops, and the death of system administration (he later clarified his views). Although it may surprise people, my snap reaction to the idea of the death of system administration was 'good'.

    (I have a number of other reactions to portions of this debate, but 'good' was my first one.)

    Most of what many people think of today as 'system administration' is scutwork, at best boring and uncreative. Racking servers, configuring switches through interminable web or CLI interfaces, running network cables, installing OSes in any way that takes more than about one line of typing, writing an Apache or a mailer or Samba config file yet again, restoring files for people, and so on. That's what I'm talking about. At best these are interesting the first few times you do them; after that, very much not.

    (System administration wasn't always this sort of work, but times have changed.)

    Unless you really do like spending your time doing that or you feel that that sort of work is all that you have to contribute, you are better off without this near monkeywork. Regardless of what your job is called after 'system administration' goes away and the dust settles, you will have shifted to doing actual engaging and creative work and you'll be contributing much more to your organization's success. As I've written before in a different context, having spare time from ordinary day to day 'system administration' is what you need in order to create the big wins. The ultimate version of this spare time is not to have to do the ordinary day to day gruntwork at all.

    As you may have gathered, I am not particularly fond of the scutwork currently involved in a great deal of 'system administration' (although I think there's uses for doing it every so often). As far as I'm concerned, the sooner this sort of system administration dies the better.

    (At the same time, let's not fool ourselves. This death of system administration will put a significant number of people out of work, ie those people who are currently well paid to do nothing but this scutwork. Many of them do not currently have the skills to move up in the food chain; they will either move down to be less well paid operations monkeys or have to change fields entirely. This is going to be a wrenching process that will be very unpleasant for the people involved, and we should both have sympathy for them and understand the full implications of this shift we're casually discussing, advocating, and cheering for.)

    (As a corollary, if you have junior people in your organization and you believe in this shift you should be working with them to make sure that they're developing the skills they'll need for the future, not just spending all of their time doing scutwork for you. And you should be honest with them about how you see their future.)

    by cks at January 25, 2012 06:48 AM

    Debian Admin

    Ubuntu: An Absolute Beginners Guide (PDF Guide)

    Ubuntu is a free, open-source computer operating system with 20 million users worldwide.

    This 30 page guide was written for beginners and will tell you everything you need to know about the Ubuntu experience. You will learn how to install and setup Ubuntu on your computer, find technical support in your community, understand the Ubuntu philosophy, navigate the Unity desktop interface and use Ubuntu compatible software programs. Also with this free guide you will receive daily updates on new cool websites and programs in your email for free courtesy of MakeUseOf.

    Share

    by Admin at January 25, 2012 06:36 AM

    Ubuntu Geek

    Ubuntu: An Absolute Beginners Guide (PDF Guide)


    {lang: 'en-GB'}

    Ubuntu is a free, open-source computer operating system with 20 million users worldwide.

    This 30 page guide was written for beginners and will tell you everything you need to know about the Ubuntu experience. You will learn how to install and setup Ubuntu on your computer, find technical support in your community, understand the Ubuntu philosophy, navigate the Unity desktop interface and use Ubuntu compatible software programs. Also with this free guide you will receive daily updates on new cool websites and programs in your email for free courtesy of MakeUseOf.
    (...)
    Read the rest of Ubuntu: An Absolute Beginners Guide (PDF Guide) (9 words)


    © admin for Ubuntu Geek, 2012. | Permalink | No comment | Add to del.icio.us
    Post tags: ,

    Related posts

    by admin at January 25, 2012 12:18 AM

    January 24, 2012

    Everything Sysadmin

    What to do about SOPA/PIPA?

    The headlines like, "Sen. Reid kills SOPA bill" should really read, "Sen. Reid tells people SOPA is dead so Hollywood can work on more stealthy bill."

    What to do about this kind of thing in general?

    Joel Spolsky nails it:

    (1)
    The internet seems to ignore legislation until somebody tries to take something away from us... then we carefully defend that one thing and never counter-attack. Then the other side says, "OK, compromise," and gets half of what they want. That's not the way to win... that's the way to see a steady and continuous erosion of rights online.
    The solution is to start lobbying for our own laws. It's time to go on the offensive if we want to preserve what we've got. Let's force the RIAA and MPAA to use up all their political clout just protecting what they have. Here are some ideas we should be pushing for:
    * Elimination of software patents
    * Legal fees paid by the loser in patent cases; non-practicing entities must post bond before they can file fishing expedition lawsuits
    * Roll back length of copyright protection to the minimum necessary "to promote the useful arts." Maybe 10 years?
    * Create a legal doctrine that merely linking is protected free speech
    * And ponies. We want ponies. We don't have to get all this stuff. We merely have to tie them up fighting it, and re-center the "compromise" position.

    (2)
    The dismal corruption of congress has gotten it to the point where lobbying for legislation is out of control. As Larry Lessig has taught us, the core rottenness originates from the high cost of running political campaigns, which mostly just goes to TV stations.
    A solution is for the Internet industry to start giving free advertising to political campaigns on our own new media assets... assets like YouTube that are rapidly displacing television. Imagine if every political candidate had free access (under some kind of "equal time" rule) to enough advertising inventory on the Internet to run a respectable campaign. Sure, candidates can still pay to advertise on television, but the cost of campaigning would be a lot lower if every candidate could run geo-targeted pre-roll ads on YouTube, geo-targeted links at the top of Reddit.com, even targeted campaigns on Facebook. If the Internet can donate enough inventory (and I suspect we can), we can make it possible for a candidate to get elected without raising huge war chests from donors who are going to want something in return, and we may finally get to a point where every member of congress isn't in permanent outstretched-hand mode.

    Read the entire thing here: https://plus.google.com/u/0/117114202722218150209/posts/4GgaRiSyaTf

    January 24, 2012 05:07 PM

    SysAdmin1138

    Judicial rubber-hoses

    The other day a Colorado court ordered a defendant to produce the unencrypted contents of their own laptop. This is what I called "rubber hose cryptography", and previously we've heard of efforts in the UK to compel decryption. It has now happened here, and not at the US border. Unlike the UK, this decryption demand in Colorado is not based on a law that specifically says that courts can demand this.

    Wired article

    The counter-argument is quite clearly the 5th amendment right guaranteeing the ability to not self-incriminate. If that decryption key only exists in your head, and disclosing it would incriminate you, then you don't have to yield the key.

    This judge disagreed. I'm not a lawyer, so I can't tell what legal hairs were split to come to this decision. But the fact remains that this judgment stands. The only concession he appears to have made for the defendant is to preclude the prosecution from using the act of disclosure as a 'confession', but the data yielded by the disclosure is still admissible.

    by SysAdmin1138 at January 24, 2012 04:12 PM

    Standalone Sysadmin

    Wesley David tackles the piracy issue

    I think my article on software piracy touched a nerve with a lot of people.

    I’ve been arguing my case with Philip Durbin since then on Google+. I’ve had almost innumerable conversations with people on twitter about it. And it apparently spurred Wesley David into writing a piece talking about the moral side of the issue. Interesting stuff.

    And for the record, because A LOT of people have asked me about it, my definition of theft is straight out of Merriam-Webster.

    I think if you read the article that I wrote, I never said anything about right vs wrong, or illegal vs legal, and that was on purpose. I have mixed feelings about all of it. It’s obviously wrong to take something of someone else’s without their permission. On the other hand, I don’t think that it’s necessarily wrong to do something that’s illegal if the law is in the wrong, either.

    Slightly related is YCombinator’s recent Declaration of War on Hollywood. YCombinator wants to fund startups that will eventually eliminate Hollywood Studios.

    Joel Spolsky recently wrote a piece on Google+ advocating legislation that causes the elimination of software patents and the rolling back of copyright protection. And this is from a guy who’s company makes copyrighted software.

    Between you and me, I think there’s something going on, society-wise. As a group, we’re looking at things differently than we did, even two years ago. I’m not sure if all of the SOPA blackouts would have happened then. I don’t know if it changed with the Arab Spring or not, but it just feels like people are more cognizant of their ability to make change to the world around them. And I think that’s a great thing, and very promising.


    by Matt Simmons at January 24, 2012 03:31 PM

    Linux Poison

    Install and Configure Cherokee Web Server Under Ubuntu Linux

    Cherokee is a high-performance web server. It is very fast, flexible and easy to configure. In fact, it is the fastest web server there is. It offers support for the widespread technologies nowadays: FastCGI, SCGI, PHP, CGI, SSI, TLS and SSL encrypted connections, Virtual hosts, Authentication, on the fly encoding, Load Balancing, Apache compatible log files, Data Base Ba-lancer, downtime-free updates and upgrades, Reverse HTTP Proxy, and much more.

    Unlike many other web servers out there, Cherokee gracefully handles many concurrent connections, has a low memory footprint, and provides load balancing facilities. As such, it is suitable for usage among a wide variety of systems, from tiny embedded devices to huge enterprise grade infrastructures. It is also multi-platform, offering native performance for Unix, Linux and Windows systems.

    Continue Reading...

    by noreply@blogger.com (Nikesh Jauhari) at January 24, 2012 03:30 PM

    Mark Shuttleworth

    Introducing the HUD. Say hello to the future of the menu.

    The desktop remains central to our everyday work and play, despite all the excitement around tablets, TV’s and phones. So it’s exciting for us to innovate in the desktop too, especially when we find ways to enhance the experience of both heavy “power” users and casual users at the same time. The desktop will be with us for a long time, and for those of us who spend hours every day using a wide diversity of applications, here is some very good news: 12.04 LTS will include the first step in a major new approach to application interfaces.

    This work grows out of observations of new and established / sophisticated users making extensive use of the broader set of capabilities in their applications. We noticed that both groups of users spent a lot of time, relatively speaking, navigating the menus of their applications, either to learn about the capabilities of the app, or to take a specific action. We were also conscious of the broader theme in Unity design of leading from user intent. And that set us on a course which lead to today’s first public milestone on what we expect will  be a long, fruitful and exciting journey.

    The menu has been a central part of the GUI since Xerox PARC invented ‘em in the 70′s. It’s the M in WIMP and has been there, essentially unchanged, for 30 years.

    Screenshot of the original Macintosh desktop

    The original Macintosh desktop, circa 1984, courtesy of Wikipedia

    We can do much better!

    Say hello to the Head-Up Display, or HUD, which will ultimately replace menus in Unity applications. Here’s what we hope you’ll see in 12.04 when you invoke the HUD from any standard Ubuntu app that supports the global menu:

    HUD for 12.04

    Snapshot of the HUD in Ubuntu 12.04

    The intenterface – it maps your intent to the interface

    This is the HUD. It’s a way for you to express your intent and have the application respond appropriately. We think of it as “beyond interface”, it’s the “intenterface”.  This concept of “intent-driven interface” has been a primary theme of our work in the Unity shell, with dash search as a first class experience pioneered in Unity. Now we are bringing the same vision to the application, in a way which is completely compatible with existing applications and menus.

    The HUD concept has been the driver for all the work we’ve done in unifying menu systems across Gtk, Qt and other toolkit apps in the past two years. So far, that’s shown up as the global menu. In 12.04, it also gives us the first cut of the HUD.

    Menus serve two purposes. They act as a standard way to invoke commands which are too infrequently used to warrant a dedicated piece of UI real-estate, like a toolbar button, and they serve as a map of the app’s functionality, almost like a table of contents that one can scan to get a feel for ‘what the app does’. It’s command invocation that we think can be improved upon, and that’s where we are focusing our design exploration.

    As a means of invoking commands, menus have some advantages. They are always in the same place (top of the window or screen). They are organised in a way that’s quite easy to describe over the phone, or in a text book (“click the Edit->Preferences menu”), they are pretty fast to read since they are generally arranged in tight vertical columns. They also have some disadvantages: when they get nested, navigating the tree can become fragile. They require you to read a lot when you probably already know what you want. They are more difficult to use from the keyboard than they should be, since they generally require you to remember something special (hotkeys) or use a very limited subset of the keyboard (arrow navigation). They force developers to make often arbitrary choices about the menu tree (“should Preferences be in Edit or in Tools or in Options?”), and then they force users to make equally arbitrary effort to memorise and navigate that tree.

    The HUD solves many of these issues, by connecting users directly to what they want. Check out the video, based on a current prototype. It’s a “vocabulary UI”, or VUI, and closer to the way users think. “I told the application to…” is common user paraphrasing for “I clicked the menu to…”. The tree is no longer important, what’s important is the efficiency of the match between what the user says, and the commands we offer up for invocation.

    In 12.04 LTS, the HUD is a smart look-ahead search through the app and system (indicator) menus. The image is showing Inkscape, but of course it works everywhere the global menu works. No app modifications are needed to get this level of experience. And you don’t have to adopt the HUD immediately, it’s there if you want it, supplementing the existing menu mechanism.

    It’s smart, because it can do things like fuzzy matching, and it can learn what you usually do so it can prioritise the things you use often. It covers the focused app (because that’s where you probably want to act) as well as system functionality; you can change IM state, or go offline in Skype, all through the HUD, without changing focus, because those apps all talk to the indicator system. When you’ve been using it for a little while it seems like it’s reading your mind, in a good way.

    We’ll resurrect the  (boring) old ways of displaying the menu in 12.04, in the app and in the panel. In the past few releases of Ubuntu, we’ve actively diminished the visual presence of menus in anticipation of this landing. That proved controversial. In our defence, in user testing, every user finds the menu in the panel, every time, and it’s obviously a cleaner presentation of the interface. But hiding the menu before we had the replacement was overly aggressive. If the HUD lands in 12.04 LTS, we hope you’ll find yourself using the menu less and less, and be glad to have it hidden when you are not using it. You’ll definitely have that option, alongside more traditional menu styles.

    Voice is the natural next step

    Searching is fast and familiar, especially once we integrate voice recognition, gesture and touch. We want to make it easy to talk to any application, and for any application to respond to your voice. The full integration of voice into applications will take some time. We can start by mapping voice onto the existing menu structures of your apps. And it will only get better from there.

    But even without voice input, the HUD is faster than mousing through a menu, and easier to use than hotkeys since you just have to know what you want, not remember a specific key combination. We can search through everything we know about the menu, including descriptive help text, so pretty soon you will be able to find a menu entry using only vaguely related text (imagine finding an entry called Preferences when you search for “settings”).

    There is lots to discover, refine and implement. I have a feeling this will be a lot of fun in the next two years :-)

    Even better for the power user

    The results so far are rather interesting: power users say things like “every GUI app now feels as powerful as VIM”. EMACS users just grunt and… nevermind ;-) . Another comment was “it works so well that the rare occasions when it can’t read my mind are annoying!”. We’re doing a lot of user testing on heavy multitaskers, developers and all-day-at-the-workstation personas for Unity in 12.04, polishing off loose ends in the experience that frustrated some in this audience in 11.04-10. If that describes you, the results should be delightful. And the HUD should be particularly empowering.

    Even casual users find typing faster than mousing. So while there are modes of interaction where it’s nice to sit back and drive around with the mouse, we observe people staying more engaged and more focused on their task when they can keep their hands on the keyboard all the time. Hotkeys are a sort of mental gymnastics, the HUD is a continuation of mental flow.

    Ahead of the competition

    There are other teams interested in a similar problem space. Perhaps the best-known new alternative to the traditional menu is Microsoft’s Ribbon. Introduced first as part of a series of changes called Fluent UX in Office, the ribbon is now making its way to a wider set of Windows components and applications. It looks like this:

    Sample of Microsoft Ribbon

    You can read about the ribbon from a supporter (like any UX change, it has its supporters and detractors ;-) ) and if you’ve used it yourself, you will have your own opinion about it. The ribbon is highly visual, making options and commands very visible. It is however also a hog of space (I’m told it can be minimised). Our goal in much of the Unity design has been to return screen real estate to the content with which the user is working; the HUD meets that goal by appearing only when invoked.

    Instead of cluttering up the interface ALL the time, let’s clear out the chrome, and show users just what they want, when they want it.

    Time will tell whether users prefer the ribbon, or the HUD, but we think it’s exciting enough to pursue and invest in, both in R&D and in supporting developers who want to take advantage of it.

    Other relevant efforts include Enso and Ubiquity from the original Humanized team (hi Aza &co), then at Mozilla.

    Our thinking is inspired by many works of science, art and entertainment; from Minority Report to Modern Warfare and Jef Raskin’s Humane Interface. We hope others will join us and accelerate the shift from pointy-clicky interfaces to natural and efficient ones.

    Roadmap for the HUD

    There’s still a lot of design and code still to do. For a start, we haven’t addressed the secondary aspect of the menu, as a visible map of the functionality in an app. That discoverability is of course entirely absent from the HUD; the old menu is still there for now, but we’d like to replace it altogether not just supplement it. And all the other patterns of interaction we expect in the HUD remain to be explored. Regardless, there is a great team working on this, including folk who understand Gtk and Qt such as Ted Gould, Ryan Lortie, Gord Allott and Aurelien Gateau, as well as designers Xi Zhu, Otto Greenslade, Oren Horev and John Lea. Thanks to all of them for getting this initial work to the point where we are confident it’s worthwhile for others to invest time in.

    We’ll make sure it’s easy for developers working in any toolkit to take advantage of this and give their users a better experience. And we’ll promote the apps which do it best – it makes apps easier to use, it saves time and screen real-estate for users, and it creates a better impression of the free software platform when it’s done well.

    From a code quality and testing perspective, even though we consider this first cut a prototype-grown-up, folk will be glad to see this:

    Overall coverage rate:
       lines......: 87.1% (948 of 1089 lines)
       functions..: 97.7% (84 of 86 functions)
       branches...: 63.0% (407 of 646 branches)

    Landing in 12.04  LTS is gated on more widespread testing.  You can of course try this out from a PPA or branch the code in Launchpad (you will need these two branches). Or dig deeper with blogs on the topic from Ted Gould, Olli Ries and Gord Allott. Welcome to 2012 everybody!

    by mark at January 24, 2012 02:00 PM

    Google Blog

    Updating our privacy policies and terms of service

    In just over a month we will make some changes to our privacy policies and Google Terms of Service. This stuff matters, so we wanted to explain what’s changing, why and what these changes mean for users.

    First, our privacy policies. Despite trimming our policies in 2010, we still have more than 70 (yes, you read right … 70) privacy documents covering all of our different products. This approach is somewhat complicated. It’s also at odds with our efforts to integrate our different products more closely so that we can create a beautifully simple, intuitive user experience across Google.

    So we’re rolling out a new main privacy policy that covers the majority of our products and explains what information we collect, and how we use it, in a much more readable way. While we’ve had to keep a handful of separate privacy notices for legal and other reasons, we’re consolidating more than 60 into our main Privacy Policy.

    Regulators globally have been calling for shorter, simpler privacy policies—and having one policy covering many different products is now fairly standard across the web.

    These changes will take effect on March 1, and we’re starting to notify users today, including via email and a notice on our homepage.



    What does this mean in practice? The main change is for users with Google Accounts. Our new Privacy Policy makes clear that, if you’re signed in, we may combine information you've provided from one service with information from other services. In short, we’ll treat you as a single user across all our products, which will mean a simpler, more intuitive Google experience.

    Our recently launched personal search feature is a good example of the cool things Google can do when we combine information across products. Our search box now gives you great answers not just from the web, but your personal stuff too. So if I search for restaurants in Munich, I might see Google+ posts or photos that people have shared with me, or that are in my albums. Today we can also do things like make it easy for you to read a memo from Google Docs right in your Gmail, or add someone from your Gmail contacts to a meeting in Google Calendar.

    But there’s so much more that Google can do to help you by sharing more of your information with … well, you. We can make search better—figuring out what you really mean when you type in Apple, Jaguar or Pink. We can provide more relevant ads too. For example, it’s January, but maybe you’re not a gym person, so fitness ads aren’t that useful to you. We can provide reminders that you’re going to be late for a meeting based on your location, your calendar and an understanding of what the traffic is like that day. Or ensure that our spelling suggestions, even for your friends’ names, are accurate because you’ve typed them before. People still have to do way too much heavy lifting, and we want to do a better job of helping them out.

    Second, the Google Terms of Service—terms you agree to when you use our products. As with our privacy policies, we’ve rewritten them so they’re easier to read. We’ve also cut down the total number, so many of our products are now covered by our new main Google Terms of Service. Visit the Google Terms of Service page to find the revised terms.

    Finally, what we’re not changing. We remain committed to data liberation, so if you want to take your information elsewhere you can. We don’t sell your personal information, nor do we share it externally without your permission except in very limited circumstances like a valid court order. We try hard to be transparent about the information we collect, and to give you meaningful choices about how it is used—for example our Ads Preferences Manager enables you to edit the interest categories we advertise against or turn off certain Google ads altogether. And we continue to design privacy controls, like Google+’s circles, into our products from the ground up.

    We believe this new, simpler policy will make it easier for people to understand our privacy practices as well as enable Google to improve the services we offer. Whether you’re a new Google user or an old hand, please do take the time to read our new privacy policy and terms, learn more about the changes we’re making and understand the controls we offer.

    by A Googler (noreply@blogger.com) at January 24, 2012 01:30 PM

    Managing Product Development

    Agile Lifecycles for Geographically Distributed Teams, Part 1

    I’ve been working with geographically distributed and dispersed teams for the past couple of years. Some of them on quite large programs, some of them reasonably small. What they all have in common is that they all want to transition to agile.

    Most of them start this way: someone takes a Scrum class, gets all excited. This is good. Then reality hits. Scrum is meant for collocated geographically cross-functional teams. Uh oh.

    Almost all of these teams are separated by function: the developers are in one place, the testers are in another, the business analysts are in a third place, the project managers are in a fourth places, and if there are product owners (or what passes for product owners) they are often in a fifth location. It’s not uncommon for every single function of the team to be separate from every other member of the team. So, the teams don’t fit the Scrum criteria. Uh oh.

    Since Scrum has so much brand recognition, these people think if they can’t do Scrum, they can’t do Agile. Nope, not so. What they need to do is start from the values and principles of the Agile Manifesto, and go from there. They create their own lifecycle, and their very own brand of Agile.

    When I worked with one client, that client thought they could extend their iteration. Nope, if anything, that means you keep the iterations even shorter, because you need more frequent feedback when no one is in the same place. Well, there were words. And more words. But, if you start from the values, you see that short iterations are the way to go if you want to be agile. Otherwise, you get staged delivery, which is a lovely lifecycle, but not agile.

    I’m blogging a series of examples. Please don’t ask me why the people ended up in these locations. I have no idea. All I know is that’s where the people are.

    Example 1: Using a Project Manager With Iterations, Silo’d Teams

    One IT organization has teams with developers in the Ukraine, testers in India, product managers and project managers in the UK, and enterprise architecture and corporate management in the eastern US.

    This organization moved to two-week iterations. The developers were 3.5 hours ahead of the testers, which was not terrible. This organization had these problems:

    1. The product managers had to learn to be product owners and write stories that were small enough to finish inside one iteration.
    2. The enterprise architects had to stop dictating the architecture without features to hang off the architecture.
    3. The developers and testers had to learn to implement by feature so the architects could help the team see the evolving architecture.

    This organization had a ton of command-and-control to start. The project managers needed to facilitate the teams, not control them. The architects needed to help the teams see how to organize the product, not to tell the developers what to do. The testers needed to not be order-takers, as in taking orders from the developers.

    You might ask why the organization wanted to move to agile. Senior management wanted agile because the releases got longer and longer and longer, and could not accommodate change. Agile was a complete cultural shift. The two-week iterations, along with an agile roadmap of features helped a lot.

    The pilot project team consisted of the developers, testers, a product manager, and a project manager. The team rejected the enterprise architect as a member of the team because the architect refused to write code.

    Release planning: The project manager and the product manager do an initial cut at release planning as a strawman and presented it to the team. “Can you do this? What do you think?”

    Iteration planning: The team does iteration planning together, making sure every story is either small, medium, or large, where a large story can be done by the entire team in fewer than three days. The team makes sure they get every started story to done at the end of the iteration.

    Daily commitment: The team does a daily checkin, not a standup. They timebox the checkin to 15 minutes. They ask these questions:

    • What did you complete and with whom yesterday? (reinforces the idea that people work together)
    • What are you working on and with whom today?
    • What are your impediments?

    The project manager who acts as a servant leader, not a command/controller manages the impediments.

    The pilot project has two experienced agile people: the project manager and a developer. Both act as servant leaders.

    Measurements: burnup charts, impediment charts

    The pilot team has been together for six months now, and is successful. This is not Scrum. It’s not Kanban. It’s agile and it’s working. They are ready to start another project team, working by attraction.

    (Want to learn to work more effectively on your geographically distributed team? Join Shane Hastie and me in a workshop April 17-18, 2012.)

    by Johanna at January 24, 2012 01:09 PM

    Blog o Matty

    The importance of keeping your storage array firmware up to date

    A couple of weeks back I attempted to migrate a pair of clustered Solaris 10 servers to a new disk storage array. After rebooting into single user mode to pick up the new devices, I went to add the new quorum disk with clquorum. This resulted in both nodes panicking with the following panic string: [...]

    by matty at January 24, 2012 01:06 PM

    Aaron Johnson

    apt-get

    Answering questions of Debian users on various support channels

    When you start your journey with Debian, you tend to have lots of questions. You’ll find some answers in various documentations but there always are remaining questions. Those can be asked on various support channels:

    Those are the places where you can also start your journey as a Debian contributor… instead of asking questions, you just have to answer questions of other users! Let me share some advice if you want to do some user support.

    User support is difficult…

    It’s not always an easy task. Some users are more skilled than others and there might be difficulties related to the language, English is not always the native language of a user who asks a question in English.

    Be respectful and courteous when you answer user questions, even if they made mistakes. You’re effectively representing Debian and you should give out a good image of the project. If you don’t have the patience or the time needed to do a good answer, don’t reply and let someone else take care of this user. I invite you to read (and follow!) the Debian Community Guidelines.

    Avoid RTFM answers, instead you should show the users how they could have found (alone) the solution to their problem. We don’t want to scare people away, we want to grow our community.

    But it’s also rewarding

    In some cases, the problem reported by the user will be a real problem and you’ll have an opportunity to file a good bug report, thus helping to improve Debian for everybody.

    Often, you don’t even have the answer to the user’s question. But you’re more skilled than him/her to do researches on the web, or you know of a good documentation that might contain the relevant bits of information, in any case you’re doing further research to help this user. In this process, you also grow your own skills since you’re learning stuff that you didn’t know yet.

    At least that’s how I learned many things during my first year in the Debian community… there’s no reason why you couldn’t learn lots of stuff that way, in particular if you also read the answers of other skilled people on those channels (it takes a bit of training to learn who are the skilled people though).

    I still believe that doing user support is one of the best ways to join the Debian community and to start contributing. It helps you to grow your skills, and to slowly progress from “average user” to “advanced user”.

    If you want to start contributing to Debian, click here to subscribe to my newsletter and get future updates for new contributors. You can also follow me on Identi.ca, Google+, Twitter and Facebook.

    5 comments | Liked this article? Click here. | My blog is Flattr-enabled.

    by Raphaël Hertzog at January 24, 2012 09:00 AM

    Chris Siebenmann

    Why I use exec in my shell scripts

    Why I use exec in my shell scripts

    As with the little example yesterday, a fair number of my shell scripts end with running a program and when they do, I almost invariably go the little extra distance and do it with exec. In the old days, the reason to do this was that it used slightly less resources, since it got rid of the shell process and left only the process for the real program you wound up running. But, while I was around then, the reason I use it today isn't that; it's that it lets you freely edit the script while that final program is running.

    At this point some of you may be going 'wait, what?' That's because most Bourne shell implementations are a little bit peculiar.

    In most interpreted languages on Unix (like Python, Ruby, and Perl), the interpreter completely loads and parses the script file before it starts running it. This means that once your script has actually started running, once that initial load and parse has finished, you can freely change the script's file without the interpreter caring; it will only look at the actual file and its contents again if and when you re-run your script.

    Bourne shell implementations have historically not worked this way (and it's possible that it's actually impossible to preparse Bourne shell scripts for some reason). Instead they not only parse the script on the fly as it executes, but also they read the file on the fly as the script runs. This means that if you edit a shell script while it's running you can literally shuffle the code around underneath the script. When the shell resumes reading and parsing the script after the current command finishes, it can be reading from partway through a line, from something that it had already read, or (if you deleted text) wind up skipping over something that it should have run. This often causes the shell script to fail with weird errors or, worse, to malfunction spectacularly. This can happen even if the shell is on the last line of the script.

    But if you end a shell script with exec, you avoid this. The actual shell interpreter effectively exits (by turning itself into the actual program) and so there's nothing there to try to read anything more and get confused by your edits.

    (Of course nothing helps if you can't use exec; then you just have to remember to never edit the script while it's running, at least with an editor that overwrites the file in place.)

    Sidebar: a detailed example of what happens

    Let's start with a little script:

    #!/bin/sh
    echo "a"
    firefox
    

    Run this script. While Firefox is running, edit it so that the echo string is four or five characters longer (using vi or some other editor that overwrites files in place). When you exit Firefox, the script will complain something like 'script: line 4: efox: command not found'.

    When the shell was running Firefox, its read position in the file was just after the newline at the end of firefox. When you edited the script and added more letters, that same byte position was now pointing to the e in the 'firefox'. When Firefox exited and the shell resumed reading from that byte position, it read 'efox<newline>', saw a perfectly valid command execution, and tried to run 'efox' (and failed).

    (It reports that this happened on line 4 because it knew it had already read three lines, so clearly this is line 4. As a corollary, you can't trust the line numbers that are printed when something like this happens.)

    by cks at January 24, 2012 05:06 AM

    Alan Hargreaves

    Using lightning from homedir on SPARC and x86 Solaris

    I make great use of lightning in my thunderbird installation.

    At the moment I am in the process of migrating from my Sun Blade 2000 Sun Ray server to an x86 based one.

    The problem is that I am running the lightning plugin from my automounted home directory and the lightning plugin has one shared library (libcalbasecomps.so) in it.

    Now the thunderbird as installed in Solaris 11 actually comes with a compatible lightning installed so you can use that. Unfortunately (or fortunately) I try to run current thunderbird (at the time of writing 9.0.1).

    For reference, you can get the lightning plugin for Solaris from http://releases.mozilla.org/pub/mozilla.org/calendar/lightning/releases/1.1.1/contrib.

    The obvious answer would have been to install it where I keep my thunderbird executables, but I couldn't quickly work out how to do that.

    I already had the SPARC version installed. Apart from the Identifier number being different the only differences in lightning.xpi (after unzipping it) appear to be a platform line in install.rdf and the shared library.

    What I did was to make a directory in my thunderbird install directory to house the architecture specific library on both the SPARC and x86 machine.

    $ mkdir /rpool/thunderbird/arch
    

    On each machine I got hold of the shared library and put a copy of it into this directory.

    $ unzip lightning.xpi
    ...
    $ cp components/libcalbasecomps.so /rpool/thunderbird/arch
    

    The we head into the currently installed plugin in my home directory. Note the quotes. Shells have special meanings for braces.

    $ cd '.thunderbird/profilename/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components'
    $ rm libcalbasecomps.so
    $ ln -s /rpool/thunderbird/arch/libcalbasecomps.so .
    

    Almost there.

    Now in the directory one up from the components directory there is a file called install.rdf. In this file there is the following line:

    <em:targetPlatform>SunOS_sparc-sunc</em:targetPlatform>
    

    This needs to be commented out:

    <!-- <em:targetPlatform>SunOS_sparc-sunc</em:targetPlatform> >
    

    I now can run my thunderbird from either machine and continue to use lightning. I just need to follow this process whenever I upgrade thunderbird/lightning (Part of the reason for doing this blog).

    As an aside, my /rpool/thunderbird and /rpool/firefox are each a zfs filesystem under rpool. Before I upgrade anything I make a zfs snapshot. That way if anything breaks, rolling back to a working version is trivial.

    by Alan at January 24, 2012 04:08 AM

    Ubuntu Geek

    January 23, 2012

    Netapp DaveBlog

    What does Data ONTAP stand for?

    An employee recently asked me, "Is Data ONTAP an acronym? What does it stand for?"

     

    Data ONTAP is sort of an acronym. You know how some acronyms are just too cute? It's clear that the goal was to make a particular word, and words were chose -- sometimes almost at random -- in order to make the acronym work. Data ONTAP is like that.

     

    The acronym itself made no sense, so I won't even share it, but the inspiration lives on. Data ONTAP was inspired by beer. The idea was that data should flow freely, just like beer flowing from a tapped keg. Except imagine a pervasive beer infrastructure that lets you get your favorite brew from any faucet at any sink.

     

    The reason I love the name Data ONTAP is because it captures the way people think about data. You want it to be wherever you need it, whenever you need it. On tap.

    by xdl-communities@communities.netapp.com at January 23, 2012 07:38 PM

    Linux Poison

    Convert CHM file to PDF under Linux - chm2pdf

    Microsoft Compiled HTML Help (CHM) is a Microsoft proprietary online help format. It was introduced as the successor to Microsoft WinHelp with the release of Windows 98, and is still supported in Windows 7.

    Help is delivered as a binary file with the .chm extension. It contains a set of HTML files, a hyperlinked table of contents, and an index file.

    The file starts with bytes "ITSF" (in ASCII), for "Info-Tech Storage Format". The format has been reverse-engineered by Matthew Russotto with assistance from Peter Ferrie and Paul Wise. Russotto's documentation is freely available at http://www.russotto.net/chm/chmformat.html.

    CHM file is not recognize by Linux and cannot be open using any default application, you can either use chm viewer or convert this chm file to some other format like PDF to view

    Continue Reading...

    by noreply@blogger.com (Nikesh Jauhari) at January 23, 2012 03:30 PM

    Sam Ruby

    Port Forwarding

    Problem: I’m not always at the machine that is VPN’ed into work.

    Solution: place the following into /etc/network/if-up.d/sametime-forwarder:

    #!/bin/sh
    #
    # redirect Sametime's port 1533 to messaging.ibm.com
    #
    echo 1 > /proc/sys/net/ipv4/ip_forward # turns on forwarding
    iptables -F -t nat # Flush existing translation tables
    iptables -t nat -A PREROUTING -p tcp --dport 1533 -j DNAT --to 9.17.136.77:1533
    iptables -t nat -A POSTROUTING -j MASQUERADE

    January 23, 2012 03:21 PM

    The Nubby Admin

    Software Piracy and the Existence of Moral Absolutes

    (Before I start, I’d like to make it clear that I am not “calling out” anyone. This post started out as a comment on the blog post I refer to below, however my words quickly grew in number and I decided to make my own blog post on it. This post is intended to be a spinoff of Matt’s post. This topic is tangential to the post referenced below, and not in response to it.)

    In a recent post by Matt Simmons titled “The real loser in software piracy isn’t who you think“, the Standalone SysAdmin posits an interesting theory. To summarize, software piracy may cost better, alternative products their userbase. If people need to twiddle a few pixels, the Photoshop brand immediately captures their attention. As a result a person may pirate Adobe’s software when a better, less expensive or possibly free alternative to Photoshop would have been just as good.

    I completely agree with the above, and it’s a viewpoint that I had never considered outright. I think I’ve thought along those lines without realizing it though. In my experience, if someone with only a little computer background wants to put an all-in-one server in their office to manage printing, file shares, their internet gateway and etc. I am slightly disappointed that Microsoft’s Small Business Server product is usually the first and only product that comes to mind. There are so many alternatives! ClearOS, Untangle, and others are awesome alternatives often with a free tier that can get you started.

    However, because the SBS brand is so large, and people think “I guess that’s what I need,” they’ll likely implement it and never consider the alternatives. In some instances, they may improperly license the software. If even just one quarter of the organizations that are not properly licensing SBS would move to an alternative product, I believe that would make the industry better. Microsoft would see clear competition from the growing userbase of other products and have a better idea on how to improve. The alternative products would increase their userbase and know how better to support their customers. Customers get great products all around! Generally speaking, it would be a win-win situation for everyone involved.

    Often in discussions concerning software piracy the supposed dollar amount of lost revenue for the software company is brought up. Upon investigation those numbers are built on some flimsy presuppositions about the buyer’s intent. Users of software will often not truly be legitimate candidates to purchase the software. However, this is where I find the topic to be most interesting. When the topic of morality gets introduced is when things get fascinating. That’s also when you’ll see some truly jaw dropping logical and philosophical gymnastics.

    Let’s talk a bit about morality. Are there absolutes or are there not? Is this purely a financial equation or is there more at stake here?

    Definition of Terms

    I’ll be using some quotes from Matt’s post as my springboards, but not as a direct response to him (this isn’t about two people disputing, but about different and yet related ideas being fleshed out). Also, I’m not focusing on the recent takedown of MegaUpload. I’m also not focusing on one pirated product over another. This is as generalized as I can be.

    The first thing that needs to be determined in talking about “software theft” is “what is theft?” From Matt’s post:

    As many people have said, theft is the taking of something which deprives the owner of use.

    Before any topic can be given a thorough treatment, a definition of terms must take place. In this case, I’ve never heard of theft being defined as the deprivation of use from an owner. Perhaps it’s regional? That definition sounds more like some definitions of larceny. Theft does not, in my layman’s understanding of the term, primarily consider deprivation of use. Theft is usually defined along the lines of the taking of property that is owned by one person or entity without their consent. No validity is given to the consideration of if the object was useful to the original owner.

    Perhaps you’ve seen dilapidated cars from two or more generations ago sitting on a farm. Certainly the owner is receiving no use from it, but taking it would still be considered theft (although I realize there are often tiered designations to the types of theft based on the dollar amount of what was stolen). That is, theft is defined as the taking of property that is owned by one person without their consent.

    Certainly in the realm of software it gets tricky because you’re not dealing with cut-and-dried physical goods. In the physical world, it would be as if you could clone the junked automobile and then use it (perhaps for scrap metal, I don’t know). But you can’t perform an atomic copy of something in the physical world so it’s a moot point. Yes, you can copy a design and get in trouble with copyright infringement, but that seems to be an entirely unrelated phenomena. In the virtual world, you can perform an “atomic” copy of a thing – and that fact blurs some lines slightly.

    However I believe the key to the situation is a realization that license terms on a software package define what acceptable use is. One you take those terms into account it is easier to understand how theft would be defined in the case of intangible software. Software companies by and large do not “sell” the software to you, but basically sell you the right to use it. It’s a contract for use. If a contract states that in order to use some software you have to pony up some cash then it “is what it is” and no amount of legal wrangling can reverse that. Going outside of that contract would be considered some form if illegal activity.

    In the end, it is a non-consensual use of a product that has certain restrictions made upon it. Perhaps the term “theft” is over simplifying the behavior. Perhaps “breach of contract” would be better? That might be especially true since most software makes you accept an agreement before you can use it. Technically you are then bound by that contract. Define it how you will, we’re still dealing within the realm of morals, so at least we haven’t gotten too far off track.

    Of course, I also find it laughable whenever software piracy is mentioned and people assign monetary value to the “stolen” software…as though the options were either “steal this software” or “pay for it”. A false dichotomy if I ever heard one.

    If people say “one million copes of this software have been stolen, and the software costs $500 per copy, that means the company has lost half a billion dollars!!1!” then they are most certainly making a false dichotomy. Not all of the one million people have $500 to spend and even if they did, they would not necessarily spend it on that software if they were forced to make a choice.

    This is where, often, the conversation with someone turns finances into morality. “Well I wouldn’t pay for it anyway!” or “I only use it once in a great while!” or, my favorite, “The software company has plenty of money. They’re not losing that much because of me.” As if, somehow, arguments of convenience or shareholder meetings shift the foundations of right and wrong.

    Finances Vs. Morals

    Certainly the dollar amounts that are brought up around software piracy are smeared around to make the software companies seem like helpless victims. When you look into the numbers, it’s highly unlikely that Adobe, Microsoft, Autodesk, Symantec and etc. aren’t losing a ton of real money. They might even be gaining value in the long run with their products being used by more people who carry that brand in their minds from then on.

    However is the discussion about software piracy all about numbers and branding? Can a person change right and wrong based on their own convenience or their determination of how much a company needs more currency?

    I’d like to focus this topic less on the numbers and more on how one behaves after digesting the numbers. My question for us all to think about is this: What determines right and wrong? Here are the numbers and a fairly accurate interpretation of them:

    [Those that download commercial software without paying] didn’t have $500 to buy photoshop. Did Adobe really lose that $500 that wouldn’t have been paid to them? No.

    Most of us would agree with that. Framed within the context of “a person doesn’t have $500 and furthermore wouldn’t spent it on the software if they had it” then the software maker didn’t lose money. However, if we then take that likely reality and use it to excuse a breach of contract, we start determining right and wrong based on profit and loss. In the presence of moral absoulutes, a thing that has certain contractual usage restrictions on it being used outside of those restrictions is still wrong. Typically, that “wrongness” is only superseded if there is considerable harm to another person unless that contract is broken.

    “That money didn’t exist. Assigning it a value is dishonest.”

    Certainly the numbers are trumped up to an extent. On that there is little dispute. Where do we go from here? Can we go from “I don’t have the money to buy this software,” to “I’m going to intentionally break a contract so that I can use it anyway”?

    At this point in a discussion on software licensing (or music, movie and other entertainment licenses), the discussion usually continues spinning its wheels. Volleys of words like “fair”, “greedy”, “corporations” and “big business” get lobbed.

    A product has value independent of a person’s ability to pay for it. A product is then sometimes priced disproportionate to its value. Or, oddly, value is manipulated by price, but that’s another discussion. If a company, within their legal rights, sets a price on a product that a person feels is disproportionate to its value, does that person’s personal evaluation of the price/value equation allow them to morally break contract and use the software outside of its licensing restrictions?

    We could argue about the fairness of current licensing practices, the greed of corporate licensing practices, the value of a product in comparison to its price and if software patents are detrimental (please, no GPL fanbois). Those things are important to talk about, however in the context of determining morality, if those smell fishy, that’s because all of them combine to form one giant red herring distracting us from the real point. The real point is centered on how one determines right and wrong.

    Absolute Uncertainty

    The question of absolutes now comes up. Is it ever right to take something that is not yours? If a loved one is dying, and you can steal medicine to save their life, is it wrong? If you and others are locked in a prison camp during a war and face almost certain death, is stealing the keys from the guards okay? Is killing your guards okay?

    Those are extreme examples, but valid nonetheless and thus not in the realm of straw men. It shows us that, usually, there is a line when theft and even killing become acceptable. (Even so, there are those who believe in pacifism to the point of never fighting back even in the defense of your or another person’s life.)

    The question remains, is there ever a time when it is acceptable to break a contract or license? Once you figure that out you can answer the following questions with certainty and be able to backup your view: When is it okay to break a contract? When is it okay to perform an act that is punishable by law? Does solvency determine right and wrong and if so when?

    I think moral absolutes is the heart of the issue of software being used outside of license restrictions (I hesitate to call it “theft” or “piracy”). If there are none, then this topic is wasted energy. If there are absolutes, but they contradict honoring software licensing then we should at least define them and be aware of why we do what we do. If there are absolutes, and they say to honor law in so far as the law does not clearly contradict other absolutes (e.g. a law requiring you to punch a random person in the face), then the topic is rather simple, in spite of arguments about practicality. Your pragmatic need for a software title notwithstanding, show some fortitude and don’t break a contract / license agreement (essentially dishonesty). Go find a product whose licensing you agree with or do without.

    For myself, I am a license pest. I actually read some EULAs. I actually follow them to the best of my ability. For example, I recently bought an OEM copy of Windows 7 for a workstation I built for my small business. According to strict licensing interpretation you are not allowed to install the OEM version of Windows straight onto a PC from the DVD. You are supposed to use the OEM Preinstalltion Kit or the Express Deployment Toolkit. So, I got rid of the installation that I had initially made, turned one of my other PCs into an EDT server and installed the OEM version of Windows across my home network onto my workstation.

    Who would have known? What difference does it really make? For one, I would have known. Secondly, I believe the difference is in how a person continually builds their character. If you are unfaithful in the little things, it makes unfaithfulness in bigger things a little bit easier to justify. If people that I know have little or no problem breaking contracts and licenses, my trust in them is eroded. If a person rationalizes things in such a way as to take relatively clear cut restriction and justify breaking them in the absence of clear harm to another person, i wonder what else that person could justify.

    I am not here to point fingers, flex my “morality,” or get anyone to behave the way I do. I am here to encourage you to stop and consider yourself. Stop and consider why you choose what you do. Consider why you think what you think. Consider everything. Have a reasoned defense. A new topic that has been intriguing me is that of dialectic reasoning. One of my favorite quotes is attributed to Socrates:

    The unexamined life is not worth living for a human being.

    Do not live an unexamined life.

    What do you think about software licensing? Is it okay to break the license terms? Is there a practical limit? I’d love to hear your thoughts.

    by Wesley David at January 23, 2012 02:14 PM

    Blog o Matty

    How to figure out if a processes has been chroot()’ed

    A number of applications (e.g., custom chroot jails, openssh, vsftp, apache) support the ability to chroot themselves. To find out if a process called chroot() at startup, you can check the /proc/<pid>/root entry for the process. For non-chrooted processes this entry will point to /: $ ps auxwww | grep [s]endmail root 3643 0.0 0.1 [...]

    by matty at January 23, 2012 01:08 PM

    Google Blog

    Your Interview with President Obama

    If you could hang out with President Obama, what would you ask him? Would your question be about jobs or unemployment? The threat of nuclear weapons? Immigration reform? Whatever your question is, submit it on YouTube for the opportunity to ask the President directly in a special interview over a Google+ Hangout from the White House.

    On Monday, January 30, a few days after delivering his State of the Union address to the nation, President Obama will answer a selection of top-voted questions you’ve submitted in a live-streamed interview. Starting today through January 28, you can visit the White House YouTube channel to submit your video and text questions and vote on your favorites. Your YouTube questions will drive the interview, and several participants with top-voted questions will be selected to join the President in the Google+ Hangout to take part in the conversation live.



    So take out your camera, check your hair and go to youtube.com/whitehouse to submit your question now. Need ideas? Visit youtube.com/whitehouse on Tuesday night at 9:00pm ET to watch the President’s State of the Union address live. The address will be followed by the Republican response on Speaker Boehner’s YouTube channel.

    Video questions are preferred (though we also accept text) and should be about 20 seconds long. In the video description, be sure to tell us a little bit about yourself, like where you’re from.

    Your Interview with President Obama will be streamed live at 5:30pm ET on on January 30 on youtube.com/whitehouse. You have until midnight ET on January 28 to submit your question and make your voice heard on the issues that matter to you.



    (Cross-posted from the YouTube blog)

    by A Googler (noreply@blogger.com) at January 23, 2012 09:08 AM

    Chris Siebenmann

    Every so often, I solve a problem with a hammer

    Every so often, I solve a problem with a hammer

    For reasons beyond the scope of this entry, I maintain a special Firefox profile and instance for uploading pictures to my Flickr account. Back in the old days, Firefox had a very convenient behavior for this: when it asked you to choose files to upload in an upload form, the default directory was the current directory that you'd started Firefox in. This meant that I could cd to the day's photo directory, start my Flickr Firefox instance, and have the GTK file chooser dialog start in exactly the right directory. Then at some point Firefox changed this so that the default file chooser directory was something like your configured download directory.

    I poked at this off and on but couldn't find a way to make Firefox get its old behavior back. So recently I decided to fix the problem with brute force. The script that I use to start my Flickr Firefox instance now looks somewhat like this:

    #!/bin/sh
    ln -nsf $(pwd) $HOME/CURDIR
    exec firefox -P flickr "$@"
    

    This is inelegant and not a real solution, but it makes things a lot more convenient; it's now much faster to navigate to exactly where I want to be. Sometimes that's the right way to deal with a problem, when either the real solution is too much work or the problem is too small to justify anything more than a quick hack.

    (I suppose that this could be slightly improved by putting the symlink directly in the download subdirectory. I'm not sure why I didn't do that.)

    by cks at January 23, 2012 05:16 AM

    Ubuntu Geek

    Ubuntu Tip:How to show desktop from command line


    {lang: 'en-GB'}

    This tutorial will explain how to show desktop from command line in ubuntu.You can use xdotool to do this.

    xdotool lets you programatically (or manually) simulate keyboard input and mouse activity, move and resize windows, etc. It does this using X11′s XTEST extension and other Xlib functions.
    (...)
    Read the rest of Ubuntu Tip:How to show desktop from command line (27 words)


    © admin for Ubuntu Geek, 2012. | Permalink | 2 comments | Add to del.icio.us
    Post tags: ,

    Related posts

    by admin at January 23, 2012 12:45 AM

    January 22, 2012

    my other pc is a cloud

    BlogEngine.NET, SimpleCaptcha, and Spam

    I use BlogEngine.NET for this blog. I've loved it so far. It suits me perfectly because I also love .NET and C#.

    BlogEngine.NET comes with a few "extensions" out of the box, and one of those extensions is called SimpleCaptcha. You simply configure it with a question and an answer. Visitors who supply the correct answer get to post comments. This wards off most of the spammers. But from what I'm seeing, is that whatever spammers use to automatically crawl the web, leaving little spam-filled coprolites in their wake, seems to be able to solve simple mathematical equations like 5+5, 3+7, and even (5+2)-1. I changed my captcha challenge to that latter equation and received a spam comment not five seconds later.

    Maybe this will stop them...

    So I figured the next best thing to do, without annoying and frustrating my visitors too much with those really bizarre graphical captchas that you can't even read half the time, was to change my SimpleCaptcha to something that was still simple, but required slightly more human-like thinking than what I suspect most spambots are capable of. Questions such as "what is the opposite of cold" or "a shape with four equal sides." These sorts of questions have brought my comment spam to a screeching halt. But there's one last problem: SimpleCaptcha is case sensitive and there's no immediately apparent way to turn it off. I don't want a visitor to type "Square" and not get their comment posted because they needed to have typed "square" instead.

    So, to remedy this problem, simply access your web server and browse to wherever you have IIS/BlogEngine.NET installed. Then drill down to where SimpleCaptcha is. For me, it's C:\inetpub\wwwroot\App_Code\Extensions\SimpleCaptcha\. Open up the file SimpleCaptchaControl.cs in a text editor (or Visual Studio if you'd rather,) and find this method:

    public void Validate(string simpleCaptchaChallenge)
    {
       this.valid = this.skipSimpleCaptcha || this.simpleCaptchaAnswer.Equals(simpleCaptchaChallenge);
    }

    Simply change that one line to this:

    public void Validate(string simpleCaptchaChallenge)
    {
       this.valid = this.skipSimpleCaptcha || this.simpleCaptchaAnswer.Equals(simpleCaptchaChallenge,StringComparison.OrdinalIgnoreCase);
    }

    And you've just made your SimpleCaptcha not case-sensitive. The change takes effect as soon as you save the file; no restarts of anything are required.

    by ryanries09@gmail.com at January 22, 2012 04:59 PM

    canspice

    Twitter Weekly Updates for 2012-01-22

    Powered by Twitter Tools


    by Brad at January 22, 2012 02:59 PM

    Blog o Matty

    Learn Python video series from Google

    I’ve been trying to expand my Python knowledge and recently came across Nick Parlante’s 6-part learn Python series on Youtube. I’ve watched several of the videos, and I am impressed with Nick’s teaching ability. Here are links to the 6-part series: Day 1 part 1: Introduction and Strings Day 1 part 2: Lists, Sorting and [...]

    by matty at January 22, 2012 02:03 PM

    SysAdmin's Diary

    Happy Chinese New Year

    It’s dragon year, Happy Chinese New Year!

    by irwan at January 22, 2012 08:17 AM

    Chris Siebenmann

    My view of the purpose of object orientation

    My view of the purpose of object orientation

    A while back I read Rise and Fall of Classic OOP. This caused me to realize that I am kind of a heathen as far as object oriented programming is concerned, probably because I came to explicit OO late and never actually learned how to do it the 'right way'. You see, to me object orientation is a technique for code organization and nothing more.

    This gives me a very pragmatic view of when to write OO code and when not to; I use objects and classes where they make my code simpler, and I don't use them when they don't. I don't consider them something that has to be followed at all costs or as the only way to model the real world (or any arbitrary artificial world). If the real world entities that you're working with aren't amenable to being wedged into an OO hierarchy, then don't. Given the wide variety of both code structure and ways of organizing code so that it makes sense, it would be fairly absurd to say that OO is always the right answer; it is just one technique among many. Sometimes it's the right answer, sometimes not.

    (Of course, some languages as so in love with OO that they don't give you a choice about it; you can't really have freestanding functions and data containers.)

    I won't say that all of those OO examples that modeled the real world always struck me as a bit hokey and artificial, because honestly I never really thought that much about it (and any small example is hokey and artificial if you really look at it). But if people are switching towards my view of the purpose of OO, I'm all for it.

    (I would be shocked if this was new and novel. I sure hope that lots of people have had this thought before me, because it just feels so obvious.)

    by cks at January 22, 2012 07:27 AM

    January 21, 2012

    my other pc is a cloud

    Auditing Active Directory Inactive Users with Powershell and Other Cool Stuff

    Hello again, fellow wanderers.

    I was having a hell of a comment spam problem here for a couple days... hope I didn't accidentally delete any legitimate comments in the chaos. (Read this excellent comment left on my last DNS post.) Then I realized that I might ought to change the challenge question and response for my simple captcha from its default... I guess the spammers have the old "5+5=" question figured out. :P

    A few years ago, I made my own simple captcha for another blog that was along the lines of x + y = ? using PHP, but x and y were randomly generated at each page load. Worked really well. The simple captcha that comes boxed with BlogEngine.NET here is static. Being able to load a random question and answer pair from a pool of questions would be a definite enhancement.

    Anyway, since we're still on the topic of auditing Active Directory, I've got another one for you: Auditing "inactive" user accounts.

    I had a persnickety customer that wanted to be kept abreast of all AD user accounts that had not logged on in exactly 25 days or more. As soon as one delves into this problem, one might realize that a command-line command such as dsquery user -inactive x will display users that are considered inactive for x number of weeks, but not days. I immediately suspected that there must be a reason for that lack of precision, as I knew that any sort of computer geek/engineer that wrote the dsquery utility would not have purposely left out that measure of granularity unless there was a good reason for it.

    So what defines an "inactive" user? A user that has not logged on to his or her user account in a period of time. There is an AD attribute on each user called LastLogonTimeStamp. After a little research, I stumbled across this post, where it is explained that the LastLogonTimeStamp attribute is not terribly accurate - i.e., off by more than a week. Now that dsquery switch makes a lot more sense. I conjecture that the LastLogonTimeStamp attribute is inaccurate because Microsoft had to make a choice when designing Active Directory - either have that attribute updated every single time a user account is logged on to and thus amplify domain replication traffic and work for the DCs, or have it only updated periodically and save the replication load.

    To further complicate matters, there is an Active Directory Powershell cmdlet called Search-ADAccount that, when it returns users, it reports a LastLogonDate attribute. As it turns out, LastLogonDate is not even a real attribute, but rather that particular Powershell cmdlet's mechanism for translating LastLogonTimeStamp into a more human-readable form. (a .NET DateTime object.)

    Next, there is another AD attribute - msDS-LogonTimeSyncInterval - that you can dial down to a minimum of 1 day, and that will have replication of the users' LastLogonTimeStamp attribute updated much more frequently and thus make it more accurate. Of course, this comes at the expense of additional load on the DCs and replication traffic. This may be negligible in a small domain, but may have a significant impact on a large domain.

    *ADSI Edit*

    Lastly, your other options for being able to accurately track the last logon time of users as close to "real-time" as possible involve scanning the security logs or attributes on all of your domain controllers and doing some heavy parsing. This is where event forwarding and subscriptions would really shine. See my previous post for details. I don't know about you guys, but all that sounds like a nightmare to me. Being able to track inactive user accounts to within 1 day is just going to have to suffice for now.

    So we made the decision to decrease the msDS-LogonTimeSyncInterval, and I wrote this nifty Powershell script to give us the good stuff. Each major chunk of code is almost identical but with a minor tweak that represents the different use cases if given different parameters. Reading the comments toward the top on the five parameters will give you a clear picture of how the script works:

    # ADUserAccountAudit.ps1
    # Writen by Ryan Ries on Jan 19 2012
    # Requires the AD Powershell Module which is on 2k8R2 DCs and systems with RSAT installed.
    #
    # Locates "inactive" AD user accounts. Note that LastLogonTimeStamp is not terribly accurate.
    # Accounts that have never been logged into will show up as having a LastLogonTimeStamp of some time
    # around 1600 AD - 81 years after the death of Leonardo da Vinci.
    # This is because even though their LastLogonTimeStamp attribute is null, we cast it to a DateTime object
    # regardless, which converts null inputs into a minimum date, apparently.
    #
    # For specific use with NetIQ AppManager, put this script on the agent machine at 
    # C:\Program Files (x86)\NetIQ\AppManager\bin\Powershell (for 64 bit Windows. Just "Program Files" if 32 bit Windows.)
    
    Param([string]$DN = "dc=corpdom,dc=local",         # LDAP distinguished name for domain
          [string]$domainName = "Corpdom",             # This can be whatever you want it to be
          [int]$inactiveDays = 25,                     # Users that have not logged on in this number of days will appear on this report
          [bool]$includeDisabledAccounts = $false,     # Setting this to true will include accounts that are already disabled in the report as well
          [bool]$includeNoLastLogonAccounts = $false)  # Setting this to true will include accounts that have never been logged into and thus have no LastLogonTimeStamp attribute.
    
    # First, load the Active Directory module if it is not already loaded
    $ADmodule = Get-Module | Where-Object { $_.Name -eq "activedirectory" } | Foreach { $_.Name }
    if($ADmodule -ne "activedirectory")
    {
       Import-Module ActiveDirectory
    }
    
    if($includeDisabledAccounts -eq $false)
    {
       if($includeNoLastLogonAccounts -eq $false)
       {
          Write-Host "Enabled users that have not logged into $domainName in $inactiveDays days`r`nExcluding accounts that have never been logged into`r`nAccounts younger than $inactiveDays days not shown.`r`n-------------------------------------------------------"
          Search-ADAccount -UsersOnly -SearchBase "$DN" -AccountInactive -TimeSpan $inactiveDays`.00:00:00 | 
          Where-Object {$_.Enabled -eq $true -And $_.LastLogonDate -ne $null } |
          Get-ADUser -Properties Name, sAMAccountName, givenName, sn, lastLogonTimestamp, Enabled, WhenCreated |
          Where-Object {$_.WhenCreated -lt (Get-Date).AddDays(-$($inactiveDays)) } |
          Select sAMAccountName, givenName, sn, @{n="LastLogonTimeStamp";e={[DateTime]::FromFileTime($_.LastLogonTimestamp)}}, Enabled, WhenCreated |
          Sort-Object LastLogonTimeStamp |
          Format-Table   
       }
       else
       {
          Write-Host "Enabled users that have not logged into $domainName in $inactiveDays days`r`nIncluding accounts that have never been logged into`r`nAccounts younger than $inactiveDays days not shown.`r`n-------------------------------------------------------"
          Search-ADAccount -UsersOnly -SearchBase "$DN" -AccountInactive -TimeSpan $inactiveDays`.00:00:00 | 
          Where-Object {$_.Enabled -eq $true } |
          Get-ADUser -Properties Name, sAMAccountName, givenName, sn, lastLogonTimestamp, Enabled, WhenCreated |
          Where-Object {$_.WhenCreated -lt (Get-Date).AddDays(-$($inactiveDays)) } |
          Select sAMAccountName, givenName, sn, @{n="LastLogonTimeStamp";e={[DateTime]::FromFileTime($_.LastLogonTimestamp)}}, Enabled, WhenCreated |
          Sort-Object LastLogonTimeStamp |
          Format-Table 
       }
     
    }
    else
    {
       if($includeNoLastLogonAccounts -eq $false)
       {
          Write-Host "All users that have not logged into $domainName in $inactiveDays days`r`nExcluding accounts that have never been logged into`r`nAccounts younger than $inactiveDays days not shown.`r`n------------------------------------------------------"   
          Search-ADAccount -UsersOnly -SearchBase "$DN" -AccountInactive -TimeSpan $inactiveDays`.00:00:00 |
          Where-Object { $_.LastLogonDate -ne $null } |
          Get-ADUser -Properties Name, sAMAccountName, givenName, sn, lastLogonTimestamp, Enabled, WhenCreated |
          Where-Object { $_.WhenCreated -lt (Get-Date).AddDays(-$($inactiveDays)) } |
          Select sAMAccountName, givenName, sn, @{n="LastLogonTimeStamp";e={[DateTime]::FromFileTime($_.lastlogontimestamp)}}, Enabled, WhenCreated |
          Sort-Object LastLogonTimeStamp |
          Format-Table   
       }
       else
       {
          Write-Host "All users that have not logged into $domainName in $inactiveDays days`r`nIncluding accounts that have never been logged into`r`nAccounts younger than $inactiveDays days not shown.`r`n------------------------------------------------------"   
          Search-ADAccount -UsersOnly -SearchBase "$DN" -AccountInactive -TimeSpan $inactiveDays`.00:00:00 |
          Get-ADUser -Properties Name, sAMAccountName, givenName, sn, lastLogonTimestamp, Enabled, WhenCreated |
          Where-Object {$_.WhenCreated -lt (Get-Date).AddDays(-$($inactiveDays)) } |
          Select sAMAccountName, givenName, sn, @{n="LastLogonTimeStamp";e={[DateTime]::FromFileTime($_.lastlogontimestamp)}}, Enabled, WhenCreated |
          Sort-Object LastLogonTimeStamp |
          Format-Table   
       }
    }

    So there you have it, a quick and dirty report to locate users that have been inactive for over x days. Accounts that were just created and not logged on to yet would have a LastLogonTimeStamp of null and would therefore show up in this report, so I threw the Where-Object {$_.WhenCreated -lt (Get-Date).AddDays(-$($inactiveDays)) } bit in there to exclude in any case the user accounts that were younger than the specified number of days required to consider an account "inactive." Furthermore, you might want to resist the urge just now to go a step further and programmatically disable inactive user accounts. Most organizations use service accounts and other special accounts that may not get logged into very often, and yet, all hell would break loose if you disabled them. I'm considering a system that disables the accounts, but also reads in a list of accounts which are "immune" and would therefore be ignored by the program. For a future post I guess.

    Lastly, I want to thank Ned of the AskDS blog, without whom this post would not have been possible. (Now it sounds like a Grammy speech...) But seriously, I asked him about this stuff and he knew all the answers right away. Helped me out immeasurably on this.

    by ryanries09@gmail.com at January 21, 2012 04:36 PM

    Blog o Matty

    A couple of gotchas with the OpenSSH chroot() implementation

    I previously discussed the OpenSSH Match directive, and how it can be used to chroot SSH and SFTP users. Over the past couple of months I’ve encountered some gotchas with the chroot implementation in OpenSSH. Since I had to figure these items out myself, I figured I would share my findings here so folks wouldn’t [...]

    by matty at January 21, 2012 02:18 PM

    Standalone Sysadmin

    Umm…can I have your old SSD?

    The thought occurs to me that there is a lot of concern about the health of SSDs by admins who don’t have a lot of experience with them.

    I don’t have a lot of experience with them either, but I’ve spent a decent amount of time learning how they work, why they fail, and reading about the various failure modes. The problem is that I have no hands-on time with old, failed, failing drives.

    What I’d like is to see some failing (or old/slow/etc) drives first hand. My ultimate goal is to write a small SSD health check that can be plugged into Nagios (or whatever monitoring system you want to use). As of right now, there’s no SSD health check on Nagios Exchange, and I think one that actually did check would be valuable.

    Of course, there will be limitations (like when the SSD is part of a RAID array, or really really old, or the drive is so dead that it doesn’t respond), but still, the lack of ANYTHING is kind of frustrating.

    Since I’m not made of money and time, I can’t just go buy a bunch of SSDs and wait on them to die in interesting ways. This is where you come in :-) I’d be interested in taking (or borrowing, if you’d prefer) your old unhealthy drives. I can get my own reference shiny-new drive(s), but I’m more interested in drives that are long in the tooth, either because they’re just old, or because they’re slow from all of the writes that you’ve been putting them through, or whatever.

    I’d prefer drives with the SMART extensions, but I’m not overly picky, I guess. Since I don’t need dozens, I can probably pick up shipping as long as you’re in North America.

    If you can help me out with my little project (or have suggestions on how I can acquire drives like this), please drop me a line or comment on this story. Thanks!


    by Matt Simmons at January 21, 2012 12:32 PM

    Chris Siebenmann

    The C juggernaut illustrated

    The C juggernaut illustrated

    Perhaps it is tempting, looking back at history from the vantage point of today, to say that C succeeded so much because it was at the right place at the right time. As you could tell the story, all sorts of people in the 1980s wanted a low level programming language, C was around, and so they seized on it. Any similar language would have done; it's just that C was lucky enough to be the one that came out on top, partly because of network effects.

    (This story is especially tempting to people who don't like C and Unix.)

    This significantly understates the real appeal of C at the time, even and especially to people who had alternative languages. A great illustration of this is C on the early Macintosh. You see, unlike environments like MS-DOS (which had no language associated with it, just assembler), the early Macintosh systems already had a programming language; they were designed to be programmed in Pascal (and the Mac ROMs were originally written in Pascal before being converted to assembler).

    This was more than just an issue of Apple's suggested language being Pascal instead of C. The entire Mac API was designed around Pascal calling conventions and various Pascal data structures; it really was a Pascal API. Programming a Mac in C involved basically swimming upstream against this API, full of dealing with things like non-C strings (if I remember right, Mac ROM strings were one byte length plus data). I believe that Mac C compilers had to introduce a special way of declaring that a C function should have the Pascal calling convention so that it could be used as a callback function.

    Despite all of this, C crushed Pascal to become by far the dominant programming language on the Macintosh. I don't think it even took all that long. Programmers didn't care that dealing with the API issues were a pain; working in C was worth it to them. It didn't matter that Pascal was the natural language to write Mac programs in or that it was a perfectly good language in its own right. C was enough better to displace Pascal in a hostile environment.

    C did not win just because it was at the right place at the right time. C won in significant part because it was (and is) a genuinely good language for the job it does. As a result it was the language that a lot of pragmatic people picked if you gave them anything like a choice.

    by cks at January 21, 2012 06:04 AM

    January 20, 2012

    Blog o Matty

    How to encrypt an SSH private key

    If you are using SSH key-based authentication you should be encrypting your private key. This ensures that if someone breaks into your server and steals your keys, they won’t be able to utilize them to access other systems. If your private key isn’t encrypted you can use the ssh-keygen utilities “-p” option to do so: [...]

    by matty at January 20, 2012 09:08 PM


    Administered by Joe. Content copyright by their respective authors.