Okay, so today I'm going to go over data citation, DOIs, and the ANS services that support data citation. I'm also going to come across the questions that ANS is most often asked about this area, but I'm taking a fairly high level approach, so I'm going to assume that I don't need to convince you of the benefits or the needs for data citation. I'm going to also assume that you know what a DOI is and that you are, or perhaps in the future, access the ANS machine to machine services, particularly for data citation. Now, if those assumptions aren't true, please figuratively put your hand up and pop something in the question box. Conversely, if what I'm saying, and I am going over some older material as well, so if what I'm saying is painfully obvious to you, please also put your hand up and we can fast forward a bit. Okay, so let's sort of take the 30,000 foot view of the data citation landscape. Data site is an international nonprofit consortium for data citation that has come out with the goal of effectively trying to do for data what Crossref has done for publications for some time. It's built on a very widely deployed and familiar DOI infrastructure, again a sort of nonprofit international infrastructure usable in a whole bunch of ways. Currently ANS is the only Australian registration agent for data site, which means we can create DOIs, but this is not exclusive in any way. Anyone else could rock up to data site, pay the membership fee and start meeting DOIs also. Now ANS provides a service, and you're probably going to hear this term quite a bit today, cite my data, and I'm going to focus in on that service quite a bit very soon. The other thing we need to start talking about is citation metrics, and I'm particularly going to focus on those three areas of the journal companies, Crossside and some of these domain portals. So this is an area that's in rapid flux and is far from settled, so we're sort of taking a snapshot there, and the best I can do there is show you what current practice is. So the site, my data server, so let's suppose you're ready to, and you're convinced of the benefits of data citation, and you're ready to work with ANS to attach a DOI to your data and enter the brave new world of data citation. That reference I've got on there is a good place to start. I can go into more detail over these six steps that I've got here later in the webinar. For now, I'm going to stick at a fairly high level, so you get the big picture. So step one, step two, and step three there are effectively administrative steps. You know, with some back and forth with usage agreements, and you're providing us with some technical details so we can give you access to the service. Step four is effectively your data citation P-plates. I know many people will have functional and unit tests on their research data software that they will want to run, and you don't want to do that with production DOIs or production services. So we do run a test prefix service. Once you've gone through that and you're successfully through your P-plates and haven't been booked, it's on to step five, which is another final administrative agreement.  Now, this is an extremely high level and abstracted away most of the details view of what's going on. So, and in this case, even though we provide the site My Data Service is effectively a front end or a proxy for the international data site infrastructure in the blue box there. And we're also doing it in such a way that future interactions you have with research data or study take your DOIs into account. It's a simple request and response type machine to machine service only at the moment. And once you've got that, then you're expected to maintain that link to that DOI so you can use it in future harvest. Now, this is, as I say, this is very high level and I'm skipping over a lot of the Mali and sort of error conditioned type details. But I love to talk about that stuff. So if anybody wants to get in touch or focus, you know, on a more technical side, I'm happy to do that directly with you or after this webinar. So one of the things I'm often asked is, is this workflow set in stone? Or could you go about this in another way? And the short answer is yes. If you let us know your feedback or your requirements, then we will certainly look at other ways of providing access to data citation services. And a good example might be people who already have significant data collections in RDA might want to retroactively mint DOIs, provided the data, the metadata is, you know, meets the minimum standard, which I'll talk about later. And we're also looking into, we've had requests for a sort of per institution home page where you can look at your data citation status and how many DOIs you've minted and how complete your meetings across RDA. So the sky's really the limit there and it really ends as always, as always is driven by the needs of the data owners there. So please let us know if you have ideas or suggestions. Okay, there's something slightly different about the end site, my data service compared to the other services. So the other services, you know, including harvest into RDA and RIFCS, that you're maybe used to using or considering using. It's usually a relationship at least initially directly between ends and yourselves, which we then provide your metadata to the world. But initially it's a sort of one to one relationship. We have never imposed extremely strict metadata requirements on those harvests and, you know, different organisations have different levels of metadata, you know, that suits their workflows. And our services, we're funded essentially to target the Australian research and government data sectors. The site-mode data service is slightly different because we're effectively a front-end to an international DOI and data site infrastructure. The DOIs you mint and the transactions you do with our services appear very quickly in that international infrastructure. And once they appear, we can't arbitrarily take them back without a formal change or redaction process. So it instantly involves the rest of the world. This and data site, so we have no choice but to impose the minimum quality and data standards that data site impose. And that includes a compulsory set of metadata. That's not particularly onerous from memory. It's five metadata fields that looks a lot like a subset of Dublin Corp. There are optional metadata standard, optional metadata fields as well, which we encourage but don't enforce organisations to complete. OK, I guess the next most common thing I'm asked about ANS services is this is all very good, but what happens when you go away? And the short answer for the DOIs you've minted and their metadata, nothing will happen. So we've taken the approach that when you approach us to mint DOIs, we register your URL, your name directly with data site. And because the international DOI infrastructure is persistent anyway, ANS could disappear tomorrow and your status, discoverability and availability of your DOIs and citations will be as they are today. If you want to mint more DOIs and ANS is no longer doing this, you will need to find another registration agent, but I'm confident either another Australian or an international one would come along in time. So I can also say, and I notice one of the ANS directors, Andrew Trelawres with us today, I'm sure he'll jump in to reassure you if I'm incorrect, but I believe the federal government has guaranteed to keep the ANS services running, not saying where or how, but there is that guarantee. But in particular with DOIs, you're going straight into an international infrastructure and that will persist. OK, the next big thing, so time and now money. In the past, it has cost a small amount to mint DOIs. The International DOI Federation has abandoned that model. They have a membership model now. ANS is funded to provide infrastructure to the research and government data sector in this country, and therefore we provide this service for free. The block of DOI address space that we get from data site with our own prefix is effectively infinite, so they're not going to run out anytime soon. I would say that if you feel you need three million of these things in a hurry, you should probably contact us so that we can come up with a better bulk workflow. But for you, cost is not an issue. OK, so this is a machine to machine service and anything that involves programmers and programming can incredibly actually go wrong. So a couple of ways of if things do go wrong, particularly when you're on your P plates, please let services at ANS know, and everything that goes to that email address is given a ticket and is formally tracked. If you want to talk to one of your friendly neighborhood ANS client liaison officers, and I noticed Andy White was with us today, if you have sort of broader need to discuss how this work or how you think it could work better, please contact me directly or again services at ANS and that will make sure it gets to the right person. If you have questions that are, you know, more of a design or usage or high level thing or you would benefit from an ANS person sitting down with you and looking at your workflows and your data issues, again, please talk to a CLO. Karen, this group here has a wide range of options for helping you or contact me, particularly on the more technical or workflow side of things. And we're all always happy to hear how people are using the ANS services or the like to use them. On the face of it, this is a very simple question and we live in a complex world unfortunately and the answer to a lot of these questions is it depends. So one of the things we're often asked is, at what granularity should I cite my data? And I normally do that annoying thing of turning around and answering a question with a question and say, well, what level of data would your data users expect to see it at? Would they, if it's a biological data set, would they expect to see one sequence or one gene? If it's an astronomy thing, would they expect to see a whole chunk of the sky or one light curve? If it's a social science thing, would they expect to see a whole survey with a million respondents or just one postcode? There are no sort of universal best practices I can point to on this and it does vary wildly from discipline to discipline. Having said that, if you have a naturally hierarchical data set, you can consider having DOIs that cite at multiple levels of that data set. So some people may be interested in the data set as a whole and want to cite that as a whole. Some people might want to zoom right in and be interested in very low level elements to that data set. So again, if you know you have those two kinds of data users, I would consider multiple citations to different parts of the data set. The optional, the data site optional metadata is quite rich and allows you to build up what's in effect for the data equivalent of the social graph where you can build linkages between within a data set and to other data sets and allow people to use the DOI resolution infrastructure to navigate that graph. Which I know sounds quite abstract, but I can expand on that if once I know more about people's particular data issues. Now, this is the big one. And it's such a deceptively simple question and I think I've spoken to a number of BAs and data archivists who have struggled very long and hard with this issue. What do I do when my data changes? And the reasons for changing are as numerous as there are data sets and researchers, I think. And again, I can't give you a universal answer that will fit all situations. So here's three approaches that may or may not be suitable in your domain. You could consider taking time-based snapshots. So for example, you were doing economic statistics, where the date of the data set is significant, then you might have DOIs snapped in time. If you have an instrument that's taking a photograph of Mount Everest every five minutes, then time is a factor and you might want a different DOI every five minutes. The other thing you can do is instead of going through time with the whole data set, you could do what software people call a delta where you issue a DOI to only the changed elements of a data set. So if it's a gigantic data set and you've only changed 1% of it, you might issue the 1% as a delta and give that a DOI with these instructions that people need to apply that to the giant data set. This optional metadata I referred to is also good for building up not just hierarchical structures, but structures in time. So a data set can refer to itself or related versions of itself going back in time. And again, people can sort of walk that graph. If you let us know specifically what your issues are, what chances are we can probably point you to someone who's had a similar issue, or we might be able to suggest a good way to use the service. Now, we've had maybe 300 or 400 years of learning how to do journal and publication citations and it's very, although even that's changing, but it is very well understood and it's become sort of socialized in the research sector. We've only had a few years of doing this with data citations. So to say it's early days is probably the understatement of the decade. However, there are some emerging developments that are worth looking at and I'm going to quickly talk about four of those. The first one are these domain-specific data portals. And there's two examples there, Pangea, the Earth and Environmental Sciences one and Dryad, the Applied Biosciences one. So these portals are domain-specific, usually non-profit international and each of them hopes to become the first point of call for data in a particular domain or but the subject area. And if they're built around DOIs and citation from the outset, that can make your life a bit easier and particularly if it's truly open and they're providing you with citation metrics that might be a way if there happens to be one in your subject area. These portals, and we're going to see this come up again, are completely blurring what a publication means and I'll return to that later in a moment. So we're starting to see new online only journals who are even further blurring what a publication means. Some of them will require that you or require and insist that you deposit data and software with a publication and all those elements are up for peer review, including re-running results to see how you've got them. Gigascience is a new one, and actor Chris E is a very specific one in crystallography, but Gigascience is an interesting one. They're also assuming that this is for people with very large data sets in the biosciences but completely blurring what it means to publish something. Very exciting stuff. How are the people doing it? Oh, actually, excuse me for one moment. I might just quickly also focus on the journal companies. I don't want to say too much about this, Karen has a lot of material and has run other webinars on this, the journal companies are waking up to this as a business opportunity because they're already doing it for publications. And there is a collaboration between data site and crossref called crosssite where the journal companies are going to try and track both data and publication citations. So there may be other initiatives out there I'm not aware of and please let us know if you know of any, but that's probably a good start for how to get going in this world of data citation. Here's three upcoming webinars that Karen's group here will be running. Heather, there is probably one of the top people in the world on impact of data sharing and everything she writes on her blog is worth reading. In fact, everyone there, we've been very, we've been, well, Karen has been very student picking very good people for this so from all over the world. So as my lecturers used to say to me, I commend those to you. Okay, so I've zoomed through that. Here's a few references for what we've just been talking about including that last one is for any developers who want to access the data site metadata service directly there's a scheme of it. Now, I'm happy to take questions. I can also go into more detail about the six steps of accessing the service if that's helpful. Otherwise, we'll throw it open to questions, I think.


