Joey Hess: propellor introspection for DNS

Planet Debian - ven, 11/04/2014 - 07:05

In just released Propellor 0.3.0, I've improved improved Propellor's config file DSL significantly. Now properties can set attributes of a host, that can be looked up by its other properties, using a Reader monad.

This saves needing to repeat yourself:

hosts = [ host "orca.kitenet.net" & stdSourcesList Unstable & Hostname.sane -- uses hostname from above

And it simplifies docker setup, with no longer a need to differentiate between properties that configure docker vs properties of the container:

-- A generic webserver in a Docker container. , Docker.container "webserver" "joeyh/debian-unstable" & Docker.publish "80:80" & Docker.volume "/var/www:/var/www" & Apt.serviceInstalledRunning "apache2"

But the really useful thing is, it allows automating DNS zone file creation, using attributes of hosts that are set and used alongside their other properties:

hosts = [ host "clam.kitenet.net" & ipv4 "" & cname "openid.kitenet.net" & Docker.docked hosts "openid-provider" & cname "ancient.kitenet.net" & Docker.docked hosts "ancient-kitenet" , host "diatom.kitenet.net" & Dns.primary "kitenet.net" hosts ]

Notice that hosts is passed into Dns.primary, inside the definition of hosts! Tying the knot like this is a fun haskell laziness trick. :)

Now I just need to write a little function to look over the hosts and generate a zone file from their hostname, cname, and address attributes:

extractZoneFile :: Domain -> [Host] -> ZoneFile extractZoneFile = gen . map hostAttr where gen = -- TODO

The eventual plan is that the cname property won't be defined as a property of the host, but of the container running inside it. Then I'll be able to cut-n-paste move docker containers between hosts, or duplicate the same container onto several hosts to deal with load, and propellor will provision them, and update the zone file appropriately.

Also, Chris Webber had suggested that Propellor be able to separate values from properties, so that eg, a web wizard could configure the values easily. I think this gets it of the way there. All that's left to do is two easy functions:

overrideAttrsFromJSON :: Host -> JSON -> Host exportJSONAttrs :: Host -> JSON

With these, propellor's configuration could be adjusted at run time using JSON from a file or other source. For example, here's a containerized webserver that publishes a directory from the external host, as configured by JSON that it exports:

