Planet Sysadmin               

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

May 18, 2012

mypapit gnu/linux blog

What to do when your Google disabled your Gmail account?

Recently I managed to get my gmail account disabled by Google. At first, I didn’t think that it would be a big deal since free email account can be registered every now and then, if it managed to get disabled/suspended.

gmail disabled

But…. It turns out I WAS WRONG.

See, when Google disabled a Gmail account, it also disabled all other accounts that associates with that account, including (but not limited to) :

  • Youtube (your videos will be inaccessible)
  • Blogger (all your blogs will be made inaccessible)
  • Google+
  • Google Play / Android Market (partially affects your Android phone and contacts, your paid apps will not be available)
  • Google Drive / Google Docs (you won’t be able to access your files /documents)
  • Google Code (loose access to your code repo)
  • And anything that is related to Google service

How does a Gmail account gets disabled ?

Officially Google states that each accounts holder must comply with Google Terms of Service.

Unofficially, there could be tons of reasons why Google disable a particular Google account, which includes:

  • Suspected partaking in spamming activity
  • Age factor (based on D.O.B data entered, those under 13yrs old aren’t allowed to use Google
  • Suspected using illegal credit card (in case of purchasing through Google Wallet or Google Pay)
  • When Google suspect that your account has been compromised
  • etc…

Anyway, they didn’t tell me exactly what I did and why they disabled my account (they tell me that they won’t disclose details to avoid their automated system from being compromised by hackers).

What they do is ask me when the last time I access my account, using which browser and what are the things that I do with my Google account recently before my account being disabled.

After that, within 24 hours, my account has been restored! So if you find yourselves in similar situation, then you should try get some help from Google Products (Gmail) forums. The people there are helpful, as long as you don’t get too emotional and push them too much.

Note that you should understands the Google Product Terms & Policy when you are using any Google Products. Because from what I’ve seen from the forum, there are also those who aren’t as lucky as I am, getting their accounts permanently disabled. Once it is permanently disabled, there are absolutely *ZERO* chances of recovering your precious data.

Be warned.


by mypapit at May 18, 2012 10:26 AM

The Nubby Admin

How do I Use mysqldump on a LAMP Server Running Plesk?

Plesk has some baked in magic concerning MySQL and the admin account. If you try to use mysql or mysqldump using your root user name or password, it will not be allowed. You’ll see something like this:

[root@server] mysql -u admin -p
ERROR 1045 (28000): Access denied for user 'admin'@'localhost' (using password: YES)

If you want to access MySQL as root, you simply use the command my. What exactly does my do?

[root@server] type my
my is aliased to `mysql -A -u admin -p`cat /etc/psa/.psa.shadow`'

So, in order to use mysqldump, one has to use the following command syntax:

mysqldump -u admin -p`cat /etc/psa/.psa.shadow` [database] > [outfile-name]

Strange but true. Of course, this is for a vanilla installation of Plesk. I’m sure you can customize your MySQL permissions and groups to behave differently, however I would not advise that. Plesk likes to have things its own way, and it will either break if you change things or set things back to how it likes them on the next update.

by Wesley David at May 18, 2012 09:54 AM

System Adminstrators' Blog

Useful commands to extract packages

Useful commands to extract packages:

To extract a *.tar file: tar xvf package.tar
To extract a *.cpio.Z file: zcat package.cpio.Z | cpio -idmV
To extract a *.gz file:  gunzip package.gz
To extract *.tar.gz file: guznip package.tar.gz; tar xvf package.tar
To extract *.dstream.Z file: uncompress package.dstream.Z; pkgtrans package.dstream . all
To extract *.zip file: unzip package.zip

yeah sure, citi’g gonna give me a memo for this

by elizar at May 18, 2012 06:29 AM

May 17, 2012

Ubuntu Geek

MyNotex 1.2.1 released and Installation instructions included


{lang: 'en-GB'}

MyNotex is a free software for Gnu/Linux useful to take and to manage textual notes, also a large number of them. Notes are gathered under different subjects and are made by a title, a date, a tags (keywords) list and a free-length text. This may be formatted: it is possible to change the font name, size and color of a selected text and of its background, and also to set bold, italic, underline and strike-through; the text may have pictures within it. The software can manage paragraph alignment, bullets and numbered lists with automatic indentation. A single file of MyNotex contains various subjects and notes.
For example, MyNotex could be useful to:
(...)
Read the rest of MyNotex 1.2.1 released and Installation instructions included (698 words)


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

Related posts

by ruchi at May 17, 2012 11:59 PM

Chris Siebenmann

My Firefox memory bloat was mostly from All-in-One Gestures

My Firefox memory bloat was mostly from All-in-One Gestures

It's time for an update to my prior Firefox situation (one, two). After some experimentation it's become clear that most of my Firefox problems with constant memory growth and zombie compartments were due to my use of All-in-One Gestures (as I kind of suspected it might be). I've switched to FireGestures instead (initially as an experiment and now full time on all of my various Firefox instances on various different machines) and things have been much better; there are no zombie compartments at all and memory growth seems to have dropped significantly (although it's not clear yet if it's completely gone). And I haven't run into any problems or bugs this time around; everything has just worked the way I expected.

(A-i-O doesn't seem to have been the only problem I had; for example, it seems to be a bad idea to leave a tab or window sitting around with an embedded Youtube video. It's also not clear if Firefox Nightly behaves well for me in general because I haven't been able to leave it running for multiple days yet.)

In addition to less memory usage, FireGestures also seems to simply be more responsive and snappy than A-i-O. It certainly has more useful features, including the ability to add gestures without needing to hack the source code, a library of existing additional gestures (including the one that I wanted), and the ability to 'back up' and 'restore' your settings (which for me really means the ability to easily synchronize my gestures between multiple Firefox instances).

(See FireGesture's homepage for more information on all of this.)

So FireGestures is now one of my core extensions, replacing All-in-One Gestures in the previous list.

The one drawback of FireGestures is that it doesn't work in Firefox 3.6; my laptop is still running Fedora 14 with this Firefox release (because that's the last one with Gnome 2 instead of Gnome 3). I don't consider this a real drawback, but you may.

PS: people migrating from All-in-One Gestures to FireGestures might want to use Down-Right-Down to call up the A-i-O information display that shows all of your gestures and then save it (as an HTML page, which is what it is). You can then conveniently look at it later when you're using FireGestures.

(I am far too impatient to try to retrain years of reflexes to use the native FireGestures gestures for various actions; I just ruthlessly rewrote them to be the A-i-O gestures I'm used to.)

by cks at May 17, 2012 08:12 PM

Geeking with Greg

The game Stick Portal

I want to share more of the ideas I've been exploring. First, let me start with this, an early version of a game I'm calling Stick Portal. Click on the image to play:
It's entirely written in Coffescript using HTML5 canvas. Just need a browser to play, works pretty well on mobile devices (add it to your home screen and it'll even go full screen and behave like a free app).

The idea is to create a simplified puzzle game with a level editor where kids could share levels they created. The current version has ten levels that are the tutorials to teach players how to play the game. I've just started on the level editor that will, eventually, allow people to create their own levels easily and share them with others.

The motivation for this came from seeing what Valve did with Portal 2. Portal 2 had a level editor called Hammer that was amazing but incredibly hard to use. Kids were using Hammer to create puzzles for each other that they could play in Portal 2 -- which is great exposure to CAD-like modeling tools and a nice spatial reasoning workout -- but it was really painful. Valve just launched a much easier-to-use editor for Portal 2 that is truly fantastic, highly recommend it.

Stick Portal is free to play, open source (MIT license), and the code is available on GitHub. The source might be useful to people working on similar games as it contains examples of ways to use the Box2Djs physics engine, handling touch and multi-touch (and accelerometer) on mobile devices, how to make your web page look like an app, plenty of examples of working with HTML5 Canvas, crazy things like a way to automatically resize the canvas when the browser window changes or a device rotates, and a lot of other goodies. Won't claim it's the most beautiful code ever, but it is well commented and was fun to write. I hope it is useful.

I plan to keep working on this and extend it to include an editor, but I've been sitting on this long enough so, in the spirit of launch early and often, I'm putting it out now. Please let me know what you think in the comments, and I'd love it if you'd drop me a note if your kids like the game or if the examples in the source turn out to be useful to you.

by Greg Linden (noreply@blogger.com) at May 17, 2012 08:09 PM

my other pc is a cloud

Windows 2008 R2 + SQL 2008 R2 + Password Policy = Security Event Log Out of Control

I was asked to troubleshoot an interesting problem today where the Windows Security event log was being "flooded" by one particular sort of event.  By flooded, I mean about 20 duplicate entries logged per second.  The biggest problem with this is that it was making the Security log on that server useless, as the log would fill up within 45 minutes at that rate.  Click to enlarge the screenshot below:

event log ss*Names were changed to protect the guilty*

 The operating system is Windows 2008 R2. The server is a domain member. The server also runs SQL Server 2008 R2.  The server is a cluster node in a failover cluster.  I started Googling and Binging the event ID and description, and I didn't get much at first.

As an aside, I can't believe I just used the word "Binging," and I much prefer Google for almost everything, but if you want to search Technet, MSDN, and other Microsoft sites, the built-in Bing search on those sites actually does tend to produce better results on those sites than a general Google search. For me anyway. Maybe a "site:technet.com xyz" search on Google would do just as well. Anyway... onward:

So the only solid clue I found in my searching was this Technet article. The Windows Password Policy Checking API was being called at a staggering rate, but why?  By whom?  How do I make it stop?  The same SQL service account was being named in the events, so it obviously must have something to do with SQL.  Well, I could turn off the auditing of "Other Account Management Events," either by way of domain GPO or local security policy on that server... but that would only suppress the logging of that behavior.  It does nothing to stop the actual behavior.  Plus I would also lose any other events of that same category on the system.

I also knew that there was an "Enforce Password Policy" option that can be configured on each SQL account.  So I fired up SQL Management Studio on that server and did some testing, and as it turns out, that option was enabled on several accounts, including service accounts that are designed to hit the database rapidly.  It appears that every time an authentication attempt is made by one of those SQL accounts that has that Enforce Policy option checked, the SQL service makes a call to that Windows API to do some password policy checking, and that event is logged.

I tactically identified a few key service accounts that I knew to be very active on that database, and I disabled the "Enforce Password Policy" option on those accounts one by one.  I confirmed that with each account I changed, the rate at which those Security event 4793's were coming in decreased. Until finally, they stopped completely.

 

That's all for today.  On one final note, I wish we did cool things like this in the United States, especially as a resident of a state that cuts science funding.

by ryan@myotherpcisacloud.com at May 17, 2012 03:29 PM

Google Webmasters

Making more pages load instantly

Webmaster level: All


At Google we're obsessed with speed. We've long known that even seemingly minor speed increases can have surprisingly large impacts on user engagement and happiness. About a year ago we rolled out Instant Pages in pursuit of that goal. Instant Pages makes use of prerendering technology in Chrome to make your site appear to load instantly in some cases, with no need for any extra work on your part. Here's a video of it in action:



We've been closely watching performance and listening to webmaster feedback. Since Instant Pages rolled out we've saved more than a thousand years of ours users' time. We're very happy with the results so far, and we'll be gradually increasing how often we trigger the feature.

In the vast majority of cases, webmasters don't have to do anything for their sites to work correctly with prerendering. As we mentioned in our initial announcement of Instant Pages, search traffic will be measured in Webmaster Tools just like before this feature: only results the user visits will be counted. If your site keeps track of pageviews on its own, you might be interested in the Page Visibility API, which allows you to detect when prerendering is occurring and factor those out of your statistics. If you use an ads or analytics package, check with them to see if their solution is already prerender-aware; if it is, in many cases you won't need to make any changes at all. If you're interested in triggering Chrome's prerendering within your own site, see the Prerendering in Chrome article.

Instant Pages means that users arrive at your site happier and more engaged, which is great for everyone.


by Gary Illyes (noreply@blogger.com) at May 17, 2012 04:03 PM

Google Blog

Helping students fish for a better future in the land of 10,000 lakes

Minnesota has long been a state that’s prided itself on its commitment to education. Now the state has taken on the mission of becoming a technology hub as well, setting the goal to become one of the country’s top five technology states by 2020. Last week, we travelled to Minnesota to pilot two new programs designed to help students with an interest in technology get a jump on the job market, and learn directly from Google engineers over Google+ Hangout.

First, we partnered with Teach for America on a classroom mentorship project that pairs Google engineers with middle school science and math classes via Google+ Hangouts. A dozen Googlers paired up with classrooms in Minneapolis/St. Paul last week to introduce a curriculum modelled after Solve for X, Google’s initiative that celebrates technology-based moonshot thinking to solve real-world problems. In the coming weeks, each classroom will chose a big problem to tackle (world hunger, homelessness, climate change, etc.) and develop an innovative technology solution to address it—with help from the Google mentor who will join the classroom via Google+ Hangout for coaching sessions. We think hangouts are a great way to connect Googlers with classrooms far away, and are looking to expand this pilot to other states in the fall.

Google Engineer Selim Onal talks with students at the Minneapolis KIPP Academy about Solve for X

We also kicked off our first-ever youth entrepreneurship training as part of our Google for Entrepreneurs programs. The summit brought together 60 high school students from the Minneapolis STEP-UP program, an effort designed to place students from lower-income communities as interns at Minnesota businesses over the summer. Our goal was to give these students some basic training in Google tools like Docs, Apps, YouTube and Google+ so that they can enter their internships with a better understanding of how technology and the Internet can be of help to them, as well as spark these students with an entrepreneurial drive that will serve them well in these opportunities. After a morning of learning about Google tools, the students broke out into teams to pitch their own business ideas to solve challenges in education, government, transportation and the music industry. A number of mentors from the Minneapolis tech community joined us to help coach the students, and Minneapolis Mayor R.T. Rybak was on hand himself to help get the students started.

Minneapolis STEP-UP students pitch their start-up ideas to address a series of real-world challenges

Science and technology disciplines are projected to add 70,000 jobs to the Minnesota job market by 2019. We hope by partnering with local organizations, we can help give students the inspiration and skills to enter that job market ready to excel.

by A Googler (noreply@blogger.com) at May 17, 2012 01:50 PM

Shiver me timbers, the 2012 D4G Winner is....

After 114,000 submissions and millions of your votes, second grader Dylan Hoffman of Caledonia, Wisc. is this year’s U.S. Doodle 4 Google National Winner. His doodle “Pirate Times” will be featured on the U.S. Google homepage tomorrow, May 18.

Hoffman, who attends the Prairie School in Racine, Wisc., responded to this year’s theme “If I could travel in time I’d visit...” with a colorful depiction of his dream visit to an era filled with swashbucklers. There, he’d “sail a pirate ship looking for treasure, have a colorful pet parrot and enjoy beautiful sunsets from deserted islands.” With his win, Dylan has come into some treasure of his own: a $30,000 college scholarship, a Chromebook computer and a $50,000 technology grant for his school. As an added bonus, Dylan’s doodle will grace the front of a special edition of the Crayola 64-crayon box, available this fall.


After this year's record-breaking submissions, choosing the National Winner and the four National Finalists wasn’t an easy decision. In addition to selecting Dylan, millions of public votes also helped us determine the four National Finalists, each of which will receive a $5,000 college scholarship:
  • Grades 4-5: Talia Mastalski, Grade 5, East Pike Elementary School, Indiana, Penn., for her doodle “Traveling to me.” Talia says, “When I think of Google, I think of a wormhole leading me to knowledge. If I could travel in time, I would visit a similar wormhole into the future to find out about ME.”
  • Grades 6-7: Herman Wang, Grade 6, Suzanne Middle School, West Covina, Calif., for his doodle “Retro City.” Herman says, “If I could travel in time, I'd visit Retro City. A future city made of robots and humans.”
  • Grades 8-9: Susan Olvera, Grade 8, SOAR Alternative School, Lafayette, In., for her doodle “Traveling Back to the Future.” Susan says, “If I could travel in time, I'd travel back to the future. If there is life on other planets, I believe we'd visit the natives as well as invent different ships and rockets for quicker transportation. With what we have accomplished currently, I believe the ‘future’ isn’t so far away.”
  • Grades 10-12: Cynthia Cheng, Grade 11, Edison High School, Edison, NJ, for her doodle “A World of Adventure.” Cynthia says, “If I could travel in time, I'd visit the age of the Vikings. Though their tales of monsters may not have been entirely true, they were some of the greatest explorers in history. It would be a remarkable experience to share adventures and discover new lands with them.”
After the awards ceremony in New York City today, all 50 of our State Winners will unveil an exhibition of their artwork at the New York Public Library, where their doodles will be displayed from May 18-July 19. In addition, the artwork of all our State Finalists and Winners will be displayed at exhibitions in their home states across the country over the summer. Be sure to check out the local exhibition near you.

Thanks to all of you who voted and helped us select this year's winner. Even more important, thank you to all of the students who submitted entries. Keep on doodling and we’ll see you next year!

by A Googler (noreply@blogger.com) at May 17, 2012 11:04 AM

Chris Siebenmann

The Go language's problem on 32-bit machines

The Go language's problem on 32-bit machines

Recently (for my value of recently) there was somewhat of a commotion of people declaring that Go wasn't usable in production on 32-bit systems because its garbage collection was broken and it would eat all of your memory. Naturally I was interested in this and spent some time digging in to the reports and trying to understand the situation. Today I'm going to try to write down as much as I know about what's going on to get it straight in my head, which is going to involve a trip into the fun land of garbage collection.

To simplify a bit, the purpose of garbage collection is to automatically free up memory that's no longer used. The GC technique everyone starts with is reference counting but since it has various problems (including dealing with circular references) most people soon upgrade to more complex schemes based on inverting the problem: rather than noticing when something stops being used, the garbage collection system periodically finds all of the memory that's still actively used and then frees everything else. This is 'tracing garbage collection' (and garbage collectors), so called because the garbage collector 'traces' all live objects.

One deep but unsexy problem in garbage collection is how your GC system knows what fields in your objects refer to other objects and what fields are just primitive types like numbers, memory buffers, strings, or the like, and how it does this efficiently. This can be a particular issue for a system language where you probably want to have structures and objects that are as simple and dense as possible, with as little overhead from type annotations, inefficient 'boxed' representations, and so on as possible. One solution is to maintain a separate bitmap of what words in an allocated memory area are actually pointers (which the GC can then scan efficiently, and which can be set by the runtime when an object is allocated). Another solution is what gets called 'conservative garbage collection'. The fundamental idea is that in conservative GC, we are willing to over-estimate references (and thus wind up not freeing some unused memory); rather than insisting on knowing about references, the GC system simply scans through allocated memory looking anything that might be a pointer to an allocated object. If it finds one, it conservatively declares that the object is still alive and traces things from there.

Go was initially designed as a system language, although it's no longer described as one. As such, one of the tradeoffs the language designers made is that Go more or less uses conservative garbage collection, as far as I understand, at least for objects or at least memory areas that may contain pointers (some static data that's known to be pointer free may be skipped by the conservative GC). Although there's said to be the start of a more efficient word-bitmap implementation for Go objects, it's not currently usable by the GC (and may not be fully live).

(As far as I can tell from commentary, Go's garbage collector only scans Go's own memory areas; it doesn't make any attempt to scan memory used by outside libraries or code to find references to Go objects. Runtime code that passes a pointer to a Go object to an outside function is apparently required to keep the object alive inside Go, for example by hooking it into a global variable.)

The problem with conservative GC is that it over-estimates memory still in use because it finds false 'references', things that look like pointers to allocated objects that aren't actually that. There are a number of factors that make conservative GC worse:

  • the more of your address space is in use for language objects, the more random values can look like references to them. If half of the address space is your objects, half of all properly aligned N-bit patterns look like pointers to your objects (where N is the size of a pointer).
  • the smaller the address space is in general, the more of it you're going to fill up with your objects for the same amount of memory use. Two GB of objects is half of the 32-bit address space but a tiny fraction of the 64-bit address space.

  • the larger your individual objects are, the more memory a single 'reference' somewhere inside one will prevent from being freed.
  • similarly, the more other objects a single object refers to, the more memory will be held down by a single spurious reference to the top object.

Many of these factors are apparently quite bad for 32-bit Go programs that use a significant amount of memory, apparently especially for large objects and when they use objects that the garbage collector treats conservatively. They are drastically reduced on 64-bit machines, where you would generally have to be unlucky in order for the conservative GC to accidentally hold a significant amount of memory busy. However, the problem could still happen with 64-bit Go; it's just less likely.

(The general reference for this is Go language issue 909.)

At this point I have no articulate personal reactions to all of this. As a pragmatic matter I'm not exactly writing Go programs right now for various reasons (although I keep vaguely wanting to because I like Go in the abstract), so if I'm being honest it's all kind of theoretical.

(My problem with Go in practice is partly that I have nothing to really use it on. I need to find a project that calls out for it instead of anything else.)

Sidebar: the 32-bit Windows issue

There's also an issue on Windows machines due to memory fragmentation (via Hacker News). When it starts, the Go runtime tries to allocate a contiguous 512 Mbyte region of virtual address space. Sometimes on Windows machines enough DLLs have loaded in enough places by this point that there isn't such a contiguous chunk of address space left any more, the allocation fails, and the Go runtime immediately exits with an error.

(In theory this sort of address space fragmentation could happen on any 32-bit OS, but apparently Windows is uniquely susceptible for various reasons.)

by cks at May 17, 2012 07:20 AM

go fedora

Getting Started With Git

I have been using Git for years now and I am still a novice user. Actually, if you are an individual developer or work in a really small team, you don’t really need to go beyond using the basic stuff like cloning a repo, committing code, branching and pushing back to the origin repo. And that’s exactly what happened with me. Working alone most of the times and working in my own repos. I never felt the need to explore advanced usage.

Last week, we didn’t have internet at home for like four days. So, I thought I’ll read a book. I downloaded ProGit : The Free Git Book and started reading. It’s an awesomely written book. I learned a lot of new things about Git. A few more concept about using branches efficiently. If you are a Git beginner or looking forward to getting started with Git and you don’t like reading too much, I’ll suggest that you read at least first three chapters thoroughly. That along with a free GitHub account should be enough to get you going if you are not going to be a heavy Git user soon.

Fedora Tutorials and Videocache by Kulbir Saini.


by Kulbir Saini at May 17, 2012 04:44 AM

May 16, 2012

Linux Poison

Bash Script: Create simple select menu using select statement

Here is simple bash script which creates an simple options selection menu using bash 'select' statement, fee free to modify/copy and use this script to suite your requirement.

$ cat select.sh
#!/bin/bash

# Selection menu items goes here
SELECTION="option1 option2 option3 quit"

select options in $SELECTION; do

# here using the if statements you can perform the required  operation
if [ "$options" = "option1" ]; then
    echo "You have selected $options"

elif [ "$options" = "option2" ]; then
    echo "You have selected $options"

elif [ "$options" = "option3" ]; then
        echo "You have selected $options"

elif [ "$options" = "quit" ]; then
        echo "You have selected $options"
    exit

# if something else is selected, show the menu again
else
    clear;
    echo "please select some options"

fi
done

Continue Reading...

by noreply@blogger.com (Nikesh Jauhari) at May 16, 2012 08:35 PM

Bash Script: Creating and using Read-only variables

Here is an simple bash script showing the trick to create the read-only variable, feel free to copy and use this script.

$ cat declare.sh
#!/bin/bash

# Declare the variable as readonly
declare -r AGE=25
echo $AGE

# Try to change the value of this readonly variable
# you should get an error message
AGE=34
echo $AGE

Output: $ ./declare.sh
./declare.sh
25
./declare.sh: line 9: AGE: readonly variable
25


by noreply@blogger.com (Nikesh Jauhari) at May 16, 2012 06:25 PM

Rands in Repose

Please Learn to Write

There's been lots of buzz on the topic of whether or not you should learn to code. As an engineer, I don't have unbiased thoughts on the matter. I tweeted Jeff Atwood's piece because, well, I agree that it's pretty silly to think that the world is going to be a better place if the Mayor of New York City learns how to code. I agree with Atwood that his valuable time would be better spent elsewhere.

I believe there are essential skills you learn as an engineer who codes. It teaches you how to structure your thinking, and the process looks something like this:

  • I have this thing I want to build.
  • I have a finite set of tools that enforce a certain set of rules I must follow.
  • And... go.

Coding is unforgiving. Its structure is well-defined and enforced by whatever interpreter or compiler you might be using. You are punished swiftly for obvious errors. You are punished more subtly for the less obvious ones.

Once you've mastered a particular language, you've also mastered a means of thinking. You understand how to decompose a problem into knowable units, and you learn how to intertwine those units into pleasant and functional flow. Perhaps you've figured out how to get that flow to perform at Herculean scale. There is no doubt in my mind that this is an essential and valuable skill for anyone to learn and master.

However, there is a language you could master that teaches many of the same lessons, appears far more forgiving in terms of syntax, and has immediate broader appeal.

The language you can learn is your own.

I argue that there is an essential set of skills that intersect both with writing words and writing code. Let's revisit the process:

  • There's this thought I want to write.
  • I have finite set of words, a target audience, and, likely, a certain article length that all serve as constraints.
  • And... go.

Writing appears more forgiving because there is no compiler or interpreter catching your its/it's issues or reminding you of the rules regarding that or which. Here's the rub: there is a compiler and it's fucking brutal. It's your readers. Your readers are far more critical than the Python interpreter. Not only do they care about syntax, but they also want to learn something, and, perhaps, be entertained while all this learning is going down. Success means they keep coming back - failure is a lonely silence. Python is looking pretty sweet now, right?

The articles on Rands keep getting longer and longer, and as I'm finishing a piece, I worry, "Is it too long?" I worry about this because we live in a lovely world of 140-character quips and status updates, and I fret about whether I'll be able to hold your attention, which is precisely the wrong thing to worry about. What I should be worried about is, "Have I written something worthy of your attention?"

Writing is the connective tissue that creates understanding. We, as social creatures, often better perform rituals to form understanding one on one, but good writing enables us to understand each other at scale.

Now... go.

May 16, 2012 03:28 PM

Google Blog

Introducing the Knowledge Graph: things, not strings

Cross-posted on the Inside Search Blog

Search is a lot about discovery—the basic human need to learn and broaden your horizons. But searching still requires a lot of hard work by you, the user. So today I’m really excited to launch the Knowledge Graph, which will help you discover new information quickly and easily.

Take a query like [taj mahal]. For more than four decades, search has essentially been about matching keywords to queries. To a search engine the words [taj mahal] have been just that—two words.

But we all know that [taj mahal] has a much richer meaning. You might think of one of the world’s most beautiful monuments, or a Grammy Award-winning musician, or possibly even a casino in Atlantic City, NJ. Or, depending on when you last ate, the nearest Indian restaurant. It’s why we’ve been working on an intelligent model—in geek-speak, a “graph”—that understands real-world entities and their relationships to one another: things, not strings.

The Knowledge Graph enables you to search for things, people or places that Google knows about—landmarks, celebrities, cities, sports teams, buildings, geographical features, movies, celestial objects, works of art and more—and instantly get information that’s relevant to your query. This is a critical first step towards building the next generation of search, which taps into the collective intelligence of the web and understands the world a bit more like people do.

Google’s Knowledge Graph isn’t just rooted in public sources such as Freebase, Wikipedia and the CIA World Factbook. It’s also augmented at a much larger scale—because we’re focused on comprehensive breadth and depth. It currently contains more than 500 million objects, as well as more than 3.5 billion facts about and relationships between these different objects. And it’s tuned based on what people search for, and what we find out on the web.

The Knowledge Graph enhances Google Search in three main ways to start:

1. Find the right thing
Language can be ambiguous—do you mean Taj Mahal the monument, or Taj Mahal the musician? Now Google understands the difference, and can narrow your search results just to the one you mean—just click on one of the links to see that particular slice of results:

This is one way the Knowledge Graph makes Google Search more intelligent—your results are more relevant because we understand these entities, and the nuances in their meaning, the way you do.

2. Get the best summary
With the Knowledge Graph, Google can better understand your query, so we can summarize relevant content around that topic, including key facts you’re likely to need for that particular thing. For example, if you’re looking for Marie Curie, you’ll see when she was born and died, but you’ll also get details on her education and scientific discoveries:

How do we know which facts are most likely to be needed for each item? For that, we go back to our users and study in aggregate what they’ve been asking Google about each item. For example, people are interested in knowing what books Charles Dickens wrote, whereas they’re less interested in what books Frank Lloyd Wright wrote, and more in what buildings he designed.

The Knowledge Graph also helps us understand the relationships between things. Marie Curie is a person in the Knowledge Graph, and she had two children, one of whom also won a Nobel Prize, as well as a husband, Pierre Curie, who claimed a third Nobel Prize for the family. All of these are linked in our graph. It’s not just a catalog of objects; it also models all these inter-relationships. It’s the intelligence between these different entities that’s the key.

3. Go deeper and broader
Finally, the part that’s the most fun of all—the Knowledge Graph can help you make some unexpected discoveries. You might learn a new fact or new connection that prompts a whole new line of inquiry. Do you know where Matt Groening, the creator of the Simpsons (one of my all-time favorite shows), got the idea for Homer, Marge and Lisa’s names? It’s a bit of a surprise:

We’ve always believed that the perfect search engine should understand exactly what you mean and give you back exactly what you want. And we can now sometimes help answer your next question before you’ve asked it, because the facts we show are informed by what other people have searched for. For example, the information we show for Tom Cruise answers 37 percent of next queries that people ask about him. In fact, some of the most serendipitous discoveries I’ve made using the Knowledge Graph are through the magical “People also search for” feature. One of my favorite books is The White Tiger, the debut novel by Aravind Adiga, which won the prestigious Man Booker Prize. Using the Knowledge Graph, I discovered three other books that had won the same prize and one that won the Pulitzer. I can tell you, this suggestion was spot on!

We’ve begun to gradually roll out this view of the Knowledge Graph to U.S. English users. It’s also going to be available on smartphones and tablets—read more about how we’ve tailored this to mobile devices. And watch our video (also available on our site about the Knowledge Graph) that gives a deeper dive into the details and technology, in the words of people who've worked on this project:


We hope this added intelligence will give you a more complete picture of your interest, provide smarter search results, and pique your curiosity on new topics. We’re proud of our first baby step—the Knowledge Graph—which will enable us to make search more intelligent, moving us closer to the "Star Trek computer" that I've always dreamt of building. Enjoy your lifelong journey of discovery, made easier by Google Search, so you can spend less time searching and more time doing what you love.

by A Googler (noreply@blogger.com) at May 16, 2012 11:05 AM

The Nubby Admin

Solving Blank or Apache 2 Test Page Problems (and more) in Plesk 10 on Linux

This won’t be my usual “Problem, Solution, Long Story” style troubleshooting post. There are a few complexities involved that don’t allow it to fit into that template so easily.

I have a client-facing server running CentOS 5.7 and Plesk 10.3. When clients need web space, I put them on my Plesk server so they have shiny buttons to click when managing their own web space. Recently I had a series of unfortunate events cause an outage on one client.

It starts with my craving to have things standardized. All client account domain directories are in lower case. All, that is, except for one: AmazingClient. Their main domain’s vhost directory is /var/www/vhosts/AmazingClient which, in Plesk-land means that any reference to that client’s domain is always in that case. It bugs me. More than it should. When I created the client account several months ago, for some inexplicable reason, I used CamelCase in their name. One recent evening I decided to change the capitalization for their account’s main domain. Simple, right?

I did say that I’m using Plesk, did I not?

Before I go any further, I know what you might be thinking. “Domains aren’t case sensitive! What nonsense are you on about?!” They’re not case sensitive when approaching domains from a DNS perspective. However, I’m looking at this from a filesystem and Plesk user account perspective.

To change something as simple as the case of a domain’s vhost directory, one cannot merely rename it. There are many configuration files to consider as well as Plesk-specific tasks that rely on the domain’s directory not being glibly swapped out from underneath it. To change a domain’s name in Plesk, one has to go into the client’s control panel, and click on the Websites & Domains tab.

From there you will find the domain that you want to change the case of (remember, this isn’t about “domain” in the DNS sense, but rather the representation of that domain within Plesk and on the filesystem) and click on its link. From there you will come to the Host Settings page for that domain. Once on the Host Settings page, you’ll have the option to change the domain name. Here comes the trouble: you can’t change the name merely based on case. Even though Plesk sees the client domain differently in the backend based on case, in this Host Settings interface case is not taken into account. Plesk will complain that the domain already exists. You need to change the domain name to something different, then change it back to the original domain name, minus the capitalization. (Plesk FAIL #1)

In my case, I wanted to swing it from AwesomeClient.com, to awesomeclienttemp.com, and then back to awesomeclient.com (sans the capital “A” and “C”).

Tipping Over the Edge of Doom

When trying to move from AwesomeClient.com to awesomeclienttemp.com I received this error:

Internal error: [domain path] is out of webspace
Message is out of webspace
File Webspace.php
Line 334
Type PleskFatalException

After that error, the Websites & Domains tab is no longer accessible to that client account. Trying to use it receives the same “Internal Error: [domain path] is out of webspace” error.

You see, it appears that Plesk, upon requesting a domain rename, copies the domain’s existing files and then deletes the old ones. It does not perform a mere rename action (Plesk FAIL #2). This client uses quite a bit of space and it apparently maxed out their quota. I say “apparently” because, by a strict accounting for free space and quotas on the server, it should have been allowed – but just barely. Perhaps there’s more space that Plesk needs than a simple doubling of existing files. (Plesk FAIL #3?) Plesk certainly didn’t perform any kind of filesystem or account limitation checking prior to attempting the move. (Plesk FAIL #4)

The client site was still responsive; there didn’t appear to be any negative effects. I needed to investigate further, but as the night wore on I decided to postpone a thorough examination until another day.

Ask Not For Whom Your Cell Phone Tolls

Bright and early the next morning, I got a call. It was from the client.

“Our website seems to be down, so… uhh… if you could look into that…”

Super.

Nothing was being served up in response to any page requests for this domain. Apache’s error logs were showing requests for this client’s files as hitting in the default vhost root, not their own. Then, it hit me.

Plesk does not use the standard Apache configuration files. I mean, it does, but not really. It auto-generates Apache configuration files based on the information that is stored in its own customer database within MySQL. That’s why the domain was just fine the evening before, but didn’t fail until the wee hours of the morning. The configuration files had been latently generated based on the failed attempt at changing the domain account name.

Silly me… I expected there to be rollback statements in any of the SQL DML statements made to the database. I expected that a fatal error would be caught and changes rolled back. They weren’t. (Plesk FAIL #5) Silly, silly me.

Of course, I wasn’t going to be able to change the domain information because the Websites & Domains tab bombed out permanently with an internal error. I couldn’t access the officially sanctioned means of modifying the domain account. This called for some database mangling.

Let Pry Through the Portage of the Database

I logged into mysql and dumped the psa database. From there, I used grep to scour the .sql file for any mention of awesomeclienttemp. Sure enough, the bad change was recorded in the database. There were dozens of records in several tables that pointed to the bad domain. That was causing Apache configuration files to be written with bad data, among other applications. There was also mention of the original, unsullied domain. I guess not all of the SQL statements that are part and parcel of a domain change were able to be executed before the error condition was achieved. (Side note: ROLLBACK!! ROLLBACK!! ROLLBACK!!)

Solving the problem was a simple as searching for and replacing the string awesomeclienttemp with AwesomeClient. I used mysql to perform that, but it could have been done on the dump file and then imported. For those interested, I used the replace() function and performed a select statement first just to make sure that I was changing the data that I expected to. Once satisfied with the results I performed an update statement also using the replace() function. Here’s an example of changing some values in the dns_recs table of Plesk’s psa database:

mysql&gt> SELECT REPLACE(displayVal,'clienttemp', 'Client') FROM dns_recs WHERE displayVal LIKE '%clienttemp%';
+--------------------------------------------+
| REPLACE(displayVal,'clienttemp', 'Client') |
+--------------------------------------------+
| mail.AwesomeClient.com.                    |
| AwesomeClient.com.                         |
| AwesomeClient.com.                         |
| AwesomeClient.com.                         |
+--------------------------------------------+
mysql> UPDATE dns_recs SET displayVal=REPLACE(displayVal,'clienttemp', 'Client') WHERE displayVal LIKE '%clienttemp%';

With the database in a better state, there is still one more thing left to do. Plesk doesn’t dynamically look to the database for configuration information. It looks to regular files that have been dynamically generated from the database’s information. That generation happens on a schedule, but can be expedited using the httpdmng command. Specifically, I used:

/usr/local/psa/admin/bin/httpdmng --reconfigure-domain AwesomeClient.com

You could also use the –reconfigure-all option to perform a regeneration of all domain configuration files. After running httpdmng the domain was up and running.

Apache Test Page or Blank Page Problems

I glossed over some of the troubleshooting techniques I used while tracing the problem to its root. If you’re having trouble with seeing the Apache test page, then search through your httpd.conf file and make sure that your DirectoryIndex directive is set to look for all of the variants of an index.html page that you use. For example, index.html, index.htm. index.php, etc.

Furthermore, just to reiterate, check all of your vhost conf files, such as yourdomain/conf/vhost.conf (or any conf files that reside in that directory) for the DocumentRoot directive and make sure that it’s pointed to what you want it to be pointed at. Do not edit the files that are named similar to 13279881860.14852200_httpd.include. Those are auto-generated by Plesk and at worst you could cause destruction of files in your domain; at best you will have to re-edit those files every time a new one is generated.

Of course, do a dummy check to make sure that the domain you are trying to access is really resolving to the IP address of your web server. Just… do it. It takes 5 seconds and you have the outside chance of being pleasantly surprised.

The Takeaway

Plesk is rickety. If anyone has used a better control panel for client-facing servers, let me know. I’ve worked with cPanel and Plesk, but never with any of the others that I’ve listed in this giant list of web based server control panels. Most people will shout “Just don’t use a control panel!” but that’s not a terribly client friendly option. I’m not categorically against control panels when used in the correct situations. I am, however, against misbehaving control panels.

Let me know your experiences in the comments below.

by Wesley David at May 16, 2012 09:53 AM

Linux Screw

Top 5 Password Managers for Linux [Guest Post]

In this post you will find set of password managers for Linux which provides secure storage for your passwords for sensitive data. If you still keep the passwords in plain text then you must consider one of available password managers so this article is for you.

KeePassX

KeePassX has been a very popular and famous password manager for Linux for a very long time and still trusted by pretty big number of users. When user launches the KeePassX password manager first it requires to set up of a master password to add an extra layer of security to password storage. As an option you can use a file with encryption key instead of the password. This key file can be used along with the master password to provide stronger security. KeePassX application is rather simple so you can easily create one or more databases which will have a master password and will contain all the login credentials stored encrypted. This manager is considered to be one of the most secure managers. If you’re Ubuntu user just type in terminal the following command:

sudo apt-get install keepassx

GPassword Manager

Gpassword Manager (GPM) is also one of the most secure and highly rated password managers which have more friendly and easy to use interface that KeePassX. This utility has many features that make it to be a good choice for most of the high level computer users. This password manager allows to set and add favorites into system-tray that is one of the unique features of this application. GPM utility uses the crypto++ method for encryption which can be used in Windows and Linux hence it enables the same database to be used on different platforms without the need to convert anything.

My Passwords

My Passwords is a simple and easy to use utility that allows you to store all your login credentials in an encrypted manner within a file. The most exciting feature of this utility are its speed and no requirement of an installation. Encryption algorithm that is used there is AES. Storage in Derby Database format along with AES encryption gives the user the power to create secure and fast password repository. The interface for this utility is fairly simple.

Fiagaro’s Password Manager 2

Fiagaro’s Password Manager 2 is another powerful tool with strong encryption methods that makes it one of the most secure utility for managing passwords in Linux. Fiagaro’s Password Manager 2 uses the AES-256 encryption of the database files which hold all your login credentials (it uses master password that should be set up once you started the program first).

Gringotts

Gringotts is rather old project: its application for Linux/Unix provides the user the possibility to store his or her notes in secure storage encrypted by symmetrical ciphers. Gringotts has a set of eight different algorithms that can be used to encrypt the desired data. This utility also provides different methods for hashing as well as compression. The interface of Gringotts is not as simple as of other password Managers but still easy to use and most effective for old school bearded Unix users.

About the author: Kelly Marsh is a blogger by profession. She loves writing on technology and luxury. Beside this she is fond of technology. Recently an article on Maruti Ritz attracted her attention. These days she is busy in writing an article on johnnie walker blue.


by Artem Nosulchik at May 16, 2012 07:33 AM

Blog o Matty

Cool video on the DTrace port to Linux

This is a solid video: I can’t wait until DTrace is readily available in Linux!!

by matty at May 16, 2012 12:16 AM

May 15, 2012

Ubuntu Geek

Linux Poison

Bash Script: Check Servers Availability using ping command

Here is the simple bash script to check the server availability using simple ping command, for this you need to create a simple txt file ("server.txt") containing the hostname or ip address of the servers that you want to check ...

$ cat server.txt
google.com
yahoo.com
redhat.com
 
$ cat pingalert.sh
#!/bin/bash
# Read the file line by line
cat server.txt | while read line
do
        # check if there are no blank lines
        if [ ! -z $line ]; then
                PINGCOUNT=2
                PING=$(ping -c $PINGCOUNT $line | grep received | cut -d ',' -f2 | cut -d ' ' -f2)
                if [ $PING -eq 0 ]; then
                        echo "Something wrong with the server: $line"
                        # Or do send out mail
                else
                        echo "All good: $line"
                fi
        fi
done

Output: $ ./pingalert.sh
All good: google.com
All good: yahoo.com
All good: redhat.com


by noreply@blogger.com (Nikesh Jauhari) at May 15, 2012 07:57 PM

The Daily ACK

Getting Started with Arduino and iOS

To celebrate the release of my new video course Getting Started with Arduino and iOS, O'Reilly Media are offering 60% off when you buy it along with my book iOS Sensor Apps with Arduino.


60% off when you buy both the video and book together

It's the MAKE: Hardware Innovation Workshop this week, as well as Maker Faire Bay Area this weekend, and I'll be hanging around both talking about this and other things and well as doing some live demos. So come and talk to me if you see me, and you want to know more about connecting your iPhone to the open hardware world.


by Alasdair Allan (noreply@blogger.com) at May 15, 2012 06:27 PM

Chris Siebenmann

Some stuff on 'time since boot' timestamps

Some stuff on 'time since boot' timestamps

From today on Twitter:

@standaloneSA: Is it just me, or does it seem silly that the #NetFlow timestamp field for the flow references "ms since the router booted". Seems obtuse.

@thatcks: @standaloneSA It's probably easy to implement in the router and it creates an absolute ordering w/o worries about time going backwards.

In the Twitter way, this is a little bit cryptic so I'm going to elaborate on my guess here.

Suppose that routers were supposed to generate an absolute timestamp for their events instead of this relative one, for example UTC in milliseconds. This would create two problems.

First, routers would somehow need to know or acquire the correct UTC time (with millisecond resolution) and then maintain it. This is to some degree a solved problem but it adds complexity to the router. It also leads to the second problem, because a router is unlikely to boot with the correct UTC time (down to the millisecond).

The second problem is that the moment you have a system generating an absolute timestamp you need to deal with the certainty that the correct time, as the system sees it, will jump around. The router will boot will some idea of the UTC time but it's quite likely to be a bit off (remember that we're calling for millisecond accuracy here), then over time it will converge on the correct UTC time. As it does so, its version of UTC time may go forward abruptly, go backwards abruptly, or go forward more slowly than UTC time is really advancing. Backwards time jumps screw up event ordering completely, and all of the options screw up the true relative time between events; if you have two events timestamped UTC1 and UTC2, you actually have only a weak idea how long it is between them.

The valuable property that milliseconds since boot has is that it is a clear monotonic timestamp. It only ever goes forward and it goes forward at what should be a very constant rate, which means that it creates a clear order of events and a clear duration between any two events (well, for events from the same stream of monotonic timestamps). Monotonic timestamps are not a substitute for absolute time but neither is absolute time a substitute for monotonic timestamps; you really need both, which means that you need a map between them.

There are two possible places to build such a map: each device can do its own or it can be done in a central aggregator. I believe that the right answer is to do it in the central aggregator because this means that you have only a single version of absolute time, the aggregator's view (each device, aggregator included, may have a slightly different view of the current 'correct' absolute time for the reasons outlined above). Using only a single version of absolute time means that you have a single coherent map of all of the monotonic timestamps to (some) absolute time.

(Of course you need devices that generate monotonic timestamps to tell you when they reset their timestamps, eg when they boot.)

My impression is that using elapsed time since boot is actually common in a number of environments. For example, Linux kernel messages are usually reported this way these days (which has its own issues if you're trying to work backwards to roughly when in absolute time something happened).

by cks at May 15, 2012 04:21 PM

The Daily ACK

Location Enabled Sensors at Øredev

Back in November last year I spoke at Øredev in Malmö, Sweden, about location enabled sensors, and the video of the talk has just been put up onto the web by the organisers.

Øredev - Location Enabled Sensors for iOS from Øredev 2011.

If you're interested in the topics discussed at Øredev, all the talks will eventually make it onto the website including another talk I did at the conference on visualisation which hasn't made it online quite yet.


by Alasdair Allan (noreply@blogger.com) at May 15, 2012 03:27 PM

SysAdmin's Diary

Probably Latest Malaysia Jerseys

There’s already rumours going on about latest design of Malaysia national football team jerseys. Here they are, So, I asked Nike whether it’s true. And I received an expected answer, Apparently Nike Malaysia didn’t deny nor admit, they just said that the official version will only be revealed by them.

by irwan at May 15, 2012 03:24 PM

Managing Product Development

Programs and Technical Debt

Once you have a program (a collection of interrelated projects focused on one business goal) and you have technical debt, you have a much bigger problem. Not just because the technical debt is likely bigger. Not just because you have more people. But because you also geographically distributed teams, and those teams are almost always separated by function and time zone.

So, my nice example of a collocated team in Thoughts on Infrastructure, Technical Debt, and Automated Test Framework, rarely occurs in a program, unless you have cross-functional teams collocated in a program. If they do, great. You know what to do.

But let’s assume you don’t have them. Let’s assume you have what I see in my consulting practice: an architecture group in one location, or an architect in one location and architects around the world; developers and “their” testers in multiple time zones; product owners separated from their developers and testers. The program is called agile because the program is working in iterations. And, because it’s a program, the software pre-existed the existence of the agile transition in the organization, so you have legacy technical debt up the wazoo (the technical term). What do you do?

Let’s walk through an example, and see how it might work. Here’s a story which is a composite from several clients; no clients were harmed in the telling of this story.

Let’s also assume you are working on release 5.0 of a custom email client. Release 4 was the previous release. Release 4 had trouble. It was late by 6 months and quite buggy. Someone sold agile as the way to make software bug-free and on-time.

You do not have automated tests for much of the code, unit tests or system tests. You have a list of defects that make Jack the Ripper’s list of killings look like child’s play. But agile is your silver bullet.

The program manager is based in London. The testers for the entire program are in Bangalore because management had previously fired all the testers and outsourced the testers. That was back in release 2. They have since hired all the Bangalore testers as employees of the Bangalore subsidiary. The program architect is based in San Francisco, and there is an architect team that is dispersed into 4 other teams: Denver, LA, Munich, and Paris. The developers are clustered in “Development Centers of Excellence:” Denver, LA, Cambridge, Paris, London, Munich, and Milan. That’s 8 development teams.

Oh, and if you think I’m kidding with this scenario, I’m not. This is what most of my clients with geographically distributed teams and programs face on a daily basis. They deserve your sympathy and empathy. Do not tell them, “Don’t go agile.” That’s nuts. They have a right to go agile. You can tell them, “Don’t go Scrum.” That’s reasonable. Scrum is for a cross-functional co-located team. Agile is for everyone. Scrum is for a specific subset.

What do you do?

  1. Assign specific testers to specific development teams. No calling people resources; that allows managers to treat people like resources and plug-and-play them. You need to get rock-solid teams together. Once you have teams together, you can name them.
  2. Name teams so the teams reflect the feature groups they work on. What does an email product do? It gets email, it sorts email, it deletes, it forwards, it creates new mailboxes, and so on. The eight feature teams had to be named for the feature areas: Platform for the general features, Sort, Delete, Forward. There were two teams who worked on Platform. They were called Platform 1 and Platform 2. At one point, someone suggested they call themselves Thing1 and Thing2 from the The Cat in the Hat" target="_blank">Dr. Seuss book.
  3. Make sure you have enough product owners so they can develop roadmaps for each feature area. With a roadmap, the teams know where they are going. Even more importantly, the architects know where the program is going.
  4. Architects think and provide just enough guidance ahead. In a small project, the architecture can probably evolve with the project. In a larger program, that risk is too large. You have too many people developing in parallel for the architecture to evolve on its own with no guidance. But I do not mean there should a Master Architect Who Knows All Handing Down the Architecture From On High. NO NO NO.
    I want the architect who is a working member of the development team, who also is part of an architecture community of practice team, who curates the architecture, who guides the business value of the architecture. I do not want Big Architecture Up Front. But Thinking Up Front? Sure, that’s a great idea. Stuck on only one idea? Bad. Willing to spike an idea? Great. Willing to play in a sandbox and debate several ideas? Great. I wrote about this before, in How Agile Architects Lead.
  5. Decide what done means for every feature. You must have acceptance criteria for each feature. What does that mean? You need a product owner present for each team. You still need the conversations with each team to discuss what done means. Especially with a geographically distributed team, you need the conversation when you create the backlog at the beginning of the iteration.
  6. The US  development teams had trouble planning their iterations with their testers, because of the time zone differences with the testers. So, they asked their product owners if the product owner would write more than just a few phrases on the cards, because that would help them get through the iteration planning meeting faster. Someone was going to get up early or stay up late, and either way, someone was going to suffer. It made more sense to have a little bit more preparation than less sleep.
  7. Decide to do continuous integration and stick with it. Especially if you know you have technical debt and you don’t want to create more, you have to do continuous integration now. That prevents more technical debt.
  8. I have recommended to some teams that they have one-week iterations so that they stop the estimation nonsense and make their stories small. The point of estimation is so that you have an idea of what you can do as a team and not commit to more than that. The idea is that if you know what it takes to make your stories small, you will.
    Instead, we have all these crazy rituals around estimation and management tracking velocity of all things. (Yes, I’ve been drafting this post for a long time, and I wrote Why Does Management Care About Velocity? last week.) You know, velocity is a little like weight. Only you and your doctor need to know your weight. If you are healthy, you are fine. If you are not, you need to change something.If your team velocity is not healthy, you, as a team, need to change it. But, your management has no business butting its head in. Only you can change it.
  9. When you limit the iteration length, you tend to have the team swarm around a story. This is a tendency, not a given. If I really was the Empress of the Universe, I would decree this, but I’m not, so I won’t. If you want to decrease technical debt, or even eliminate it on your program, explain that your team will only work on one story at a time until that story is done. That story will be polished and gleaming. Fast. You will not have to worry about what kinds of testing will be done. All if it will be done.
  10. Explicitly discuss what you will automate for testing and when. In a program, I assume we will have automated system tests first. I assume we will do exploratory tests later. That’s because if you don’t start building something for test automation when you start the program and refactor as you proceed, you can never catch up. I assume every time we fix a defect, we will have an automated test for it. I also assume we build these assumptions into how we develop :-)

So far, this is all about preventing more technical debt, not what happens when you trip over technical debt as you enter code or tests you never looked at before.

If you expected to walk into a closet, take out a shirt, and close the closet door, that’s one thing. But now, you stepped into something out of one of those death-by-hoarding shows on TV, you have an obligation to do something. You can document the problem as you encounter it; you can let the product owner know; file a defect report; write a test so you can contain the debt; and maybe you have more options. Whatever you do, make sure you have done something. Do not open the door, see the mess inside and close the door on the mess. It’s tempting. Oh my, it is tempting.

See, on programs because of the size, everything is magnified. With more people and more teams, everything is harder. Things happen faster. If you have co-located cross-functional teams, no problem. But if you don’t have co-located cross-functional teams, you have to work with what you have. And, if you already have a big legacy product, you want to address technical debt in small chunks, refactoring in small bits, integrating as you proceed.

My philosophy is this: the bigger the program, the more you need to become accustomed to working in small chunks, integrating as you go. Fully implement a small story, integrate it on the mainline. Everyone on the program does that. If you need help from an integration team, so be it.

But, if everyone only implements small stories, and everyone takes care of their own technical debt as they discover it, you don’t need an army of integration people. You only need an army of integration people when you have technical debt around integration and release. Fix that, and everyone can become responsible for their own integration.

And, if you can’t release, that’s where the architects should start. If you can’t do continuous integration, that’s where the architects should start. Because that’s what’s preventing you from making progress on the product. Work backwards from release, and then the architects can work on the rest of the product. Until you can release and build reliably, the rest of the product doesn’t matter.

by Johanna at May 15, 2012 03:09 PM

Linux Poison

Lightweight Email reader for the GNOME desktop - Geary

Geary is a lightweight email reader for the GNOME desktop.

Geary includes the following features:
 * Basic support for viewing and composing HTML email
 * Send and receive email
 * Reply to all and forward email
 * Optional spell checker
 * Keyboard shortcuts
 * Organizes emails into conversations
 * Supports Gmail and Yahoo
Continue Reading...

by noreply@blogger.com (Nikesh Jauhari) at May 15, 2012 03:00 PM

Evaggelos Balaskas

The importance of asking public

Who s/he claims that knows everything, must be constantly being asked by everyone else.

If you want to ask me something, do it public.

I have some knowledge of linux stuff, but i dont know everything.
This is a well known fact.

If you ask something in public then there will be something magical.

1.
More people could experience the same problem.
They will immediately comment that they have the exact same problem with you.
You will feel that you are not alone in this world!

2.
Some nerds will try to answer you before you even complete your question. Dont pay any attention to them. But your post will be the top of every search in a few seconds. Dont be bias at them. They have good at their heart.

3.
Some geeks will try to answer you with LMGTFY and wikipedia comments. Dont feel sorry about that. You should have read the manual in the first time, so this is your fault. Read them know.

4.
Some guru will answer to you. Be very carefully. Statistics are against you. From time to time you will cry like a baby by these answers. Guru’s have the ability to amplify all problems and resolve them in a way that even you can understand them.

5.
From the moment you asked something public, there is a trace that you exist! People now know you!!! You are the newbi3_1995 (or something).

6.
If you asked something that someone else have already asked, then you feel this magical connection to him. Internet love is true, embrace it. But seriously you have solved your problem with just a few links to the first question (back in 2005)!.

7.
And the most importance of all, is of course that you will not bother me :P

ps: dont afraid to ask me something.

May 15, 2012 02:28 PM

Google Blog

New research shows smartphone growth is global

Last October, we launched Our Mobile Planet, a resource enabling anyone to visualize the ways smartphones are transforming how people connect with information, each other and the places around them.

Today, we're releasing new 2012 research data, and the findings are clear—smartphone adoption has gone global. Today, Australia, U.K., Sweden, Norway, Saudi Arabia and UAE each have more than 50 percent of their population on smartphones. An additional seven countries—U.S., New Zealand, Denmark, Ireland, Netherlands, Spain and Switzerland—now have greater than 40 percent smartphone penetration. In the U.S., 80 percent of smartphone owners say they don’t leave home without their device—and one in three would even give up their TV before their mobile devices!


We conducted this research to help people to better understand how mobile is changing our world. You can learn about mobile-specific usage trends, use this tool to create custom visualizations of data and more. There's plenty to discover in the latest research—to dig into new survey data about smartphone consumers in 26 countries from around the world, read our post on the Google Mobile Ads blog or visit http://thinkwithgoogle.com/mobileplanet.

by A Googler (noreply@blogger.com) at May 15, 2012 12:20 PM

Follow an email’s journey with Story of Send

If you’re anything like me, you send and receive a lot of emails every day. But have you ever wondered where your message goes after you hit “send?” How does an email travel from your computer to your friend’s smartphone across the country or around the world?

We’re answering those questions with Story of Send, a new site that gives you a behind-the-scenes look into how all that virtual information makes its journey through the real world—from your Internet service provider to our data centers and beyond. Along the way, you’ll discover everything from where we filter for spam and scan for viruses to how we’re minimizing our impact on the environment through energy efficiency and renewable power.



We’ve included videos and photos throughout the journey so you can explore certain areas more deeply. For example, if you’re curious what data center servers look like, we’ve included some photos. Or you can watch a video to learn about how we purchase clean energy from wind farms near our data centers. And because technology doesn’t always have to be serious, you might find a vampire or two lurking around or uncover other surprises on the journey.

In the past, Gmail fans have shown us how emails connect people across the world. Now we’re providing a glimpse into how those emails go from one place to another. So hit send and start the journey today.

by A Googler (noreply@blogger.com) at May 15, 2012 04:00 AM

Think Insights now includes research from 21 countries

Whether you’re a marketer in Milan or a planner in Pretoria, you can now get your hands on more Google research and tools to help you better understand your audience and how consumer behavior is changing. Our Think Insights website has just expanded to cover 21 different countries across Europe, the Middle East and Africa.

Think Insights can help you understand your customers better, develop your digital strategy, find data to support a business case, stay on top of the latest consumer and industry trends and get insights directly from industry thought leaders. Here are just a few examples of what you can do on the updated site:
  • Access our research library of studies and whitepapers from across 21 different countries. You can search for research by country, sector, marketing objective or media type.
  • Use the Insights MENA tool to explore the media habits of consumers in the Middle East and North Africa, or do the same for consumers in Sub-Saharan Africa with our Insights Africa tool.
  • Watch new videos on the consumer journey, with information on behaviors such as “research online, purchase offline” (ROPO).


Visit Think Insights to see how the site can help you, and follow Think with Google on Google+ for ongoing updates.

by A Googler (noreply@blogger.com) at May 15, 2012 01:00 AM

May 14, 2012

Ubuntu Geek

How to disable DNSMASQ in ubuntu 12.04(Precise)


{lang: 'en-GB'}

Dnsmasq is a lightweight server designed to provide DNS (and optionally DHCP and TFTP) services to a small-scale network. It can serve the names of local machines which are not in the global DNS. The DHCP server integrates with the DNS server and allows machines with DHCP-allocated addresses to appear in the DNS with names configured either in each host or in a central configuration file. Dnsmasq supports static and dynamic DHCP leases and BOOTP for network booting of diskless machines.
(...)
Read the rest of How to disable DNSMASQ in ubuntu 12.04(Precise) (352 words)


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

Related posts

by ruchi at May 14, 2012 11:20 PM

Chris Siebenmann

My Firefox 12 extensions and addons

My Firefox 12 extensions and addons

In light of yesterday's entry about my failed Firefox Nightly experiment and the potential that some of my extensions are the root cause of my Firefox problems, I'm going to run down the current set of Firefox extensions that I use in my main browser (updating previous discussions from the Firefox 7 era, which alarmingly was less than a year ago). This time around I'm going to group them by purpose:

Safe browsing:

  • NoScript to disable JavaScript for almost everything. I browse with JS blocked and only enable it selectively on sites when I have to (and almost always temporarily). I consider this more an issue of safety than of performance; I simply don't trust most JavaScript from most sites to not do things that will make me unhappy.

    (NoScript also takes care of blocking Flash, Java, and so on.)

  • CookieSafe 3.0.5, with the actual addon here. I browse through a filtering proxy and it blocks ordinary cookies, but it can't do anything about cookies I get over HTTPS or via JavaScript. I use CookieSafe to block those (there's some more explanation here).

    (For me, CookieSafe 3.1a10 has an explosive interaction with NoScript that hangs Firefox in some sort of infinite JavaScript loop, so I am still on 3.0.5 aka the 2011-12-10 version of CookieSafe.)

User interface:

  • All-in-One Gestures (specifically my tweaked version of it). I turn off A-i-O autoscroll because the native Firefox autoscroll is better (and has been for years). A-i-O hasn't been updated in ages but still seems to be the best, most reliable gesture extension in my brief experimentation.

    (FireGestures is actively developed but the last time I tried it there was an odd bug with changing font size settings; however, that was a while back. It would be my leading alternate here.)

    Update: All-in-One Gestures seems to have been a major cause of my Firefox memory bloat problems. I've now replaced it with FireGestures; see this update. I can no longer recommend it.

  • Status-4-Evar restores the old Firefox bottom status bar so that I can see the full display of link targets and have a useful page load status display.

Fixing annoying websites, especially Google's:

  • GreaseMonkey combined with the Google Link Cleanup user script to remove Google's tracking links from search results. I hate these tracking links with a burning passion for two reasons; first, I have no interest in letting Google know what search results I've followed and second, Google's tracking links screw up my history so that I can't see which search results I've already read and which are new.

  • Stylish combined with a number of mostly personally written styles to fix various website misdesigns. The most important is a version of this user style to disable the left option sidebar in Google searches (because I hate it and I use Google all the time). I also have Compact Google Reader in the Firefox instance I use with Google Reader, for similar reasons.

    (This entry and its comments have a bunch of discussion about ways to fix Google's layout issues.)

    I could probably replace my use of Stylish with more GreaseMonkey user scripts, but I started with Stylish and I prefer fixing things with CSS alterations than with JavaScript (even if the JavaScript just inserts CSS alterations). Certainly there seem to be plenty of 'fix Google stuff' GreaseMonkey user scripts, eg this one for Google Reader (which I have not tried).

Improving my life:

  • It's All Text! handily deals with how browsers make bad editors. The more I have it available the more I use it (and the longer comments and so on I wind up leaving, because I can actually edit them sensibly; this may not be a plus, all things considered).

Modern versions of Firefox also give you a JavaScript based PDF viewer addon for free. I have not done much with this and in fact currently have it turned off.

Of these extensions, I consider NoScript, All-in-One Gestures, GreaseMonkey, and Stylish to be completely essential. I can sort of live without the others, so as an experiment I am trying that to see if it makes a difference in Firefox memory usage and the number of zombie compartments that build up. If I am serious about this, I probably should migrate away from Stylish to GreaseMonkey for everything on the grounds that the latter is probably more actively used and maintained and so any leaks it has are more likely to get fixed promptly.

(Unfortunately I suspect that A-i-O is a likely candidate to be a leaky extension, since it hasn't been updated in ages.)

by cks at May 14, 2012 07:25 PM

TaoSecurity

SEC Guidance Is a Really Big Deal

In November I wrote SEC Guidance Emphasizes Materiality for Cyber Incidents, my thoughts after reading an article by Senator Jay Rockefeller and former DHS Secretary Michael Chertoff. They explained why the CF Disclosure Guidance: Topic No. 2, Cybersecurity issued by the SEC in October is a big deal.

Since then I attended a conference on Director's and Officer's insurance in Connecticut, and spoke on a panel about that SEC guidance. During the conference I learned that the SEC guidance isn't a big deal -- it's a really big deal. We're talking a game changer, potentially on three fronts. Here's what I heard at the conference.

  1. First, lawyers who read the language in the SEC guidance treated it as a "stop whatever you're doing and read this" moment. The lawyers I spoke to said the SEC guidance absolutely defined new reporting duties for companies, despite talk of it being merely a "clarification" or restatement of existing guidance.

    Clients bombarded insurance firms asking what language they should use in their SEC disclosure documents. They asked "what are other companies saying? What should we say?" The firms noted similar boiler plate shared among clients, most of which insufficiently met the SEC's requirements.

    One lawyer I spoke with said she expects the SEC to give publicly traded firms a "one year pass" before bringing enforcement actions against them for insufficiently outlining digital risk, pre- and post-breach.

  2. Second, the SEC language will encourage shareholder lawsuits against companies by disgruntled parties who believe boards are not disclosing risks and actual breach details to investors. This will probably not be the primary cause for a suit but it will likely be one of other factors a shareholder action uses to show that a board is not fulfilling their duties to investors.
  3. Third, the SEC language may prompt whistleblower reports from dissatisfied IT and security staff to organizations like the SEC Office of the Whistleblower. (That is a real organization!) In the seven weeks beginning with this new office's launch in August 2011, parties reported 334 tips from 37 states and 11 countries, with successful enforcement actions in up to 30% of cases.

    Although it doesn't appear that this new office has paid any whisteblowers yet, it is apparently gearing up to do so. Imagine a case where security staff believes that management is not treating a breach as the staff thinks it should be treated, and decides to report the incident to the SEC -- with the possibility of a payout waiting!

Right now Congress doesn't seem to think that the SEC rules are working. Joe Menn reported in Hacked companies still not telling investors the following:

At least a half-dozen major U.S. companies whose computers have been infiltrated by cyber criminals or international spies have not admitted to the incidents despite new guidance from securities regulators urging such disclosures.

Top U.S. cybersecurity officials believe corporate hacking is widespread, and the Securities and Exchange Commission issued a lengthy "guidance" document on October 13 outlining how and when publicly traded companies should report hacking incidents and cybersecurity risk.

But with one full quarter having elapsed since the SEC request, some major companies that are known to have had significant digital security breaches have said nothing about the incidents in their regulatory filings.

Now Senator Rockefeller is taking a closer look as reported by Jennifer Martinez of Politico this week:

Senate Commerce Chairman Jay Rockefeller thinks the SEC needs to ensure hacked companies are adequately informing their investors about when they suffer a security breach or cybersecurity risk that could jeopardize their financial standing.

The West Virginia Democrat wants the full commission to issue guidance for companies — right now they only have staff-level instructions — on when they have to report cyber breaches or threats and what steps they’re taking to minimize the risks.

“It’s crucial that companies are disclosing to investors how cybersecurity risks affect their bottom lines, and what they are doing to address those risks,” Rockefeller said in a statement to POLITICO.

Rockefeller will soon introduce an amendment that calls on the SEC to issue interpretive guidance on when companies must disclose cybersecurity risks and intrusions. Staffers for the Commerce Committee are finalizing the amendment and aim to introduce it before Sen. Joe Lieberman’s (I-Conn.) cybersecurity bill goes to the floor.

This is the sort of activity that I think is going to mark a sea change in digital security over the coming years. I don't expect engineering or technical developments to have anywhere near the same level of impact as issues that involve legislators, lawyers, insurers, and financiers. Stay tuned!

by Richard Bejtlich (noreply@blogger.com) at May 14, 2012 06:19 PM

Rich Bowen

Update: The story so far

The update on S's lunch-bag serial story:

Major Monogram is today's lunch picture. What is Doofenshmirtz up to?!

Doofenschmirtz

And, today's scene from S's story.

562092_10150817117939628_510719627_9351772_132221953_n

And here's the next installment in S's story, although I'm not sure when she'll actually get it.

148945_10150866785919628_510719627_9395716_236516189_n

Hurry!

by rbowen at May 14, 2012 03:49 PM

Linux Poison

Web Application Vulnerability Scanner - Webvulscan

WebVulScan is a web application vulnerability scanner. It is a web application itself written in PHP and can be used to test remote, or local, web applications for security vulnerabilities. As a scan is running, details of the scan are dynamically updated to the user. These details include the status of the scan, the number of URLs found on the web application, the number of vulnerabilities found and details of the vulnerabilities found.

After a scan is complete, a detailed PDF report is emailed to the user. The report includes descriptions of the vulnerabilities found, recommendations and details of where and how each vulnerability was exploited.

The vulnerabilities tested by WebVulScan are:
 * Reflected Cross-Site Scripting
 * Stored Cross-Site Scripting
 * Standard SQL Injection
 * Broken Authentication using SQL Injection
 * Autocomplete Enabled on Password Fields
 * Potentially Insecure Direct Object References
 * Directory Listing Enabled
 * HTTP Banner Disclosure
 * SSL Certificate not Trusted
 * Unvalidated Redirects

Continue Reading...

by noreply@blogger.com (Nikesh Jauhari) at May 14, 2012 03:00 PM

Standalone Sysadmin

Happy Blogiversary Standalone SysAdmin

Today is May 14th! Four years ago today, I wrote my very first entry on the Standalone SysAdmin blog!

In Free advice is worth what you pay for it, I wrote about the genesis of my blogging – it all started with my LiveJournal, and my friends complaining that they didn’t “get” what I was writing…so I moved to blogspot, then to my own VPS.

The blog has really come a long way from this look!

Every once in a while, someone will ask me how to blog. My answer is almost always the same, and it sounds disingenuous, but it isn’t. The answer is to write. Write. Write. Write.

My theory behind blogging is that if you start a blog, you want to eventually be successful and have lots of people read it. If you want lots of people to read it, you want to have stuff for them to read, so you need to write a lot, especially in the beginning. Even if your writing is bad (especially if it’s bad, because then you’re getting practice, too!). Even if you don’t have anything amazing to say.

Just keep writing. Build a body of work, because some day, you’re GOING to write something amazing, and people are going to wonder, “gee, I wonder what else that person has written”, but if you don’t have a body of work, they’re not going to have anything to read, and they’ll leave. So you need to write.

If you look at the early posts on Standalone SysAdmin, there are a few gems among a lot of cruft. But I kept writing anyway. Eventually I wrote better stuff, and more people read it. But it took time to build that body of work, and it took time to build a group of readers.

When I celebrated my first blogiversary, I had a bit over 500 subscribers, and I was highly impressed. Given how my writing was at that time, I’m still impressed ;-)

As it stands right now, I have over 2,700 subscribers (thank you everyone who subscribes!), and in the past six months, I’ve had around 2 million page views (!) according to CloudFlare. That is simply amazing.

I want to thank all of my readers, whether they subscribe or just visit regularly (or even just find me on a Google search). Thanks to everyone who has emailed me over the years offering support, advice, and asking for help. I’m thankful for all of the opportunities you all have given me, and I look forward to blogging for years to come.




OK, enough navel gazing, let’s get down to business.

This past year at LISA’11, I won a drawing for a free pass to the Technical Sessions at LISA’12 this year in San Diego. Now, that’s kind of silly, because as a member of the LISA Blog Team, I get free admission anyway. So what should I do with it? I guess I could put it on Ebay…

Or I could give it away! To one of you!

So here’s how it’s going to go. You have to work for your entry, but only just. Fill out the following survey for a chance to win the pass to the LISA’12 Tech Sessions pass. This doesn’t get you into training, but it does include 3 days of tech sessions, plus the hallway track and BoFs. I don’t know the value because the prices aren’t up yet, but it’s worth a lot of money.

LISA’12 is in San Diego, California from Sunday, December 9th through Friday, December 14th. The Technical Sessions (what this pass gets you into) is from Wednesady, December 12th through Friday, December 14th. It covers the conference pass only. No airfare, no hotel, no food (except that which may be provided by the conference itself). It’s literally a pass to register for the tech sessions.

(note: you do not have to be a member of LOPSA to win the contest)

Loading…

So there you go. Fill it out to throw your hat in the ring. Also, I included a thing for “don’t include me in the contest”, since some of you may not want (or need) to win a free pass.

If you have any questions, please throw them in the comments or email me directly at standalone.sysadmin@gmail.com. Thanks for 4 great years!


by Matt Simmons at May 14, 2012 02:47 PM

The Nubby Admin

“My Neckbeard Grew Three Sizes That Day” or How I Beat a GNU tool with Perl

(Today is another guest post from security expert Scott Pack!)

I spend a lot of time doing text based data processing. A *lot* of time. During an analysis, I often want to do things like look at ‘Top Talkers’, ‘Most Frequent Visitors’, or really anything that comprises a list of unique identifiers sorted by count. As a result, I’ve translated two actions into a series of pipes:

  1. What’s the count of events per thingy: “ | sort | uniq -c | sort -n
  2. Who has been doing whatever: “ | sort -u

This tends to work pretty well in most cases. Today, however, was not one of those cases. While attempting get a list of unique MACs I started out with a source (i.e. non-uniqued) 16GB text file with one MAC per line. This is where things got annoying. Muscle memory kicked in and since this matched Action #2, I ran the following command: cat macs_all.txt | sort -u >; macs_unique.txt

I expected it to take a few minutes, so I went back to the other things I was doing and let it go. I checked back 15 minutes later, and it was still running. Waited 5 minutes…still running. When the command had been running for 45 minutes, I got fed up and decided that I could do better. Perl, being my go to tool, came to the rescue in the form of hashes. I won’t go into gritty detail, but a Perl hash is a data structure that consists of a list of key/value pairs. Whenever you assign a value to a key it will add an entry for the key if it doesn’t exist, or update the value if it does. Since a key cannot be in the same hash multiple times, it makes for a pretty good hack to generate a unique list. This is what I ended up doing:

#!/usr/bin/perl -w
 
use strict;
 
my %unique;
 
while( my $line =  )
{
  next unless $line;
  chomp $line;
  $unique{$line} = '';
}
 
for my $key ( keys %unique )
{
  print "$key\n";
}

This worked significantly better for me. The output was not sorted, but that’s fine, I didn’t need it sorted, only unique. The timing information looked a lot better too.

packs@ node1:~> time cat macs_all.txt | sort -u > macs_unique.txt
 
real    181m12.417s
user    176m13.926s
sys     1m42.335s
packs@ node1:~> time cat macs_all.txt | ./fast_uniq.pl > macs_fast_uniqed.txt
 
real    8m9.074s
user    7m28.176s
sys     0m46.271s

The times can’t really be directly compared, since output from fast_uniq.pl isn’t actually sorted. Given the pretty substantial difference I think we can reasonably accept the fact that fast_uniq.pl is better in this use case. After seeing this, I’m tempted to add some functionality so I stop using both sort and uniq entirely.

I’m interested to hear if anyone else has done something similar or explain to me how much my code sucks.

by ScottPack at May 14, 2012 09:32 AM

SysAdmin1138

Bringing the Head Committee to order

A client has just asked to move a maintenance window to some other time due to a sudden emergency. The in-house Project Managers, being the customer-service oriented people that they are, have just asked if it is possible to move the window to something less likely to get in the way. You are staring at the reply screen to the email.



Scene

A few people clustered around a table. The Herald of Duty has just departed, having delivered the demand that a decision needs to be made. A gavel sounds.

Bleeding Heart: Really? Well then. We'll move it.

Grumpasarus: For ****** sake, we had contractual a maint-en-ance win-dow for a ****** reason! ******, we took a quarter of what we COULD have! Tell 'em to ***** off and lump it. They were warned!

Schemer: Yeah, really. We told them four weeks ago and now it's a problem?

Slacker: Dude, I planned my day around that. Moving the work totally ruins my schedule

Voice of Reason: Well, it's a problem they have now and didn't know about then.

BH: Think about it! They don't know their emergencies four weeks in advance. It's not fair to them to have a problem only to have us unavailable. We owe it to them, it's the humane thing to do.

Grumpasarus: So ****** what? Not OUR problem.

Schemer: You  know.... if we play our cards right we just might get a special gift from the client. Hm.

Grumpasarus: Who ****** cares?? It'll just go to the PM's not us.

VoR: I point out that the PMs have been known to be effusive in their praise when we do favors.

Slacker: But moving the window means I'll lose sleep. It no workie for me.

Schemer: You know, if we push back a little now and then give in, the chances of something special coming our way get higher.

Grumpasarus: Really? Like what?

Schemer: Clients have been known to send us things like large boxes of chocolate, cases of beer, or comps to swank restaurants.

Grumpasarus: Looks thoughtful.

Slacker: DUUUUUDE! Loss. Of. Sleep. Hello!

VoR: You can take a nap later.

Slacker: But I was going to play Skyrim all day, if I nap I won't get as much!

Schemer: Did I mention the Chocolate?

Slacker:
But that's like, work and stuff. No, dude.

VoR: You'll nap less than the sleep you lost, so you'll actually get more Skyrim in.

Slacker: ... good point.

Schemer: Looks to the awaiting Page, We have come to a decision! We will push...

BH: Wait! This is the wrong course of action. You have to work with these people, and pushing back now will make you seem like you're hard to work with.

Schemer: And that means they have to buy me off. I don't see the problem with this.

BH: Then they won't tell you things.

VoR: And when they don't tell you things, you get cut out of decision loops.

Grumpasarus: For ****** sake just tell them to ****** lump it already. Or deliver the ****** chocolate. It's not like this'll get done without us.

Slacker: But that's, like, conflict and stuff. I don't like that.

Grumpasarus: ****** ****** you too? *******! Grow a ****** backbone!

Slacker: Not my job, man.

BH: Going along with this now will make us look reasonable, and willing to work around our customer's needs. Be a team player.

Grumpasarus: ****** team player. We ****** told them ****** four weeks ago that we'd ****** take the ****** system down. They can ****** well bend over and take it. We notified them! This window is in the ****** contract they ****** signed and ****** well didn't read.

VoR: I remind you again. When the notice for this outage went out, they didn't know about this problem. And secondly, the contracted window is much larger than the one we gave.

Schemer: I still say we should push back a little. This is last minute, there should be some costs.

Grumpasarus: ****** right there should be!

BH: Pushing back makes us look hard to work with.

Schemer: I really have to council against blithely rolling over on this one. We don't want to get to a spot where others can dictate our schedule. It'll mean dark-of-night for everything.

Slacker: I hate that!

Schemer: I know. And as we're East Coast and have West Coast clients, it'll mean morning outages not late-night ones.

Slacker: Duuuuude. No.

Schemer: I know. They do need to be made aware that this is not a trivial sacrifice on our part.

Slacker: Sleeeeeep! Skyrim!

BH: They already are aware. Look at the email. See? They know.

Grumpasarus: That's just ****** 'customer service' weasel-words.

Schemer: Hm, I'm not so sure. That sentence could go either way. I'm willing to be persuaded this once and see how it goes.

VoR: Fred has usually played straight with us in the past.

Grumpasarus: You're ***** serious??

VoR: Yes. Always.

Slacker: No. Uh uh. We gotta push a little. Make 'em think twice before asking to totally blow our schedule.

Grumpasarus: Better! Tell them to ****** off!

Schemer: No, we can still make some hay with this. Push a little, not a lot. Just enough.

BH: I really wish we didn't have to push back.

Grumpasarus: We don't ****** have to. We just tell them ****** no. No pushing, just ****** standing our ****** ground.

Slacker: I, uh, don't want to say no outright. It'll get us in trouble later. So kinda no?

Grumpasarus: For ****** sake, grow a ****** backbone you ****** lazy ****** ****** ******. ***** this.  Stomps off in a huff.

BH: Points at the retreating Grumpasarus. That's an abstention!

VoR: I agree.

Slacker: Turns to waiting page, We have a decision....



To: Fred Gerkin
Subject: RE Pushing the maintenance window

Hi Fred,

We warned 'em, but I do understand emergencies. I had plans, but I'm pretty sure I can get them moved. The new window will be 4 to 7am. I'll let you know if I can't flex my plans.

by SysAdmin1138 at May 14, 2012 02:35 AM

Chris Siebenmann

My experiment with Firefox Nightly builds: a failure

My experiment with Firefox Nightly builds: a failure

Ever since my old Firefox build started crashing and I was forced to update to current versions, I've had serious memory issues with Firefox. I used to be able to leave Firefox running for weeks (or months) with basically stable memory usage. Now, Firefox will steadily bloat up from under a GB of resident memory at its initial steady state to, say, 1.5 GB in a few days at most. Although my current machine has 16 GB of RAM, Firefox progressively gets slower and slower as its resident memory grows; by the time it reaches around 1.5 to 1.6 GB resident the performance is visibly dragging and I have to restart.

Recently I stumbled across this Mozilla blog entry on Firefox memory usage, which discusses how current Firefox builds have changes that reduce memory leaks, especially a drastic reduction in zombie compartments (see this entry for more). Ever since I discovered the verbose about:memory information, I've noticed that I have zombie compartments that linger from my ordinary browsing; the longer I browse, the more zombie compartments build up. A Firefox change that actually dropped zombie compartments seemed very promising, certainly promising enough to build a current version of Firefox and see what happened.

(Thus this is not quite an experiment with the literal Nightly builds, although it should be very close; as far as I understand, they're built from the same source repository (see also) that I was using.)

Unfortunately, the experiment turned out to be mostly a failure, although a sort of interesting one; in some ways Firefox improved but in other ways it got significantly worse. I tweeted a cryptic short form version, and I feel like elaborating on it now.

What improved was Firefox's responsiveness as its resident memory grew. Firefox 12 visibly starts slowing down with as little as 1.2 or 1.3 GB of resident memory; the current Firefox code was still running almost as well as at start when it reached 2 GB or more of resident memory, and it might have kept going even as it bloated more. What did not improve was everything else. I still saw zombie compartments (probably just as many as before) and if anything Firefox memory usage grew faster than under Firefox 12, reaching 2 GB resident in a day or two. But the worse thing was that at home, Firefox would soon get into a state where it was constantly using CPU (apparently talking with the X server). In this state it would not shut down gracefully; I could quit Firefox and it would close all its windows, but the process would not exit and would continue consuming the CPU talking with the X server.

(I had to use 'kill -9' to get it to exit, and this happened more than once with builds across several days. It was also odd CPU usage; it showed clearly in top but did not affect the load average and didn't lag the X server that I could tell.)

Unclean shutdowns aren't something that I considered acceptable in this situation so I am now back to Firefox 12, memory bloat slowdown and all.

It's possible that the current Firefox codebase will improve as it marches towards release, eliminating the memory bloat and 100% CPU usage while preserving responsiveness as its memory usage grows. I could live with that and it certainly would be an improvement over the status quo. (In some ways, simply eliminating the CPU usage would be a bit of an improvement over the status quo, although I don't like Firefox consuming several GB of my RAM for no good reason.)

(Despite the result, I don't regret doing this experiment; it was worth trying and it didn't particularly explode in my face.)

Update, May 17th: It seems that most of my Nightly memory problems were probably due to a single old extension I was using. See this update.

Sidebar: dealing with this with Chrome or by disabling extensions

Chrome is not something I consider an acceptable alternative to Firefox, so switching to it is not an option.

One piece of advice the Mozilla people give about this sort of memory bloat is 'disable unnecessary addons'. Well, I don't have any of those; all of the addons I have loaded are ones that I consider either absolutely necessary (to the point where I would not browse without them) or important for how I use Firefox.

(I suppose there's one or two that I don't use very often, like It's All Text!, but it would be actively painful periodically.)

by cks at May 14, 2012 01:38 AM

May 13, 2012

Ubuntu Geek

Geary - Lightweight email reader for the GNOME desktop


{lang: 'en-GB'}

In 2011 Yorba broke ground on a new email application for the GNOME desktop. Codenamed Geary, Yorba plans to bring to the open source community a new lightweight, easy-to-use, feature-rich email client. Our long-term vision for Geary is an email client built for daily use that can be used in place of or alongside Web-based email services. Features we’re planning include:
(...)
Read the rest of Geary - Lightweight email reader for the GNOME desktop (145 words)


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

Related posts

by ruchi at May 13, 2012 11:27 PM

canspice

Twitter Weekly Updates for 2012-05-13

  • Hooray! The sun has returned! #
  • Lunch! (@ Rogue Kitchen & Wetbar) http://t.co/yO6lbpsI #
  • Why can't Eddie Bauer employ more than one person who can run a cash register? Every time I wait ten minutes to pay. Horrible. #
  • Escaped Cow Visits McDonald's Drive-Thru, Ponders Circle Of Life http://t.co/nnVPWCT3 #
  • According to Elizabeth, skunk cabbage smells like corn, ice cream, strawberries, and bananas. #
  • Elizabeth just named the boat in Queen's Park "What Is Your Big Idea". I think she's been reading too many Iain M. Banks novels. #
  • Heartland Institute’s horrible anti-global warming billboards are costing them donors http://t.co/X1Yg38SF #
  • On this day in 1982: Gilles Villeneuve killed at Zolder http://t.co/ki5FUuo4 #
  • Hello. This is a retweet of a tweet. RT @crazybutable Hello. This is a tweet. #
  • Hive and Seek: Domestic Honeybees Keep Disappearing, but Are Their Wild Cousins in Trouble, Too? http://t.co/uheQjgqn #
  • Ferrari and Jacques Villeneuve come together in tribute to Gilles http://t.co/ng60z2Kf #
  • Thanks, bus, for driving right past my stop. I really wanted to get home even later than I already am. #
  • On the day Google updates its iPhone G+ app to make it pretty, I haven't been able to check Facebook because its app is horrible. #
  • NDP sets up roadblocks to budget bill http://t.co/rn5KnWbt #
  • Fish shawarma from @freshlocalwild is delicious! http://t.co/NzQLWJ7y #
  • Me: "He's a killer whale! Do you know what his name is?" Elizabeth: "No." Me: "It's Fin!" E: "Fin! I love Fin!" cc/@VanCanucks #
  • Adobe's fix for Photoshop CS5 security issue? Buy Photoshop CS6. http://t.co/7qeMSC8X #
  • Canada's working moms still earning less, doing more than dads http://t.co/uauI4Uki #
  • Why does anyone take Kevin Krueger seriously? http://t.co/oZ2mvNzx #bcpoli #
  • The Lego Lord of the Rings Videogame Is Really Happening http://t.co/LPpnECre FUCK and YES. #
  • Moose? What moose? http://t.co/cSeys7sY #
  • One of my favourite sounds is the first glass of wine being poured. #
  • Mason bee update: 90% of the cocoons hatched. One bee has returned to my bee house! #
  • Hatched and unhatched mason bee cocoons: http://t.co/Kw95tx1y #
  • Summer means sand between your toes and watermelon juice down your chin. #
  • It astounds me that a video game company has two-factor authentication but my bank doesn't. #

Powered by Twitter Tools


by Brad at May 13, 2012 01:59 PM

witalis

Monitoring HTTP on-the-fly

On my day to day work sometimes I have to discover what request are really pushed to my web servers without digging into access logs. So I found some handy tools.

console ready:

gui ready:

gui but with capturing http traffic from end user perspective:



by admin at May 13, 2012 12:01 PM

Are you Red Hat enterprise ready ?

Easy to find out just try to download one of the free evaluation copy of RHEL.  I’m definitely not ready:

We noticed that your Red Hat Login uses a personal email address. We’re sorry, but users must have an enterprise or business email address to obtain product evaluations.

Proof of the absurd.



by admin at May 13, 2012 11:14 AM

Aaron Johnson

Chris Siebenmann

A basic step in measuring and improving network performance

A basic step in measuring and improving network performance

There is a mistake that I have seen people make over and over again when they attempt to improve, tune, or even check network performance under unusual circumstances. Although what set me off now is this well intentioned article, I've seen the same mistake in people setting off to improve their iSCSI performance, NFS performance, and probably any number of other things that I've forgotten by now.

The mistake is skipping the most important basic step of network performance testing: the first thing you have to do is make sure that your network is working right. Before you can start tuning to improve your particular case or start measuring the effects of different circumstances, you need to know that your base case is not suffering from performance issues of its own. If you skip this step, you are building all future results on a foundation of sand and none of them are terribly meaningful.

(They may be very meaningful for you in that they improve your system's performance right now, but if your baseline performance is not up to what it should be it's quite possible that you could do better by addressing that.)

In the very old days, the correct base performance level you could expect was somewhat uncertain and variable; getting networks to run fast was challenging for various reasons. Fortunately those days have long since passed. Today we have a very simple performance measure, one valid for any hardware and OS from at least the past half decade if not longer:

Any system can saturate a gigabit link with TCP traffic.

As I've written before in passing, if you have two machines with gigabit Ethernet talking directly to each other on a single subnet you should be able to get gigabit wire rates between them (approximately 110 MBytes/sec) with simple testing tools like ttcp. If you cannot get this rate between your two test machines, something is wrong somewhere and you need to fix it before there's any point in going further.

(There are any number of places where the problem could be, but one definitely exists.)

I don't have an answer for what the expected latency should be (as measured either by ping or by some user-level testing tool), beyond that it should be negligible. Our servers range from around 150 microseconds down to 10 microseconds, but there's other traffic going on, multiple switch hops, and so on. Bulk TCP tends to smooth all of that out, which is part of why I like it for this sort of basic tests.

As a side note, a properly functioning local network has basically no packet loss whatsoever. If you see any more than a trace amount, you have a problem (which may be that your network, switches, or switch uplinks are oversaturated).

The one area today where there's real uncertainty in the proper base performance is 10G networking; we have not yet mastered the art of casually saturating 10G networks and may not for a while. If you have 10G networks you are going to have to do your own tuning and measurements of basic network performance before you start with higher level issues, and you may have to deliberately tune for your specific protocol and situation in a way that makes other performance worse.

by cks at May 13, 2012 04:40 AM

May 12, 2012

Chris Siebenmann

The death of paging on the web

The death of paging on the web

I've written about the problem of permanent headers and footers before (around a year ago), but I'm seeing more and more of them these days. What this confirms for me is that paging is dead on the modern web.

By this I don't mean long pages; I'm not one of those people who think that all of your content has to be 'above the fold', immediately visible as what people see (and the available evidence from actual experimentation apparently says otherwise). What I mean is getting to that content by paging, advancing in nearly full page increments (usually by hitting the space bar in your browser). Given that permanent headers or footers (or both) screw this up, and given that permanent headers and footers are increasingly popular, I can only conclude that paging isn't really used any more; otherwise, header and footer based designs would be wretched experiences and test badly (and on the modern web, people do at least do A/B tests).

Instead, I think that on the modern web everyone has scroll wheels (or some other way of scrolling, for example on tablets) and they scroll through articles and pages with them. Only an insignificant number of people still navigate with paging.

Now I'll add a personal confession here: since I started my scroll wheel mouse experiment, I've found myself increasingly scrolling web pages instead of paging them. I don't know why, but there's just something about it that feels right (and this is on pages without obnoxious headers and footers). I think that part of it is that the boundaries of things on the web page often don't align naturally with what I'd get by paging; by partially scrolling the page I can make things line up right (this is especially visible to me if the page content includes images).

(Looking back, I've had middle mouse button based scrolling in my browser for years and have used it too instead of paging. So I should have seen this one coming.)

I don't know what this means for web page design going forward, but I suspect that it means something (I also suspect that current web designers do know what it implies; I am not exactly current on the field). There have to be things you design differently if you expect almost everyone to scroll your page around so that things can catch their eye as they move past.

(I probably won't ever put a permanent header or footer on a page I design (at least not a full-width one), but that's a personal thing. Also it would have to be something awfully important to the page to deserve a permanent full-time presence in front of the viewer. My bias is that almost all headers and footers I've seen aren't that important; in fact, they're often rather presumptuous that way, which is part of the reason I dislike them.)

by cks at May 12, 2012 06:13 AM

Ubuntu Geek

May 11, 2012

go fedora

Summer Hacking

Summer has already started and we (a small group of current and ex-IIITians in Hyderabad) are planning to have some fun digging into Ruby on Rails and related technologies. If you are also interested in utilizing your summer in a productive and fun way, you can join us and share your knowledge while learning from the rest of the members at the same time.

Assuming that all of us know at least one programming language (C/C++/Python), below is the list of things we are planning to learn.

  1. Ruby
    • If you already know a programming language, it’ll not be difficult for you to pick up Ruby.
    • In case you happen to know Python, you’ll feel at home.
    • Spend a good half an hour on Ruby In Twenty Minutes and you’ll know how simple and beautiful Ruby is.
    • Once you are done with Ruby quick-starter, you can try ruby in your browser and have some fun.
    • Please go through Ruby Style Guide to see how to write beautiful and easy to understand Ruby code.
  2. Rails
    • If you have worked with any MVC framework in past, you’ll pickup rails quite easily.
    • If you have worked with Web2py, then go through this Rails vc Web2py presentation which tries to show similarities among both frameworks.
    • RailsGuides is one of best and complete documentation for getting started with Ruby on Rails. It may look like a lot of content to beginners. If that’s the case with you, you can skip the guides in Digging Deeper section.
    • RailsCasts is  like a sea of quality Ruby on Rails screencasts. Watch a few on topics where you may have doubts.
  3. jQuery
    • We’ll be learning jQuery assuming that all of us are already familiar with JavaScript.
    • We’ll learn only basics initially and explore more as we start using it in a Rails project.
  4. CoffeeScript
    • CoffeeScript is a language that compiles to JavaScript but it’s way more beautiful to look at and easier to read and understand.
    • We’ll not write JavaScript code for our Rails app. Instead, we’ll be writing CoffeeScript!
  5. SCSS
    • SCSS is an extension of CSS3. It’s fun to write stylesheets using SCSS as it brings in additional features like variables, nested rules etc.
    • SCSS will ultimately be compiled to CSS.
    • Again, there is not much to do here. Half an hour to familiarize yourself with the syntax and you are ready to roll.
  6. Twitter Bootstrap
    • Bootstrap is a super simple and crazy awesome CSS and JavaScript toolkit developed by twitter.
    • We’ll be using bootstrap to power our Rails apps which we’ll build at a later stage.
    • Nothing much to learn here. It’s more about getting familiar with commonly used classes.
  7. Git and GitHub
    • We’ll be using Git for tracking code while building our apps.
    • We’ll learn about basic Git functions like cloning a repository, committing code, pushing code to a remote repository, working in different branches etc.
    • Go through Git Basics and we can learn more as we start using it full time.
    • We’ll be using GitHub to host all our code. If you don’t have an account already, get one.

We’ll learn these technologies while working regularly at our work places. Once in a while, we’ll meet and share our experiences and knowledge. The plan is to spend one or two weeks to go through basic stuff in all the topics. After that we can start a dummy rails project and learn more as we go.

If you are not in Hyderabad and still want to join, just start exploring and we can connect online! Happy Hacking!!!

Fedora Tutorials and Videocache by Kulbir Saini.


by Kulbir Saini at May 11, 2012 08:03 PM

Linux Poison

Bash Script: Increment the loop by some value on each iteration

Below is the simple bash script which show the way of incrementing the for loop by the value of "2" on each iteration:


#!/bin/bash
for i in {1..10..2}
do
    echo $i
done

=== Output ====
1
3
5
7
9


by noreply@blogger.com (Nikesh Jauhari) at May 11, 2012 07:56 PM

Bash Script: Get the length of any given String

Below is a simple script to get the length of any string.

#!/bin/bash
echo "enter the sting: "
read str;

countStringLength() {
        echo `echo -n $1 | wc -c`

        # Or can use the below trick to get the string length
        # I prefer to use the first one - easy to use and easy to remember
        echo ${#1}
}
countStringLength $str


by noreply@blogger.com (Nikesh Jauhari) at May 11, 2012 06:22 PM

Bash Script: Check if variable is integer or not

Below is a simple bash script to check if any given number is integer or not ...

#!/bin/bash
echo "Enter the value: ";
read num;
checkInteger(){
        if [ $1 -eq $1 2> /dev/null ]; then
                echo "$1 is a integer"
        else
                echo "$1 is not a integer"
        fi
}
checkInteger $num

by noreply@blogger.com (Nikesh Jauhari) at May 11, 2012 06:00 PM


Administered by Joe. Content copyright by their respective authors.