and I'll be talking about LDAP today. And it meant that I gave it a slightly inflammatory subtitle, but I have honest intentions. So to give you a brief overview, I'm going to give a brief introduction to the NoSQL idea and why I think LDAP fits it. And I'll give another introduction to LDAP for those who maybe haven't used any anger before. And I'll show a bit of each of the four ways to access LDAP from Ruby and show off one we're using called TRIQL, how we're using it at day job. So why LDAP? Well, maybe I need to back up a little bit. Maybe I should first ask, why NoSQL? Well, what is NoSQL apart from not using MySQL or Postgres or whatever? The definition of the term MySQL or NoSQL is still the subject of some debate, but I'm using the definition from NoSQL database which has a fairly comprehensive list of the NoSQL technologies by category. And there are apparently some of the features. Some features are pretty much in debate right now, but these seem to be the four that everyone can mostly agree on. I'm not really sure what the last one has to do with NoSQL, but it's a good thing, so I'm going to end the list. Some of the other features they list are, they claim a little bit more controversial, but I find them pretty interesting too. So I think those features are pretty generic, and the NoSQL technologies that they list on their site cover a wide gamut of uses and problem domains, but I think that LDAP fits what they call a wide column store. It's useful for storing structured data that doesn't perform to tables and relational algebra easily. And I think LDAP fits that because the other ones that they list, like HBase, Cassandra, HyperTable, all have this concept of common families and they store, or some of them store data in hierarchy, which LDAP does as well. So I'll give a brief introduction to LDAP, and I'll try to keep it brief for those of you who may have used it. First a bit of history. LDAP originated in the telecommunications industry, which is probably why it's still considered by a lot of people as a glorified phone directory or address book. It was started out in 1998, the International Telecommunication Union, named the COD United Nations, approved a networking standard called X500. It included a protocol called DAP for Directory Access Protocol, for accessing directory services which sat on top of the OSI protocol stack. LDAP was invented as an alternative that used TCP IP instead of OSI. OSI was incredibly difficult to implement. It wasn't around then, but so I've heard. LDAP is a pretty simple protocol, has 11 operations. The operations are generally independent of one another. They're processed as atomic actions and each leads the directory in a consistent state. Most operations don't need to wait for a response, so it plays really nicely if you wanna use it asynchronously and responses can arrive in any order. So when you're writing a client, you have to be aware of that. The directory is structured as a set of entities that are organized into a hierarchy. Superior subordinate relationships between entries are used to express a relationship between them. In the RFC, an entry is described as information about an object which is identifiable or can be named. It's composed of a set of attributes about the subject and is identified by a distinguished name or a DN. The distinguished name is made up of one or more relative distinguished names or Ardians that describes the path from the entry back up to the root of the hierarchy. Each Ardian is unique amongst its siblings as it must be distinguishable from them. This means that an entry's parent can be found by removing the first Ardian of its DN. So I said before the entries are made up of one or more attributes and this is a turn down dump of my user record in LDAP at my day job that I'll use as an example. So an attribute is an attribute description which consists of a type and optional options and one or more associated values. They're basically key value pairs with a few additions. The keys aren't free form values that are defined in the directory schema that are referred to as the attribute description and determine the type of values it can hold, what valuations apply to it and how it can be searched for and not dissimilar to a column in SQL table. Values are one or more binary chunks of data that conform to the type dictated by the description. I mean, you hear for obvious reasons but you can, for example, store an employee photo of voicemail and reading or other binary data in the same entry. Which attributes can be contained by an entry is dictated by its object classes. An entry's object classes are itself, are themselves attributes and the only mandatory one for every entry. It's required by the top object class which is the abstract based object class of all entries. Object classes like attribute types are defined in the directory schema similar to Big Table or Cassandra's column families. The entry's object classes govern the attributes that are required and allowed to be contained in an entry as well as where it can live and a few other things. The RFC describes it as an identified family of objects or conceivable objects that share certain characteristics. There are three kinds of them. They're abstract, which are pretty much the same thing as abstract classes in OOO. They can be added only through the inheritance. Structure object classes are somewhat the same as concrete classes. There can be only one per entry and auxiliary object classes are mixed in as a build up and be added to any entry. Here's my user record from before but sorted into what the object class the attributes belong to. An attribute can and often does belong to more than one object class.  If you wanna geek out about LDAP afterwards, let me know. Still learning but I've been using it for about four years and I still find it pretty exciting. Now, how can you access LDAP from Ruby?  I'll cover two low level libraries and then two high level libraries that use one or both of the low level ones to provide a more convenient abstraction. First up is Ruby LDAP. It's a C extension, spent around since about 2000 and it's based on the API described in RFC 1823 which basically describes how, if you're writing an application that uses LDAP, how do you know the things you might wanna do and how to do them in a consistent way. It's the most complete LDAP library I know of but it's missing support for some of the lesser used operations but in daily use you'll probably never run across that. So here's what accessing my user record looks like. It connects using TLS, sets a few search parameters and then executes the search and prints out the results. The base that it's setting there is the DN of the highest part of the hierarchy you wanna search from. And the scope says how far down the hierarchy you go. In this case, as it says, LDAP scope subtree, we're gonna search the whole subtree. And then that filter is how you form a query in LDAP which looks a lot like what it has. Prefix notation and everything's in parentheses. Another alternative is net LDAP and it's been around since 2003 and it's excellent for most purposes but it's missing a few things that Ruby LDAP provides but again in normal everyday use probably won't even notice it. Another advantage that it has is it's more portable than Ruby LDAP because it's pure Ruby instead of being a C extension. But here's what using it looks like. It's basically the same thing but using a hash for searching instead of positional parameters which would be nice, I think. And it provides an abstraction for building filters out of just key value types like that so you don't have to form the list-pitched-looking filters yourself. So that's the two low-level libraries and now onto the high-level abstractions. First one is Active LDAP and Active LDAP's authors describe it as an object-oriented interface to LDAP and it uses some of the active record idioms to present a similar interface to your LDAP data. Especially good when your domain classes are mixed between an RTBMS and LDAP but it is a bit more complex, a bit more difficult to use for the more complex LDAP directories. If you're already using Active Record and your directory is fairly small and continuous, Active LDAP is easier to get started with. I used it for about three years along with Active Record at my day job. It ran into trouble when I tried the access data that was scattered across the directory or sibling entries of different object classes. I was two years ago though so I'd still recommend giving it a try if you like Active Record. Here's what it looks like doing the same task as before but it defines an account class to pull the records out instead of using a raw search. It uses that LDAP mapping attribute or declarative I guess to set up the prefix that all the classes will start their search ahead and the DN attribute is the attribute that it will use when you do a find by ID. It of course provides accessor for attributes just like Active Record, as you can see there. It's fetching the CN and the entry just like before. Tree pool is another high level of LDAP abstraction which by myself and a few of my coworkers wanted to make basic LDAP interaction easy without compromising its natural flexibility. It's based on similar ideas from SQL which we use to replace Active Record in our web applications. Since Active LDAP depends on Active Record and we're running into limitations with it anyway we decided to implement something similar for LDAP. So this is using Tree Pool to do the same task as the previous examples fetching my user record using only the basic interface. So it connects to an LDAP server by URL or hash arguments but it also knows how to read the system LDAP config and use that if you want to do that. So the way Tree Pool works is it maps method calls to RDNs so this OU method is returning what we call a branch set that's based at OU people. The branch set is a concept borrowed from SQL's data sets. It's a search and suspension that you can execute or further modify at will. So we add a filter to the branch set that looks for entries with UID set and Granger. And then fetch and extract the CN attribute from each result. And Tree Pool also comes with an optional or unlike layer that's based on the idea of using mixins to enhance entry objects based on their object class. And it's loosely based on SQL model. So this is the same task but with a mixin defined for entries that have the like account and person object classes and that live under the OU people entry. Now any entry that you fetch from LDAP that matches its criteria by the configured model class will be extended with this mixing. So you don't even have to know that the ACME account mixin is around. Just will be automatically added to anything that you fetch from LDAP that has the necessary criteria. The mixin also sets up a search method that is based on its object classes and base. And then you can append further filters on it just as you would with the raw branch set like SQL does with SQL model. Then executes the search but extends each result with the mixin before it's returned or yielded. Which adds any methods or functionality specific to matching entries. Now having any additional methods in that module but you can imagine that you might want to add like if you have a JPEG photo you might want to return that image magic object or something and do things with it. You can add that to based on the attributes that the object classes in that mixin had. So the base or in class SQL model supplies the generic attribute accessors and the like. So now we'll go over a little bit of how we use LDAP out in the day job. I work for Leica, which is a stop motion and computer animation company in Portland, Oregon. And we make feature films like Coraline. And we also make TV ads for a bunch of different people. So my day job is uniquely challenging I think or at least it's unique in my experience. Because animators are a bit like programmers. They go wherever there's cool stuff to work on. It's not uncommon for us to bring on 400 or more people during the ramp up for a feature film and then have them leave after the film is over for another couple of years and then come back if there's something new or working on that they're interested in. They have some specialty that they need. Also animation and photography technology is continually progressing. They're always coming out with new, new hardware, HD video, 3D cameras, all kinds of new stuff that's coming out. So we need to stay competitive and give our artists systems that will run the latest and greatest animation tools. So we're constantly upgrading and moving people's machines around. We also replace network storage and the render farm up every five years or so which requires lots of reconfiguration, updating of both workstations and servers. Despite those challenges, our IT department is pretty small. We have eight IT people, including the director, with four users to support people and four infrastructure people. Responsible for about 2,500 individual hosts in four physical locations, running four different OSs anywhere from 200 to 600 users at any given time, all of whom fluctuate rapidly over the years. So we'd pretty much be dead without automation of some sort. And key to that is to unify the place to store all the organic data you need to track about people in the computer systems that they use. So here's a brief idea of how all that is set up. We're running two free BSD servers with open LDOT per physical location with one primary and one for failover. We have a single master that's in downtown Portland and all the other servers are replicating from it. We have Ruby installed on nearly every machine and a suite of tools written in Ruby that's installable by a private gem server. Just a screenshot from the list of gems that we have currently. Of course, the first place to start when you're using LDAP is the company directory. Provides a unified logon and workstations, servers, and web applications. It gives you posits groups, net groups for trading groups of hosts as a single unit, and all the other NIS-ish stuff. It also drives our web-based company directory, which is currently a mod-pro-mesin component, but it's slated for replacement with a newer Ruby-based application real soon now. We use a command line tool written in Ruby to manage all user data. This is the bit we used to find an unused phone extension for new users. The relevant LDAP bits are here. This is using Treehole again. It looks for entries that are either user accounts or resource accounts like conference rooms. So with that, first filter clause is given. Then it eliminates ones that don't have a phone. So the second filter clause says that the phone extension attribute must be present. And then it eliminates ones that aren't in the requested location. So we have the L attribute on each of the phone has the physical location of the phone, just currently just the four physical locations that we're in. And then it selects just the phone extension attribute from all of the results. And then turns them all into an array, flattens and compacts them. Each location has one or more extension ranges, which are defined as Ruby ranges and are currently hard-coded, but we'll eventually fetch those from the LAP too. So that's what the top is doing is it's looking up that range object for whatever physical location you're in. And then it collects over the ranges down below and turns all of the extensions that are in that range into four-digit extension numbers. And then uses ArrayMath to find the available ones by subtracting the used ones that they found in LAP from the valid ones that get extracted from the range. So speaking of phones, we run an asterisk voice over our P system with one box per physical location, all truncated together with ekes. And all the phones live as physical asset records in LAP and assigning a phone to a person automatically associates their phone number with that phone. The dial plan and several other asterisks config files are generated from LAP. And we started this before I'd heard of adhesion, but adhesion is definitely on our list of things to check out in the future. But in the meantime, this is a greatly stripped down version of the bit that generates the extensions config. The LDAP bits are here, fetches an array of all the phones that are in the locations being requested to have an owner. And the reason it checked for an owner is when someone leaves, we just remove the owner association from the phone record which automatically disables their extension. And that way, if they come back, we just re-associate them with any other phone. And if their extension hasn't already been reclaimed, they'll have the same exact extension was willing everything that they've never left. So this, then it builds a house or phone entries by their owner's extension, dropping anyone that doesn't have an extension. And the phone owner attribute here is a DN. And TREQUEL is actually smart about DNs that'll actually do a second lookup if it notices that you're fetching something that's at the end and give you another TREQUEL object back. And this obviously is doing one LDAP query per phone record which could probably be optimized a bit better but it works as is. Then the extensions are pending to the config that's returned and written out to the asterisk config directory and then tell asterisk to reload everything. This happens currently by a cron but we're working on a way to using synchronized replication in LDAP to react to people making related changes in LDAP to automatically rebuild asterisk on demand. So another thing we saw in LDAP is all the computer information. Store all of our hosts in LDAP which in turn is used to generate DNS and DHCP. And it does that on a location basis. So they're running an individual DNS and DHCP server for every physical location. And the DHCP information includes netboot information so we can actually provision and set up a machine just by dropping down to the network, tuning Symbits in LDAP and netbooting it and auto-image to whatever role we tell it it should be. We have a command line tool for doing this as well. We're also midway through converting our physical asset inventory system from one backed by a Postgres database into one backed by LDAP. And this will let us store purchasing information, physical location, and what software is being run as additional attributes or child entries right alongside the host information. It'll use DHCP events again, published over in Wikipedia also set host last known attribute location or last known location attribute. We'll make our physical inventory so much quicker. So every time someone plugs a machine into a network it'll modify that record in LDAP and it'll say what location last was plugged in. That way if you ever need to go find the host you can go have a creative idea of where it is. So this is the code that generates the DHCP entries. Really the only complicated bit is the function that turns a DN into an FQDN. So the DN zero number is the distinguished name of the entry for the host and minus the OU part of it it's actually, you can directly transform that into the TCP-IPF QDN. So it just catnates the DC attributes of the CN1 throws away the OU and that's the host name. So everything else is pretty much screened catnations and various attributes. ISC's DHCPD does support LDAP through its own schema as well but because of the way they structure it it means that you really can't use the DHCP data for anything else like you can't attach DHCP information to already existing host records. So we gave up on that and implemented our own. So for DNS we use Dan Bernstein's tiny DNS and it's compiled from a fairly simple text file. Auto-generating it is also pretty simple. This selects the host that have an assigned IP and generates an entry for each one. Here we filter on any host that must have an IP host member which is what the schema calls the IP address. And then that make tiny DNS entry function basically just rips out all of the attributes necessary to build the DNS and appends them to the string and returns. That config is then written out and it composite to a CDB and you need DNS data plus it flushes the DNS cache statement and it's off and running again. So another thing we use LDAP for is for monitoring. Computer systems fail all the time with this many hosts and such huge dollar figures associated with artist downtime. A monitoring system is pretty critical. To do the actual monitoring we use MON which is a very simple but battle-tested monitoring system in parole with a Ruby and Rake based configuration generation system that pulls net groups out of LDAP. Splits off monitoring zones by network subnet and then writes out the input files with automatically derived dependencies to avoid being crushed by alerts when the core router blips. So this is the code that makes an array of hosts to monitor given a net group. Using net groups makes it easy to add hosts to the monitoring system. So as you can see there, starting at the OU, OU is organizational in units, basically just a generic group class. Have an OU call net groups while the net groups are stored and then it just filters them by the CN or the common name of the net group. And then net groups are stored in NIS net group triples which is a weird looking string that is a leftover artifact of NIS and it's basically a host, user and domain in a common separated string inside the corrents. We pretty much only ever use the host part of it so it just extracts that stuff in the collection and then recurses on itself for member at NIS, member at NIS net group which is how you can embed one net group inside another. So another thing we're working on for monitoring is a system that'll let us store services to be monitored as there's an object class called IP service which is as far as I can tell intended for something like this. So we can store IP service entries under the actual host record and then finding out what should be monitored will be just fetching every IP service, every host that has an IP service from LDAP and then auto-generating it from that. So this is a dump from LDAP using a shell that is included with 3-fold LDAP to you navigate an LDAP directory like a command line basically. So here I'm just catting the CN equals CF is one of the hosts that we have. It's our CF Engine Damian server and then I just cat the CF server to read IP service underneath that and it says what it is, what protocol and what port it's listening on. So just basically monitor that port and that IP and that's it. So to wrap up, if you find yourself needing a non-relational database, I hope you'll consider giving LDAP a try especially if you're already using it for other things. And it can be a little weird with its OIDs and strange syntax, but it's a good, solid, flexible technology that I think has gotten overlooked as being just for address books. Any questions? I think it's open LDAP or something else. Yes, open LDAP. What about, I'm curious to hear from the patient when I showed you, you only told that. I have a lot of pain around the replication engine and trying to keep things in sync. Are you doing any monitoring of that to which I think you're staying in sync? I know that sync, I think that the sync that you were talking about was, I can't remember if that's the replacement technology of that old one. Yeah, that's the newer one. That's the one that actually works really well. Right, I took care of syncing it as I synced in. How was your experience with that? So we wanted to do that by checking, there's a, sorry, I'll repeat the question. He was asking earlier implementations of open LDAP, especially used an older version of replication that basically catted the LDAP from the directory out and then piped that to another process which was reading it on another host. And they since replaced that with something called sync ripple which is an invented way using an LDAP control where the master server will actually notify any child servers and you can actually replicate just a part of the directory or the whole directory and it'll notify it with an event anything, anytime anything changes. And he was asking how we monitored that and how we keep it, make sure that it's consistent. There's actually an attribute in the extended attributes of the base OU that is a CSN. It's the serial number for the last transaction. So we just fetch that from the master server and then build it all the slaves and make sure their CSNs are all the same. And if one of them drifts wait for five seconds and check it again, if it's drifted then we alert. Do object classes do they kind of work like in sync with the traits? Yes. So object classes carry a set of attributes with them. So an entry can be thought of as a set that's composed of all of the entries of all of its object classes. So object classes have must and may attributes. The must ones are ones which if you include an attribute in the entry, all of the attributes in this must have at least one value. And then the may ones are just optional ones that you can use by virtue of including that object class. So the way tree cool works is it actually creates a mix in for an object class. So it's making Ruby treat object classes pretty much the same way all of that does. Anybody else? I kind of, I guess I was talking much slower in my hotel room, so have a bunch of time. Yeah. I'm sorry to say that again. What are the largest volumes of data you store in the lab? Like as far as data size? To be honest, I'm not sure. Let me check real quick. I have one learning on my local machines. I assume that you're asking because one of the NoSQL virtues is that you can store incredibly large amounts of data. Yeah, I have not investigated its suitability for those massively, I do know that LDAP is used to store incredibly large directories, much larger than ours, but as to specific numbers, I don't know. I would guess ours is maybe three gig or so. Probably nothing to write home about, but I guess my point is that if you're learning LDAP in a lot of places already are, and you want to use something that stores structured data and you don't necessarily need the huge, massive scalability, then LDAP makes a pretty good fit. What database are you using to store your LDAP in? Is it BDB? It's a variant of BDB called HDB, the hierarchical database. They actually just switched to that. OpenLDAP had a bunch of problems with corruption when it was using straight BDB, but we've had no problems at all since we switched to HDB. Are there alternatives to that that people use, or do they stick to different alternatives? So OpenLDAP does what he's asking his other alternatives to storing your data in a BDB.  One of them is an SQL backend, there's a shell backend. There's a bunch of different things that you can use to map your update into something else. And we've not used any of those. We experimented with the SQL one, which was pretty much disastrous, so we abandoned that. Anything else? Yeah? Do you have migrations?  Do you have a strategy for that? We do. What he was asking is, do we have migrations if we decide something needs to change in a schema? We don't have migrations in the same sense as Active Record does. There's not really any way to, if you change the schema, up until recently anyway, if you change the schema, it requires server restart. So we had to basically just keep all of the schemas in version control and sync all of the servers to the same revision that we have a tag and then restart all the servers. You have to restart the master first and then while the slaves are down and then restart the slaves, so they sync with the same schema. We just actually switched to open all that to four, which has a dynamic config too. It stores its configuration in all that bit itself. And supposedly that allows you to change schemas on the fly, but we haven't tried that yet. What about the data? Did you change the data across? Do you have a script or? So far, we haven't had any conflicting changes to the schema. We haven't changed the column name or anything. You could, that's an interesting question. I'm not sure how you would manage that, because if you change the attribute name. One of the things that I thought out that's really interesting is a lot of the schemas are really old and fairly stable. We have added our own, but so far we've only done additions. So if you change the name of an attribute or removed one, that would be, I'm not exactly sure how you would do that. So you're scaling the ratings by just adding the slaves, how do you scale rise? Open LDAP does support multi-master, but they recommend still against using it. So LDAP is considered a read many write seldom. So basically just, I don't think there is, well, so you can federate LDAP directories together. You can separate the rights of different parts of the hierarchy on two different servers, and then have them all federated together by referral. So if you go to one part of the directory and try to write to a slave, for example, it will tell you where you need to go to write. So you just split those off into different branches of your hierarchy. A shard and a partition. Right. A lot of universities, for example, use that. They have different departments. The right master is her department, so each department manages their own, their own little writable section of the tree, but then it's all federated into one big day of store at the top.