demo :: Host demo = Docker.container "webserver" "joeyh/debian-unstable" & Docker.publish "80:80" & dir_to_publish "/home/mywebsite" -- dummy default & Docker.volume (getAttr dir_to_publish ++":/var/www") & Apt.serviceInstalledRunning "apache2" main = do json <- readJSON "my.json" let demo' = overrideAttrsFromJSON demo writeJSON "my.json" (exportJSONAttrs demo') defaultMain [demo']
Catégories: Elsewhere

Andrew Pollock: [life] Day 73: A fourth-generation friendship

Planet Debian - ven, 11/04/2014 - 06:24

Oh man, am I exhausted.

I've known my friend Kim for longer than we remembered. Until Zoe was born, I thought the connection was purely that our grandmothers knew each other. After Zoe was born, and we gave her my birth mother's name as her middle name, Kim's mother sent me a message indicating that she knew my mother. More on that in a moment.

Kim and I must have interacted when we were small, because it predates my memory of her. My earliest memories are of being a pen pal with her when she lived in Kingaroy. She had a stint in South Carolina, and then in my late high school years, she moved relatively close to me, at Albany Creek, and we got to have a small amount of actual physical contact.

Then I moved to Canberra, and she moved to Melbourne, and it was only due to the wonders of Facebook that we reconnected while I was in the US.

Fast forward many years, and we're finally all back in Brisbane again. Kim is married and has a daughter named Sarah who is a couple of years older than Zoe, and could actually pass of as her older sister. She also has as a younger son. Since we've been back in Brisbane, we've had many a play date at each other's homes, and the girls get along famously, to the point where Sarah was talking about her "best friend Zoe" at show and tell at school.

The other thing I learned since reconnecting with Kim in the past year, is that Kim's aunt and my mother were in the same grade at school. Kim actually arranged for me to have a coffee with her aunt when she was visiting from Canberra, and she told me a bunch of stuff about my Mum that I didn't know, so that was really nice.

Kim works from home part time, and I offered to look after Sarah for a day in the school holidays as an alternative to her having to go to PCYC holiday care. Today was that day.

I picked up Zoe from Sarah this morning, as it was roughly in the same direction as Kim's place, and made more sense, and we headed over to Kim's place to pick up Sarah. We arrived only a couple of minutes later than the preferred pick up time, so I was pretty happy with how that worked out.

The plan was to bring Sarah back to our place, and then head over to New Farm Park on the CityCat and have a picnic lunch and a play in the rather fantastic playground in the park over there.

I hadn't made Zoe's lunch prior to leaving the house, so after we got back home again, I let the girls have a play while I made Zoe's lunch. After some play with Marble Run, the girls started doing some craft activity all on their own on the balcony. It was cute watching them try to copy what each other were making. One of them tried gluing two paper cups together by the narrow end. It didn't work terribly well because there wasn't a lot of surface to come into contact with each other.

I helped the girls with their craft activity briefly, and then we left on foot to walk to the CityCat terminal. Along the way, I picked up some lunch for myself at the Hawthorne Garage and added it to the small Esky I was carrying with Zoe's lunchbox in it. It was a beautiful day for a picnic. It was warm and clear. I think Sarah found the walk a bit long, but we made it to the ferry terminal relatively incident free. We got lucky, and a ferry was just arriving, and as it happened, they had to change boats, as they do from time to time at Hawthorne, so we would have had plenty of time regardless, as everyone had to get off one boat and onto a new one.

We had a late morning tea at the New Farm Park ferry terminal after we got off, and then headed over to the playground. I claimed a shady spot with our picnic blanket and the girls did their thing.

I alternated between closely shadowing them around the playground and letting them run off on their own. Fortunately they stuck together, so that made keeping track of them slightly easier.

For whatever reason, Zoe was in a bit of a grumpier mood than normal today, and wasn't taking too kindly to the amount of turn taking that was necessary to have a smoothly oiled operation. Sarah (justifiably) got a bit whiny when she didn't get an equitable amount of time getting the call the shots on what the they did, but aside from that they got along fine.

There was another great climbing tree, which had kids hanging off it all over the place. Both girls wanted to climb it, but needed a little bit of help getting started. Sarah lost her nerve before Zoe did, but even Zoe was a surprisingly trepidatious about it, and after shimmying a short distance along a good (but high) branch, wanted to get down.

The other popular activity was a particularly large rope "spider web" climbing frame, which Sarah was very adept at scaling. It was a tad too big for Zoe to manage though, and she couldn't keep up, which frustrated her quite a bit. I was particularly proud of how many times she returned to it to try again, though.

We had our lunch, a little more play time, and the obligatory ice cream. I'd contemplated catching the CityCat further up-river to Sydney Street to then catching the free CityHopper ferry, but the thought of then trying to get two very tired girls to walk from the Hawthorne ferry terminal back home didn't really appeal to me all that much, so I decided to just head back home.

That ended up being a pretty good call, because as it was, trying to get the two of them back home was like herding cats. Sarah was fine, but Zoe was really dragging the chain and getting particularly grumpy. I had to deploy every positive parenting trick that I currently have in my book to keep Zoe moving, but we got there eventually. Fortunately we didn't have any particularly deadline.

The girls did some more playing at home while I collapsed on the couch for a bit, and then wanted to do some more craft. We made a couple of crowns and hot-glued lots of bling onto them.

We drove back to Kim's place after that, and the girls played some more there. Sarah nearly nodded off on the way home. Zoe was surprisingly chipper. The dynamic changed completely once we were back at Sarah's house. Zoe seemed fine to take Sarah's direction on everything, so I wonder how much of things in the morning were territorial, and Sarah wasn't used to Zoe calling the shots when she was at Zoe's place.

Kim invited us to stay for dinner. I wasn't really feeling like cooking, and the girls were having a good time, so I decided to stay for dinner, and after they had a bath together we headed home. Zoe stayed awake all the way home, and went to bed without any fuss.

It's pretty hot tonight, and I'm trialling Zoe sleeping without white noise, so we'll see how tonight pans out.

Catégories: Elsewhere

Dirk Eddelbuettel: RcppCNPy 0.2.3

Planet Debian - ven, 11/04/2014 - 02:49
R 3.1.0 came out today. Among the (impressive and long as usual) list of changes is the added ability to specify CXX_STD = CXX11 in order to get C++11 (or the best available subset on older compilers). This brings a number of changes and opportunities which are frankly too numerous to be discussed in this short post. But it also permits us, at long last, to use long long integer types.

For RcppCNPy, this means that we can finally cover NumPy integer data (along with the double precision we had from the start) on all platforms. Python encodes these as an int64, and that type was unavailable (at least in 32-bit OSs) until we got long long made available to us by R. So today I made the change to depend on R 3.1.0, and select C++11 which allowed us to free the code from a number if #ifdef tests. This all worked out swimmingly and the new package has already been rebuilt for Windows.

I also updated the vignette, and refreshed its look and feel. Full changes are listed below.

Changes in version 0.2.3 (2014-04-10)
  • src/Makevars now sets CXX_STD = CXX11 which also provides the long long type on all platforms, so integer file support is no longer conditional.

  • Consequently, code conditional on RCPP_HAS_LONG_LONG_TYPES has been simplified and is no longer conditional.

  • The package now depends on R 3.1.0 or later to allow this.

  • The vignette has been updated and refreshed to reflect this.

CRANberries also provides a diffstat report for the latest release. As always, feedback is welcome and the rcpp-devel mailing list off the R-Forge page for Rcpp is the best place to start a discussion.

This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.

Catégories: Elsewhere

Mediacurrent: Meet Alex McCabe

Planet Drupal - jeu, 10/04/2014 - 22:29

1. So Alex, what's your role at Mediacurrent, both internally and client-related?

 My official title is Drupal Developer. I do site building work, custom module development, sometimes handle deployments, and an occasional bit of light theme work. I also participate in client meetings to provide technical insight where necessary.

2. We're so glad to have you!  Give us an idea of what professional path brought you here.

Catégories: Elsewhere

Propeople Blog: Drupal Developer Days 2014

Planet Drupal - jeu, 10/04/2014 - 22:10

I recently had the good fortune of being a part of Drupal Developer Days 2014 in Szeged  - my first Dev Days! It was a really amazing mix of experiences for me, from visiting Hungary for the first time to meeting lots of new people and, of course, lots of Drupal.

Szeged is a beautiful city in Southern Hungary that is no stranger to Drupal (the city hosted DrupalCon Europe 2008), and was a pleasure to visit. If you’re not familiar with Drupal Developer Days, it is an event focused on bringing the Drupal community together to work on the development of the Drupal project. The event presents a great opportunity for some of the leading Drupal experts and developers to work on, and learn about, Drupal 8 in depth before it’s widely released. Dev Days featured code sprints, workshops, sessions, BoFs, after parties and was overall a great time.

Since I’m not a quite Drupal 8 ninja (yet!), I was eager to find opportunities where I could help and learn at the same time. With this in mind, I decided to pick two sprints to add to my schedule: the Drupal.org sprint and the Search API migration sprint.  

Drupal.org Sprint

I knew Drupal user @tvn before the event and had some experience with Drupal.org stuff, so I figured this sprint would heat up to be llots of fun. We started with 89 open issues and 5-6 people in our team. Tasks ranged from “the tiny ones” (https://drupal.org/node/2046683) to “the big problems” (https://drupal.org/node/2130537). But is anything really a problem if you have @tvn, @jthorson, and @jessebeach around? These guys spent a week and closed nearly 50 issues! Yep, some of them are still in review or RBTC, but the majority are resolved. You can find more info here.

Search API Migration Sprint

If you’re familiar with Drupal, you probably know the ApacheSolr and Search API modules and their maintainers: @nick_vh and @drunken_monkey. I was lucky to have a chance to be here with them and merge these two monsters into one single pretty baby! The code is currently inside an external sandbox now (https://drupal.org/sandbox/daeron/2091893) but will be released as a new version of Search API module soon! It was here where I spent most of my days in Szeged, and was in the great company of some talented geeks: @mollux, @aspilicious, @Andrew_l, @Andre-B and others. Before Szeged Dev Days, SearchAPI 8.x was almost clean repo, but now you can already come and try the feature contrib search solution for Drupal 8. We have migrated almost all the code from 7.x version - most of it is already ported to new standards, and some of it has been covered with web and unit tests.

Szeged Drupal Dev Days was awesome, and a great opportunity to learn more about Drupal 8. I would definitely recommend attending any upcoming events like this. Where else can you meet such amazing teams, learn lots of new  stuff about Drupal 8, phpunit, symfony, etc. and feel the spirit of Open Source?

See you there!


Tags: DrupalDrupal Developer DaysDrupal eventsCheck this option to include this post in Planet Drupal aggregator: planetTopics: Community & Events
Catégories: Elsewhere

Chapter Three: Pick on Your Performance Issues

Planet Drupal - jeu, 10/04/2014 - 19:53

Performance should be in the mind of every Drupal developer and site builder as they are building a site. But let's be honest, while getting everything to just plain work and look good speed doesn't always get to hold that #1 spot in your mind.

Freeing up brain energy from potential performance issues is not necessarily a bad thing. Predicting which issues will have the biggest impact once a site launches is a task best left to wizards and sages. The best way to analyze and then tackle a site's performance issues is with data from the live production site. There are plenty of tools to help simulate that data, but nothing replaces good hard production data.

Luckily Views Cache Bully has come to the rescue of distracted developers everywhere. Set it, forget it and rest easy knowing that you now have one less reason for why your site might be crawling.

Why views caching?

Most the views on your site display the exact same information over and over, they just display it to different users. I know, I know you are a prolific blog writer, but do you really publish a new post every 5 minutes?

If you are feeling conservative, set the defaults to a short value and keep bumping them up as you come to realize how little these things change. Even if you only serve the cached results to five users that means five less trips through PHP and the database for those visitors.

Catégories: Elsewhere

AGLOBALWAY: Death to Lorem Ipsum! Content First!

Planet Drupal - jeu, 10/04/2014 - 19:52
Have you ever build a beautifully designed responsive website? You followed mobile first design principles and carefully analyzed the small screen to big screen transition.  It scales magically and works beautifully on IE8 and IE10 at the same time.  All the bugs have been squashed.   Now, it is ready for the client to enter the content.  HOLD on!  What?  Yes, I said it.   You are ready for the client to enter the content.  I suspect you are going to guess what happens next, the beautifully design website with placeholder text buckles.   Lorem Ipsum brings you down.   Of course this never happens to you.     Reality of how the client is actually is going to use the site emerges.   You thought they would give you nice uniform images.  That beautiful pinterest style blog listing now looks like malformed swiss cheese.  Who knew!  The client loves to speak in 100 character bursts that make Twitter look wordy.  Your article listing looks sparse.  Although it may be tempting to blame the client for their writing style or lacking the appropriate reverence for your beautiful design, but that would be a big mistake.  It is time to start thinking about designing websites around content first.     As developers, recognize that the longer it takes to get real content into the system the more risk you are taking on.  As clients, bringing your content to the developer at the start of the project you will more likely have a website that works well for you.  Not only it is important to have a sense of the content, knowing what the bare bones minimum and high priority content can help you small screen design.   When you are doing a content review think of the following:  
  • What business message are you trying to convey?
  • What languages are you using?
  • Are there any regulations that you have to abide by?
  • How quickly can the content be created?
  • Who is creating the content?
  These questions can help you determine your minimal viable content (MVC).  The faster you can create your MVC and get into your developments hands the more successful your responsive multi-platform website will be.  Don’t let lorem ipsum bring you down.   Tags: responsivemobile firstcontent firstwebmutli-platformdrupal planet
Catégories: Elsewhere

Steve Kemp: A small assortment of content

Planet Debian - jeu, 10/04/2014 - 17:34

Today I took down my KVM-host machine, rebooting it and restarting all of my guests. It has been a while since I'd done so and I was a little nerveous, as it turned out this nerveousness was prophetic.

I'd forgotten to hardwire the use of proxy_arp so my guests were all broken when the systems came back online.

If you're curious this is what my incoming graph of email SPAM looks like:

I think it is obvious where the downtime occurred, right?

In other news I'm awaiting news from the system administration job I applied for here in Edinburgh, if that doesn't work out I'll need to hunt for another position..

Finally I've started hacking on my console based mail-client some more. It is a modal client which means you're always in one of three states/modes:

  • maildir - Viewing a list of maildir folders.
  • index - Viewing a list of messages.
  • message - Viewing a single message.

As a result of a lot of hacking there is now a fourth mode/state "text-mode". Which allows you to view arbitrary text, for example scrolling up and down a file on-disk, to read the manual, or viewing messages in interesting ways.

Support is still basic at the moment, but both of these work:

-- -- Show a single file -- show_file_contents( "/etc/passwd" ) global_mode( "text" )


function x() txt = { "${colour:red}Steve", "${colour:blue}Kemp", "${bold}Has", "${underline}Definitely", "Made this work" } show_text( txt ) global_mode( "text") end x()

There will be a new release within the week, I guess, I just need to wire up a few more primitives, write more of a manual, and close some more bugs.

Happy Thursday, or as we say in this house, Hyvää torstai!

Catégories: Elsewhere

Joey Hess: Kite: a server's tale

Planet Debian - jeu, 10/04/2014 - 17:17

My server, Kite, is finishing its 20th year online.

It started as kite.resnet.cornell.edu, a 486 under the desk in my dorm room. Early on, it bounced around the DNS -- kite.ithaca.ny.us, kite.ml.org, kite.preferred.com -- before landing on kite.kitenet.net. The hardware has changed too, from a succession of desktop machines, it eventually turned into a 2u rack-mount server in the CCCP co-op. And then it went virtual, and international, spending a brief time in Amsterdam, before relocating to England and the kvm-hosting co-op.

Through all this change, and no few reinstalls from scratch, it's had a single distinct personality. This is a multi-user unix system, of the old school, carefully (and not-so-carefully) configured and administered to perform a grab-bag of functions. Whatever the users need.

I read the olduse.net hacknews newsgroup, and I see, in their descriptions of their server in 1984, the prototype of Kite and all its ilk.

It's consistently had a small group of users, a small subset of my family and friends. Not quite big enough to really turn into a community, and we wall and talk less than we once did.

Exhibit: Kite as it appeared in the 90's

[Intentionally partially broken, being able to read the cgi source code is half the fun.]

Kite was an early server on the WWW, and garnered mention in books and print articles. Not because it did anything important, but because there were few enough interesting web sites that it slightly stood out.

Many times over these 20 years I've wondered what will be the end of Kite's story. It seemed like I would either keep running it indefinitely, or perhaps lose interest. (Or funding -- it's eaten a lot of cash over the years, especially before the current days of $5/month VPS hosting.) But I failed to anticipate what seems to really be happening to it. Just as I didn't fathom, when kite was perched under my desk, that it would one day be some virtual abstract machine in a unknown computer in anther country.

Now it seems that what will happen to Kite is that most of the important parts of it will split off into a constellation of specialized servers. The website, including the user sites, has mostly moved to branchable.com. The DNS server, git server and other crucial stuff is moving to various VPS instances and containers. (The exhibit above is just one more automatically deployed, soulless container..) A large part of Kite has always been about me playing with bleeding-edge stuff and installing random new toys; that has moved to a throwaway personal server at cloudatcost.com which might be gone tomorrow (or might keep running for free for years).

What it seems will be left is a shell box, with IMAP access to a mail server, and a web server for legacy /~user/ sites, and a few tools that my users need (including that pine program some of them are still stuck on.)

Will it be worth calling that Kite?

[ Kite users: This transition needs to be done by December when the current host is scheduled to be retired. ]

Catégories: Elsewhere

Acquia: DrupalCon Training with the Acquia team! UX and Security

Planet Drupal - jeu, 10/04/2014 - 16:02

The Acquia team is getting ready for DrupalCon Austin. We're excited about the official announcement of training at DrupalCon which is held on the Monday before the conference on Monday, June 2. We have two courses on offer which we think you'll love. One will get you started evaluating your designs with users, and how to conduct usability testing. One will help ensure your site or application is secure which is increasingly important for sites of all sizes.

Catégories: Elsewhere

Craig Small: WordPress update needed for stable too

Planet Debian - jeu, 10/04/2014 - 15:10

Yesterday I mentioned that wordpress had an important security update to 3.8.2  The particular security bugs also impact the stable Debian version of wordpress, so those patches have been backported.  I’ve uploaded the changes to the security team so hopefully there will new package soon.

The version you are looking for will be 3.6.1+dfsg-1~deb7u2 and will be on the Debian security mirrors.

Catégories: Elsewhere


Subscribe to jfhovinne agrégateur - Elsewhere