So did anyone else feel an overwhelming sense of dread when the clock struck midnight on New Year's because I know I certainly did because 2024 is going to be a year that will almost certainly change the trajectory of our country's future in a significant way For better or worse and the direction we go this year will be decided by the presidential election ultimately And it looks like we are set to see a rematch between Donald Trump and Joe Biden With each passing day that prospect gets more and more demoralizing and I'm gonna explain why if it's not already obvious first and foremost Trump is a literal threat to US democracy There are people who try to downplay the threat that he poses But he does pose a threat and when historians say that what he is doing and saying is similar to what we've seen previous Dictators around the globe do I listen to them when political scientists warn about the threat that he poses I listen to them. He has vocalized his intent to abuse power Project 2025 is already underway and if that wasn't already a turnoff that it should be to voters in theory You would assume that his two impeachments 91 criminal charges or the fact that he was found reliable for both fraud and rape Would make his candidacy a non-starter for Americans But that's not the case because that's the world that we live in he is poised to be the GOP nominee And he is currently beating Biden on average when it comes to general election polls and the House Oversight Committee recently learned that he pocketed seven point eight million dollars while in office from 20 different foreign governments Which obviously is a violation of the emoluments clause to the US Constitution But just stop for a moment and ask yourself Is this new revelation going to matter in any way even a tiny bit? Of course not and this Twitter user I think put it best quote Good thing Trump isn't related to Joe Biden or he'd be in a lot of trouble exactly and it probably doesn't even matter to you Because we already knew that he was personally profiting off of the presidency. Nothing happens. So what is this new news going to do?  It's not gonna amount to anything Saudi Arabian lobbyists would literally stay at his hotels to butter him up during his presidency And it worked because he did what they wanted He literally defied Congress to sell them billions of dollars in weapons amid their genocide in Yemen And he went on to veto a bipartisan resolution that would have ended US complicity in Saudi's genocide in Yemen So this new revelation or really any revelation for that matter about him will have an Infantestimal impact on the upcoming election in fact there isn't much he can do to get his loyalists to turn on him Take it from Sarah Longwell who spoke to Trump supporters in Iowa. Here's what she told CNN I was doing a focus group with Iowa voters just this week And I asked them if there was anything that would turn them off from Donald Trump and one said well if he did something really extreme like either died or murdered somebody and that was the only thing that would make them not vote for Him and one of these other candidates everyone in the group was more or less for Donald Trump And they all certainly believed that Donald Trump would be the nominee coming out of Iowa So he either has to die or murder someone to not get their support But let's be real even if there was evidence that he actually committed murder They still wouldn't turn on him. They just would refuse to believe it. They'd call it fake news So I don't even believe that murder would get them to turn on Donald Trump That's how little faith that I have in them Remember these are the same people who screech about Bill Clinton's association with Jeffrey Epstein rightfully so by the way But conveniently pretend as if Donald Trump never knew Epstein Despite him admitting that he knew him for 15 years and that he was a terrific guy who likes girls on the younger side But putting aside Trump's corruption and Criminality and general stupidity. It's not just going to be a tumultuous four years of him if he gets elected again It's not just more Supreme Court justices He is going to dismantle the administrative state and permanently change the structure of our government and institutions That is a problem. He's open about his plans to attack democracy and dismantle institutions and currently He's the favorite to win. Keep that in mind.  It's got to say at least something about his opponent. Does it not and I'd argue it does much like his predecessor Joe Biden Is complicit in genocide more than 20,000 Gazans have been murdered by Israel Netanyahu cabinet members have expressed genocidal intense and admitted that ethnic cleansing is their end goal and Biden Still will not tell them to stop. In fact, he bypassed Congress to sell them even more weapons that they will inevitably use on innocent civilians In Gaza, but don't worry guys He told them to end the mass civilian deaths while he was giving them more weapons that they'll use to blow up civilians So it's all good apparently and to say that his support for Israel has been catastrophic would be an understatement at the time That I record this video in January of 2024. He has now lost the support of Arab Americans in key swing states like Michigan He's lost the support of black voters Latino voters He's lost the support of young voters who are sympathetic to the plight of the Palestinian people But he is still not telling Israel to stop now liberals might respond and point out that this rhetoric that he's been using Lately has at least started to shift in regard to Israel's genocide.  He cuts off the money cuts off the supply of weapons tells them to stop and maybe has a chance to actually win if People forget that he did all of this shit by then which many will not many will remember it But at least he'd have a better chance if he stopped this and people pretend as if Biden is powerless But that is bullshit case in point former presidents like Ronald Reagan have told Israel to stop and guess what happened They did the nation's treat a Parsi writes in 1982 President Ronald Reagan was disgusted by Israeli bombardment of Lebanon He stopped the transfer of cluster munitions to Israel and told Israeli Prime Minister Menachem Begin in a phone call that this is a Holocaust Reagan demanded that Israel withdraw troops from Lebanon Begin caved 20 minutes after their phone call Begin ordered a halt on attacks indeed It is absurd to claim that Biden has no leverage Particularly given the massive amounts of arms he has shipped to Israel In fact Israeli officials openly admit it quote all of our missiles the ammunition the precision-guided bombs all the airplanes and bombs It's all from the US retired Israeli general Yitzhak Brick conceded in November of last year quote the minute They turn off the tap you can't keep fighting you have no capability Everyone understands that we can't fight this war without the United States period. So let's be clear Biden has a choice and I hate to reduce serious issues down to memes because it kind of undermines the seriousness of it But this meme shared by roots action perfectly and concisely encapsulates the predicament that Biden is in either have any shot whatsoever at reelection or commit genocide and as we all know He's pressing the genocide button and they're responding to David Hogg who makes a crucial point if Biden can't adequately and immediately address the mass drop he has had in the polls with young people There is no path to victory simply wanting it to be different or acting like there is no problem Doesn't change the fact that we have a major problem. He continues There's a lot of young people in Georgia, Michigan, Wisconsin and other critical states that Biden absolutely has to get the votes of In order to win the danger is not that they are going to vote for Trump The danger is them just not voting but as you can see the immediate response is from smug liberal Rachel Bitcoffer who says after the kids don't vote they can ride their high horse right into the Trump camps But it doesn't work that way the onus is on Biden not the voters He knows his support for genocide is morally outrageous to voters He knows that he has the power to stop it but isn't doing that So if he has a year to fix the issue and does not you don't blame disillusioned young people with no power Who chose to stay home you blame the person with power who took their votes for granted But if voters shaming was an effective strategy, don't you think it would have worked in 2016? But no Hillary Clinton lost you can't blame voters for that You have to blame Hillary Clinton for running a terrible campaign and the same is true now with Joe Biden But there are more warning signs that he's choosing to ignore not just voters tuning out for example multiple Administration officials by now have spoken out anonymously and some have even resigned over this administration's complicity with Israel's genocide The latest is former education official Tariq Habash who is a Palestinian American who resigned saying quote I cannot represent an administration that does not value all human life equally I cannot stay silent as this administration turns a blind eye to the atrocities committed against innocent Palestinian lives in what leading Human rights experts have called a genocidal campaign by the Israeli government and he further explained his reasoning in an interview with Jor read on MSNBC And here's what he had to say it hurts it is a Dehumanizing thing to hear from the president of the United States someone who you worked so hard to campaign for and elect and Support his policies that you know Your life is not Valuable your identity means less than other people's identities and it's okay That tens of thousands of people who look like you and who have similar backgrounds and heritage are dying and being massacred and That hurts Do you get the sense that that there are a lot of other people in the Biden campaign and in the administration who feel the way you do That are maybe not saying anything. Yeah, absolutely. I think I think a lot of people are saying something I think that we've seen Hundreds of State Department officials sign on to numerous dissent cables that were leaked. We've seen USAID officials We've seen White House staff. We've seen interns. We've seen hundreds of Officials across the administration from dozens of agencies. This is a pretty commonly held position by a lot of the biggest supporters of the president and The majority of American voters support a ceasefire, but the president's unwillingness to move on this policy is Defining and it hurts, you know, you were the only Palestinian American in the Department of Education But you were also were a campaign guy. You worked on the campaign This is not the most important thing electoral politics, but it kind of is because our democracy is at stake What are you gonna do in November? But I mean do you have a we would you vote for Joe Biden? I think that's up to him You know, I did volunteer to support the campaign I've supported the president for the last three years and every single thing I do in my professional life And the reality is the president's in power He is the one whose name is on the ballot and it's his policies if he wants to earn my vote and the vote of millions of Americans Who support peace and an end to violence? That's up to him. It's up to him. Exactly Now he was asked by CNN's Abby Phillips whether or not he thinks Biden's support for genocide will cost him the election And this is what he said. Do you think that this issue could cost Biden the 2024 election and if it does would you be comfortable with that? Listen, I don't think that that's my decision to make. I think it's the president's he's the one on the ballot He's the one who has the power with a phone call to To end this violence to make demands of the Israeli government to end the indiscriminate Violence against Palestinians and so I think if the president wants to ensure a second term if he wants to ensure the support of millions Americans who are part of his base who have supported him You know, I think he needs to hear what the people are saying and I hope he does Yeah, and with 11 months left until the election Nobody really knows what's gonna happen at this point all we can do is look at the polls gauge where voters are at now in January of 2024 and Make a guess right a lot can change between now and November, but with so much at stake. I Find it infuriating that he is so Irresponsible to dismiss voters concerns when this is something that they have made very clear matters to them This is the same guy who told us democracy matters and he wants to protect democracy from Trump But apparently genocide is a higher priority to him than saving the Republic and What's even more maddening is that Israel's far-right government would prefer Trump instead of Biden because as supportive as Biden has been they know Trump would be even more supportive So they don't care if what they do hurts Biden, but he should care but you know He doesn't seem to Now Trump would also be terrible on this issue because he's made it very clear that he thinks that Biden is too weak on this issue He's weak on the genocide that he's complicit in so when it comes to this election You really don't have a choice when it comes to genocide in Gaza both candidates who are the major candidates support that the ones that can Win they will support genocide in Gaza so long as Israel wants to do it and that's a damn shame But to be clear, I don't think that the people disillusioned with Biden are going to vote for Donald Trump I think they're aware that Trump is worse on this issue as Charlemagne the god put it It's a competition between Biden and the couch if he can't get people off the couch to vote for him Then he's gonna lose because the people who supported Trump in 2020 and 2016 They're gonna keep supporting Trump But Biden needs to get the people back out to vote for him that he mobilized in 2020 and as it stands right now He's failing to do that But I don't want to create this false equivalence between Trump and Biden because even though they're the same when it comes to the issue of supporting Genocide in Gaza there are actual meaningful differences between the both of them in other areas for example another Trump term would almost certainly endangered the lives of trans people and As somebody with trans family members, I just don't think that that's a risk that I want to take It's not what I wanted to take I don't want to gamble with their lives and project 2025 Which he supports would entail a nationwide ban on gender firming care that the president does via executive order or regulatory changes They don't need to go through Congress to do this That's a real threat furthermore as fascistic and ruthless as Biden's border policies are while Republicans ironically pretend like there's an open border currently Trump is already broadcasting his intent to be even more ruthless than his 2016 term if you can imagine that so there are concrete differences between Biden and Trump and these differences make Biden the objectively better candidate than Trump So my goal isn't to perpetuate this false equivalence and tell you that Republicans and Democrats are the same or Biden and Trump is the same but Here's the thing you still have to take into consideration what voters want because Most people care about this issue so much that they are one issue voters Israel Gaza that's their top concern It's the most salient thing to a lot of them a lot of young people a lot of Arab Americans So you can't ignore them when they're telling you they don't want their tax dollars funding a barbaric genocide in Gaza And then fault them for choosing to stay home the onus is on Biden He is the one who needs to take their concerns Seriously make their concerns his biggest priority because they're the ones that elected them and he is a public servant Who is supposed to represent them and he's not doing that currently what he's doing is not the will of the people It's undemocratic and it's monstrous and his refusal to listen to the people who got him elected puts him in a vulnerable Position when it comes to this next election, but don't take my word for it. Look at the polls Aggregate polling data shows that Trump and him are neck-and-neck Trump has a 2.2 Overall lead on Biden So I hope Biden pulls his head out of his ass before it's too late But even if he does it's just still sad to see a repeat of him versus Donald Trump in 2024 Which is the most likely scenario because we really do deserve better candidates than both of them


So our next speaker is Dr. John Hendrickson. I read his bio yesterday. I'm not gonna read it today. You should all have heard it yesterday. It's a great bio though. But John today is gonna talk about using auxiliary buds to assess the impacts of management strategies on the abundance of invasive coalescing grasses. Thanks, Kevin. And I'd like to start by acknowledging my co-authors, Andrew Carlson, David Toledo and Chantel Kobolansky from the Northern Great Plains Research Lab. And also, and I forgot to add these co-authors on there, but I should also add on Sean DeKaiser, Brianna Kabila and Levi Benstock from NDSU who had a portion of another project on here. So I apologize for that oversight, but I'm gonna start off this talk by talking a little bit about population ecology. And I kind of hesitated on whether I should do this or not, but then I talked to Holly Johnson and Andrew Carlson who do all the heavy lifting in my research program.  And so I said, okay. So, and this was kind of mentioned yesterday, but if you look at our grasslands in the Northern Plains, they're very much developed under disturbance. If you look at our native grasses, they've had to do fire grazing drought. And even our introduced grasses have had to undergo grazing and understand how they respond to defoliation. And so when they do this, grasses have a tendency to develop coping mechanisms. And one of these coping mechanisms or persistence mechanisms is axillary buds. Now to put these in context a little bit, and this is where we talk a little bit about population ecology is if you think, if you think about our communities out there, you know, when you look and you measure grassland community, you see, oh, we have all these different species, you know, but really what that community is is a collection of populations of different species, okay? And the idea with population ecology is we can understand something that's happening here at the population, we can maybe get an idea on why our communities are changing. And further there, populations are made up of individuals and these usually when we talk about this with our rhizomenous plants, usually these are stems. If it's more of a cespitose where we know exactly what the plant is, we can kind of lump it in to say a plant. But at the base of those individuals are axillary buds. And axillary buds are very important in our grasslands. If you look at our native grasses, for example, and you look across there, about 99% of the grass shoots you see are going to be originally arise from axillary buds. So they make a big contribution to the persistence of these grasslands over time. They're kind of part of a modular growth form. And if you look here, you see, typically we call this a phytomer, it's where the node is and then there's a leaf, there's an axillary bud right at the axis of that leaf. And then there's an inner node. And if we go over here and look at this, and this is shrunk down, so it's the crown, but you kind of see the same thing. There's a node there and there's an inner node and there's an axillary bud. And this will kind of turn out to be a leaf. And the other thing, and I'm gonna talk about this later in the talk is that there's not just one of these on a crown, there's multiple ones. So we actually have multiple positions that can develop on that crown. And that's important when I'm gonna talk about what those different positions can turn out to be. Just a kind of a side note there, when you look at most of our tillers, they actually come from the upper portion of this crown, usually the ones down here that the older tillers that are developed down below usually don't grow out to be tillers. They're these, I'm sorry, these axillary, these crown positions lower don't turn out to be tillers. So this just kind of shows a little bit about what these are and I'm gonna give a little bit better explanation of this later. But an important thing to remember about these axillary buds is that they can be a really big part of the meristematic potential we have out there. They can be larger than seed banks. And I was trying to do some numbers on this and the numbers got really big, so I gave up on it. But basically Kentucky bluegrass, we ran some rough stuff and we had about 9,000 of these axillary buds per meter squared. And then if you wanted to get that up to a hectare, you take that times 10,000 and the numbers become really big and I'm just left it at that. But they can be really, there's a lot of these out there. Therefore, we need to understand how our management impacts these because then it can help us understand how effective our treatments may be. The one thing to say is that I think they're really a good way to evaluate treatments. We do have to be careful when we say we can use these to predict the future. And there's a lot of slippage that can occur there. And so it's just one thing that you need to think about. One other thing I wanna bring up before I start talking about this is a little bit about phenology. And Sean had talked about this yesterday about how there are different phenological aspects to smooth brome, for example, and both smooth brome and Kentucky bluegrass have our C3 grasses. Most of our C3 grasses have a tendency to produce two cohorts and new tillers every year. One in the spring, one in the fall. But to C4 grass, just the tendency is to have a more consistent tillering pattern across the season. These two final points here, this one about Kentucky bluegrass axillary buds forming in the fall. And the smooth brome grass axillary buds becoming more active after the reproductive phase. I want you to remember that because it kind of helps explain some of the things that we're talking about later in the talk. So with that, I'm gonna talk about two projects we have. One looks at different defoliation at different phenological stages in smooth brome. This kind of came up because I was looking at some, we had some long-term exposures at our location. I was looking at the amount of Kentucky, or a smooth brome in those exposures compared to outside. There's a lot less outside where it was being grazed outside the exposure. So it's suggested maybe there's something that's occurring there. The other is with drought and fire impact on axillary buds and Kentucky bluegrass. So these are kind of two distinct projects, but they both revolve around axillary buds. So the first one is with the defoliation effects on smooth brome. And we basically had four different defoliation treatments and a control on this, the defoliation treatments revolved around the phenological stage. So they could be defolated once when it was vegetative or twice in the vegetative stage. This elongation stage, that's when the grass plant starts to elongate. And you can tell that Sean mentioned this yesterday. You can kind of feel a little node there. When you run your hand up and down the stem, you can feel a little bit of a node there. And then also in the reproductive stage, which was, we call that roughly around the boot stage with that. And then we left an undefoliated control. We had 10 of these, each tillers in each block. And then there were three blocks and they were sort of placed in some pastures on loamy sites that we had at our location. These were inside exposures on the pasture. So there was more of them and they're excluded from grazing not only before we were tagging them, but also afterwards. You can see down here, when we mark these tillers, we put a little wire around the base of it. That's, we use telephone wire, but you can also use any type of wire there that's as long as it's mandible and colored and stays. But that helps us identify that for later on that we defoliated this specific tiller. So, we did that at each stage and you can roughly think some of it was in May and maybe when it started elongating might've been June and reproductive too. But then in the fall, we came back and we collected these and you can see when we collected them, oops, when we collected them, the other thing we did was we marked them with nail polish. And we mark them with nail polish there because that allows us to make sure that we're on the right tiller or chute. Because when you start taking these up, sometimes they're fragile, they can break. Having that nail polish there lets us make sure that we're on the right. You know, we're still getting the right one that we originally defoliated. When we brought them back to the lab, we cleaned them up and then we did what we call a double staining technique on that, basically we put them in tetrazoleum for 24 hours. Tetrazoleum basically, if the cell is active it takes up the tetrazoleum. We put them in Evans blue. Evans blue is the type of stain that if the cell wall is compromised it will go through the cell wall. And so we could tell if they were live or if the axillary buds were live or dead based off of that. Remember I'd said that it was important, remember that they could have multiple, you know, different positions on a stem. And we kind of can split these into categories. You know, we have our bud category here which is active and dead, but also dormant which are unstained. There is a little controversy about the dormancy using this technique to be fair but this is a pretty rapid technique that we use. We also looked at outgrowth. You can see here with tillers and rhizomes and then this leaf scar here and I'll talk about that a little bit later but sometimes you'd see these positions and there should have been something there but you could not see anything. And so we would call that a leaf scar and I'll give an example I think on the next slide here. Yeah. So you can kind of see here, here's an axillary bud that's what they look like. They're small, they're kind of conical. This is one that is active. You can see how that's stained red with the tetrazolium there. Here's one over here and this isn't showing up quite as good unfortunately but it's a very, very dark blue when it stains with the Evans blue in there. And up here is a dormant one and those kind of have a tendency there's like a blue tinge but basically it's on the outside. It's not the deep blue stain that you see when it's truly dead. Leaf scars are like these areas here. You can see there's a discoloration there. So you kind of say, okay, there's something there that should have been attached there and we're not seeing it. So those are kind of the categories along with either a rhizome or a tiller that grew out. So we call this, when we looked at outgrowth here we said, okay, it could either be a rhizome or a tiller on here. And there were differences between years which is kind of what you would expect but what I found kind of interesting between years also is there was differences in years between rhizomes and tillers. So certain years had a tendency to produce more rhizomes certain years had a tendency to produce more tillers. But over here with the treatment I really found this interesting if you look at our total outgrowth here if we clipped in the reproductive stage we ended up getting more outgrowth than we did in any other stage with this. We got the least outgrowth when we defoliated twice in the vegetative stage. And if you remember, I said that axillary bud tillers could become more active after the reproductive stage and this may be one sign of that. There's other things that could be active working on this but this could be one of the things that increases the activity there. The other thing too is that if you notice over here that there were differences in the proportions of tillers and rhizomes contributing to that total outgrowth again it was based off of the defoliation or the stage the phenological stage that we defoliated in. This, and I hesitated a little bit to show this because I'm not using this information the way it truly should be used because I don't have the information for this but it does give us a little bit of an example and what that is is basically if you think of a tiller out there what that needs to do is it needs to produce one live tiller or one live rhizome over its lifetime in order to maintain the population, okay? And so we could look at live tillers and rhizomes per crown when we got these and the reason I say this wasn't total is that we don't know what happened to some of the dead ones. They may have not have really totally they may have emerged and died really quickly. We don't know if the original tiller was dead here but still this gives us a little bit of an idea on if that population is growing or not. So anything above one here it's a population that's growing and you can see regardless that our population was growing but if we look here at defoliating it twice in the vegetative stage we were reducing that population growth and in fact you look at the reproductive stage here and it was producing 62% more live outgrowth than when we defoliated it twice in the vegetative stage and looking at that here too if you'll notice vegetative stage had the least outgrowth here reproductive stage had the most. The other thing and I just noticed this when I was going over my talk this morning is that I found kind of interesting is that probably what's again if you look at active buds and total live buds which is the active buds plus the dormant buds because they have the potential to grow out also we're seeing the most here in the reproductive stage which you would expect but there's also quite a few here in the twice defoliated twice in the vegetative stage and to me that says there is something happening between that bud being active in that rhizome growing out there's something that's kind of short circuiting that ability to actually produce a new tiller in there and I found that really kind of interesting with this and we need to think about it more which brings us to some takeaways from this project which is defoliation in the reproductive stage increases outgrowth but what we really need here is we need to have a better understanding of the tiller demographics and Zach Johnson I know has a poster on this that he's actually looking at the tiller demographics in this so I think that'll be kind of interesting to see what he's finding on that The next project I wanna talk about is looking at axillary buds in Kentucky bluegrass and when we looked at this we were looking at two different treatments on here one was burning and the reason for that is as you know fire has the potential to reduce the abundance of Kentucky bluegrass but socially there's been some constraints on us using fire across the landscape The other thing too is that if you look and this is data from our location in Mandan there if you look here between 1916 and 1990 we had about 15 inches of rainfall a year in the 90s that shot up to almost 20 so and we're seeing that increase in precipitation throughout the decades after that which says that not only did fire removal but we also have this large increase in precipitation in David Toledo and I when we were talking about this project you know some people that we knew said okay you know if we have a good drought Kentucky bluegrass is going to go away and so we said okay let's see if that's going to actually occur so when we looked at this we looked at this using kind of three different or you know three different drought treatments one was an ambient treatment we use these rain intercept shelters and you can see the more of these transparent plexiglass gutters we had on there the more rainfall we intercepted so we had a 0% which just got the ambient rainfall we had a 60% which got 60% of the rainfall that would fall on the plot in a 30% and we had those oh one other thing is then each plot half of it was burned and half of it was left unburied we use this firebox in order to do that so each of these was replicated three times within these exposures that we put up and then each exposure was replicated three times we had three replicates within a block and then each block was replicated then we had three blocks of this in addition we had outside here we had three additional plots where we wanted to look at grazing we did not add the rainfall intercept on these plots because the livestock having access to them but we did burn and not burn them so they could be grazed and burned, grazed and unburned so we went out there and we sampled within these plots we used a sampling probe and it was about five centimeters we went down two or three centimeters we brought the samples in you can see how they were kind of with Kentucky bluegrass you see a lot of this root and thatch there we cleaned them up put them in tetrazoleum so we could just kind of see the activity on these and then we analyzed this using a randomized complete block so what did we find on this and I found this kind of interesting one is we had a time sampling time by burning interaction burning had a tendency to reduce the number of axillary buds you can see this across time but there was a little bit delay and I was thinking that we might see the maximum impact here because these treatments have been in place since 2017 it would burn right the year before and we didn't instead we saw the only significant time we difference we saw between burning and unburning with number of axillary buds was here in November of 2020 and there's a couple reasons that that could be one was that September of 2019 was very wet if you remember I said that Kentucky bluegrass has a tendency to form its tillers in the fall and if it had increased moisture during that time or not tillers but form its axillary buds in the fall if it had increased moisture during that time that could have provided a larger pool of axillary buds this here was burned in September and then we sampled in November we do know that burning can sometimes reduce the amount of axillary buds on there as you can see from all this other data so that could have been an impact here the other thing and I forgot to mention this but it's important to know that 2020 growing season in 2020 was like and the Bismarck weather airport weather station was the third driest year since they started keeping records and 2021 was also really dry and in fact it was probably even drier than 2020 just because we didn't really get any moisture till later in the year and so what I think you're seeing here with a reduction in the number of the reduction in the number of axillary buds there is that that's an impact of drought that dryness was there and it was continued dry and so we're seeing some of that impact of drought there so what about drought? Well, when we look at this we see again that regardless of our drought level burning had a tendency to reduce the number of axillary buds but it was really only significant at that 30% drought level and so I think this interaction here between a moderate drought and burning is going to be important to think about in the future. Again, one thing to remember here is these rain intercept shelters intercepted the amount of precipitation that was falling and it was dry anyway, you know during the two years that we did this and you just need to think about that a little bit when we're thinking about these interpretations of what's going on here but that again could say why my thought would be at the 60% that we're seeing a suppression and axillary bud numbers that we're just not seeing the big difference between the burning and the not burning that we did see at the 30%. Finally at the grazing and with the grazing we did not see a big difference here. There was, I looked at this several times it looks to me like grazing adds variability to these axillary bud numbers but there's not a clear trend with the impact of grazing on it. The only time I saw that there might be some impact of grazing or might have interacted with burning was clear down here in November of 2021 when we're seeing a little bit lower numbers of Kentucky bluegrass axillary buds with grazing compared to burning. So there might have been a little interaction there but that did not show true through the rest of this of the rest of the project. The other thing here to remember too and I don't know if you kept an eye on this axis here which is a number of axillary buds per meter squared but again, there's a ton of them. Like I said, there's about 10,000 here per meter squared. If you scale that up you're seeing a lot of numbers there and it just shows how resilient these are. There's a lot of axillary meristematic potential out there that has the potential to turn into a tiller or something. So these are very resilient grasses and we can throw a lot at them and it's hard to really reduce them as much as we want to based off of this. So looking at what we found out with a summary here that we had from the burning and drought on with Kentucky bluegrass burning is important. And I think even though it wasn't always significant we did usually have a trend that there was less axillary buds when we burn than when there wasn't. So I think that's burning is an important tool to think about using here. One thing to keep in mind with the burning is that it may be linked as far as effectiveness with your weather patterns. And again, I'm thinking about that wet September we had in 2019 and we weren't seeing the impact of that burning out into the fall. So there may be something, I mean into the spring the following spring. Grazing, we really did not. Grazing, we could not see a clear story with that. It could be one there if we tease it out more but I really did not see a clear story with what the data we had. I found this one interesting here where probably the maximum or significant difference with between axillary bud numbers with bird and unburn came under moderate drought. To me, that's something as land managers and others I mean, that's kind of could be a hard sell to some people to say, okay, if you want to maximize the effect of your fire, you got to wait till you're going to burn up some of your forage when it's dry. And it's one of those things you just have to think about as you're talking about this. And the extreme drought can limit the effectiveness of burning, and again, if you look at work we're harvesting 60% of very limited rainfall there. Some of these plots were probably getting, I think we had eight inches for the whole year. 60% of that is, I mean, you're down to maybe they're getting two or three inches of rain on some of those plots. So overall, I do think that we can evaluate use these axillary buds as a way to kind of evaluate the effectiveness of strategies. I think we saw that with burning with the Kentucky bluegrass and we also saw that with clipping at the different phenological stages with the smooth brome. We do need to think a little bit about the management by environment action. I would also say thinking about adding on there the management by morphological stage or the phenology with looking at how these grasses and for example, on the smooth brome when we defoliate with the Kentucky bluegrass thinking about when we're going to apply the fire to maximize the effectiveness. And finally, like I said before there's a lot of meristematic potential out there with these looking at these axillary buds. While that can be overwhelming it does show us that these grasses are really resilient and that we as I said yesterday it's not a one and done type of thing. These type of management strategies have to be repeatedly placed on the landscape in order to maximize the effectiveness of them. So with that, thank you very much.


Getting 360 friends, glad you're with us today. Of course, we're looking at a market sell-off, but we're also watching earnings, and that's for IBM. IBM earnings are due out today after the bell. Today's 360 round. Melissa Armo, founder, owner of the Stock Swoosh, is with us, and Kevin Horner, senior manager, training services education at Charles Schwab. Thank you both for being with us. Melissa, I was looking through some notes and what folks are looking for, and I think after a recent spin-off of its former IT managed services business, that's something that people are wondering how that factors in, and also the outlook. A lot of talk about what kind of outlook the company will give. What are you watching, Melissa? Well, the stock has been falling just like the market in the last two weeks, and really since the beginning of this year. But if you look back on 2020 and 2021, after we had the COVID bounce, this stock has still been falling even though the market has been rallying and making new highs. So overall, the performance of the stock, even going back two full years, has been terrible. So there's no reason to expect that even if this has a positive earnings report that this is the turnaround. The last time that IBM made new highs was 2013. It's 2022. That's almost 10 years ago. And when you look at a bullish market, you say this stock should be not only at new highs, but through the highs. It's not competing well with so many other people that have entered this space in the last 10 years. Microsoft, Google, companies like that, they're not doing well. I don't think this stock is a buy unless it lists over 160. And the chances of that happening tonight in the earnings are slim to none. I see. Okay. So you're really not as excited about the stock. You're doing a lot of charting as well. Kevin, your thoughts here as you're looking at the chart. I largely agree. I've been looking at this from a weekly standpoint. The weekly chart is downright awful.  Look, you've had short-term pops into this long-term downtrend line, which you can trade against. But the truth is this has been in the downtrend since 2013 and it has not made higher highs in the extended long run. And in fact, in the most recent period, as we see on the daily chart, we have a true breakdown from an effort to just a couple of weeks back here, recapture the 50-day and 200, or excuse me, the 200-day moving average, which lasted all of two days and it retreated extremely quickly. So the rollover from there, we got as high as 140 and we're back to 124. Now what I find interesting was the shift that has happened from Friday to today in the straddle on this. So on Friday, I was looking at the straddle at the close at like the 128 strike is about a 7% return, about a nine-point implied move. And with today's volatility increasing at that strike right now at 125, it's actually a 9% move implied on earnings and you know what that means? Is it could actually route or could fall, excuse me, to the most recent ledge of support around 115 if we are just expecting, you know, I don't know what you guys have been seeing, but a lot of the data regardless of how good or negative it has been has been met with selling of late. And I think it's important to note what else is going on, not just looking at the chart, which you're both doing here, but also just what's been going on in the underlying story of IBM. As I mentioned, they sold off the IT business that I talked about earlier, also waiting on the sale of Watson Health, right? That's another part of it. And the analysts seem to think that this is all gonna pay off in 2022. That's according to Stiefel. And according to Evercore ISI, they just think that maybe the consensus for the March quarter revenue estimates appear high and that the benefits won't kick in until later. So there are some concerns. They're also changing how they're doing a little bit of the revising the segment reporting. The business is divided into software that will be cloud and cognitive software consulting that used to be global business services and last but not least infrastructure, hardware storage and related support. So at which point would you say and what could you hear today, Melissa, on the call that would say to you that you'd be more interested in the stock? There's nothing that would make me interested in this unless this would make a turnaround of 40 plus points, like I said, and you can't forget and ignore what's happening in the overall market. The market is selling off. There's multiple reasons for that.  The market's selling off because we're having still problems in the supply train. We're having and talk about interest rate increases four times a year or possibly more. We have high levels of inflation. We still have a big unemployment number. We're having problems right now where they're talking about sending troops to Ukraine. There's too many things going on in the market. Even if this blows out their earnings tonight, the thought that people would even consider buying this tomorrow I think is a problematic. And again, I know people love to buy the dips but if you've been doing that in the stock market in the last two weeks, you've gotten crushed. You've lost money, no doubt. And if people look to buy this tomorrow, if it does gap up on the earnings tonight, don't think it's gonna hold without the market. I think it's gonna take time for this company to turn around. It could turn around in six to nine months. It could turn around the next earnings report but don't look for it to turn around any big way tonight. Right. And you know, even with a 5% dividend yield which people look for, I mean, you could get paid to wait but the pressure has been on the market. Final thought here, Kevin. I cannot argue with anything that's been stated. I think that the price action here on the chart has been negative sufficiently to discourage bullish investors. And I think your best case scenario is from a technical standpoint, one that offers you entrance in the neighborhood of 115. But again, if you're buying on a move lower, you're buying into weakness. So you have to be an investor who's interested in owning that for the extreme long run, in my view, not necessarily a short-term trade. The risk reward might be on the bull side at 115 but that doesn't mean it has to go higher from there. I would be prudently cautious. Right. And IBM previously said it expects annual growth to return to the mid-single digits range and we'll get an update, of course, on the call as well. Melissa Armo, nice to see you. And Kevin Horner, nice to see you. Thank you both very, very much. A great conversation and we'll watch IBM after the bell today.