Skip to content

Teaching Despite the System

December 14, 2014

I have a friend who is a teacher. We’ve been talking over the past few years about lots of different things, one of those being her career as a teacher, all the things that she does, the students she teaches, the materials she uses, and the educational system in general. Great conversations, to tell you the truth. The things that teachers do these days, teaching our children, future generations, if you will. They are, in effect, responsible for the education of our future leaders, our future workers, our future military, our future thinkers, our future educators, and so many more. They have a huge responsibility. And for the most part, most of them are doing a tremendous job. Well, they’re doing a tremendous job despite what they have been given in an education system that is becoming more and more difficult to teach in, more dysfunctional, and even to learn in.

In some areas the system is getting better. People are starting to recognize more the importance of proper health care and nutrition, and how that impacts our students abilities to learn. At least here in the Boulder Valley School District of Colorado, they are starting to serve healthier lunch choices, not such heavy carbs that inhibits the student’s ability to learn. So kudos to the food services group here in BVSD.

Every two to four years the system has the potential of significant changes made, typically not for the better, but simply because there’s someone new in political office. Mostly because this time around the election swung from a D to an R, or back again. Funny thing is, that that elected official is a lawyer or salesman or rancher or whatever, not an educator. I can’t think of one who is or was an educator. But they seem to have this grand idea of how the education system could be better. Oh wait, not that. It’s because the politicians corporate donors have a better idea of how the education system should be run, one in which would benefit the corporation financially. One that would produce worker drones for future jobs in the corporate world.

No child left behind. Or, as it should be called, leave all children behind. Or was it leaving no child left behind on the road to nowhere. This plan has to date been the worst for our education system.

One of the big issues I have with the education system is the standardized tests. More and more, teachers are forced to teach to the tests, not the subject matter. Teach how to take the tests better. How well the student does has an impact on how well the teacher is graded, how well the school is graded, how well the school district is graded, and so on. It’s not about teaching the student the subject matter, or teaching the student how to learn and be problem solvers, or how to be citizens of our communities. So the incentive is to teach to the tests to make sure the students do well and the teachers and school system receive favorable grades as well.

And more and more, those standardizes tests are being administered by private companies, the tests made up by private companies, the material written by private companies. These corporations are making out like bandits on the backs of our students, but mostly at their expense.

My teacher friend has repeatedly commented on how her job has become increasingly more difficult. That she has so much more paperwork to do, new systems to learn to account for how well the students are doing compared to expectations, which are determined by how well they do on these standardized tests. The teachers are having less and less time to actually teach the students, to help them learn, be present for them, to help them be future members of our society.

What, you ask, do I think should be done about it?

  1. Fully funded education pre-k through college graduation (bachelors or associate).
  2. Instead of basing school funding on property taxes or local taxes, make it equal across the nation, accounting for cost of living of course. But make sure that every student in every school all across the country have the best possible materials.
  3. Better requirements for healthier foods served at the schools. Studies have shown that consuming healthier organic foods, lower carbs, can improve a student’s innate ability to learn, to absorb information.
  4. Quiet time, 20 minutes at the start of the day and 20 minutes at the end of the day. This one helps the students to become present at the school in the morning, to calm them down, get them ready for the day. And at the end of the day to close out, calm down, and prepare for their after school activities and going home. It works, look it up.
  5. Do away with the standardized tests. Teach the subject matter. Teach the kids how to be problem solvers, how to think. Not what to think, but how to think for themselves.
  6. Teach the kids basic tasks that the everyday person does after graduation. How to balance their books, create a budget, cook, be able to take care of themselves.
  7. The Department of Education becomes the Department of Educational Excellence, researching the best environments and systems from all around the world, trying out these ideas in schools, making sure teachers have the best tools that they need to teach.

We can throw more and more information at our students, more and more requirements. But without providing the student’s with the ability to increase and improve their innate ability to learn, none of that will help in the long run.

Semantics … it’s not just software and mathematics.

December 3, 2014

Yes, the implementation of the Semantic Web definitely includes software development and mathematics, but Semantics is soooo much more then that. It’s all about meaning, hence the word Semantics. It has context. It represents concepts and relationships. Could even say that there’s a perspective to the semantics. Making assertions about quality and trust. Who said it’s of high quality and why did they make the assertion. The origins of something, aka provenance. In other words, the Semantic Web has a cognitive component.

Semantics is all about meaning. Not just meaning to a machine, but meaning for a person. The Semantic Web utilizes both when displaying information, depending on the context. If a human browses to a IRI that represents a data collection, for example, then that human would want to view the information as a web page with information that is useful for them. If a machine hits that same IRI and wants to see a particular serialization of RDF of that same information, then that’s what it will see. To both human and machine the information is semantically rich and clear.

The meaning behind terms in an ontology and vocabulary are very, very important. And we want to make sure that we use an ontology in the same spirit of its intention and meaning. If we end up using an ontology and decide that term x means something else to us, then we should create our own term x in our own namespace. We need to leave the external ontology alone. Same with relationships.

And we need to use words taking into account their definition, not subverting it or stretching the meaning of the term. “Well, if you think about it this way then it makes sense.” Well, no … terms like inheres and realizes has a definite definition, and the comment related to the term in the ontology should make that clear. If you have to ask to clarify the term, then it’s not worth using.

To use such properties as “relates”, “related by”, “related”, “realizes”, “inheres in”, and so on is semantically void, especially when the “definition” for the term ‘realizes’ looks like this:

“to say that b realizes c at t is to assert that there is some material entity d & b is a process which has participant d at t & c is a disposition or role of which d is bearer_of at t& the type instantiated by b is correlated with the type instantiated by c. (axiom label in BFO2 Reference: [059-003])”

They call that an elucidation, which supposedly means an explanation that makes something clear, clarification. I don’t know about you, but that is definitely not clear. This “elucidation”, to me, is completely void of semantics.

And to say “project realizes leadership_role”? That means absolutely nothing to me. How did the project realize a leadership role? The project didn’t realize it. That doesn’t make any sense. The project includes a collaborator who plays the role of project lead.

And let’s look at a query:

SELECT ?project ?leader
WHERE {
?project a foaf:Project .
?project grt:000055 ?role .
?role ty:000052 ?leader .
?leader a foaf:Person .
}

WTH! ?project grt:0000055 ?role … what the hell does that mean. What relationship does a project have to a role? Perhaps ?project x:includesCollaboratorWithRole ?role.

And how does a role inhere in a person? Meaning of inhere – exist essentially or permanently in. Does the role essentially or permanently exist in the person? No. The person is playing a role for a period of time with a particular context. Patrick West is playing the role of Principal Software Engineer at the Tetherless World Constellation starting in January 2009 and continuing to this day. Patrick West is also playing the role of Consulting Software Engineer with the National Center for Atmospheric Research starting in 2008. The same person, different roles with different context.

Let’s look at another example of meaning. A foaf:Agent is very different from a prov:Agent. They are not defined as being subclasses of the other, nor should they. The foaf namespace is separate and different from the prov namespace. Let me put it another way … the context of foaf is separate and different from the context of prov. The context for foaf:Agent is in terms of representing a person or organization. Period. The context for prov:Agent is in terms of something that has impact on the derivation of one entity from another, provenance.

So to say that prov:Agent subClass foaf:Agent changes the meaning of prov:Agent. And it changes the meaning not only within the scope of my application, but the meaning for anyone, anywhere, especially when we’re talking about 5-star linked data. There is no such thing as a closed container in the Semantic Web. In other words, just because I’m defining this in the context of a particular application at a particular organization, it doesn’t mean that it stays in the confines of that organization. It’s the Semantic “Web”, as in, World Wide Web. If I have true 5-star linked data then concepts and relationships are resolvable outside of my organization. So if I say prov:Agent subClass foaf:Agent, then I’m saying that about all prov:Agent instances.

What I should be doing is saying that an instance is both a foaf:Agent and a prov:Agent.

myapp:PatrickWest a foaf:Agent,provAgent

In fact, I can pull in the RDF of PatrickWest the foaf:Agent from someplace else, such as the Tetherless World Knowledge Store, because I know that the meaning of foaf:Agent is the same between the use in my app and the TWC use. But if I assert that prov:Agent subClass foafLAgent in my app, then myapp:PatrickWest is not the same as twc:PatrickWest because I’ve added the meaning that PatrickWest is also a prov:Agent.

Yes, mathematically speaking, based on graph theory, I can make that assertion. It’s syntactically correct. But that doesn’t make it valid or right. We should not, can not, modify the meaning of a term in an ontology or namespace that is not ours.

We need to get out of the notion that the Semantic Web is just about software and mathematics. It’s also social, behavioral … has a cognitive component … it MEANS something in a much broader scope, to people as well as machines, all across the Web of Information!

We’re People Too

December 1, 2014

Have you ever been in a restaurant and noticed that your server looks as if they just might be having a tough day? Doing their job, but maybe a little distracted?

Are you the type of person who gets pissed off because they might make a little mistake? Maybe they bring you fries instead of onion rings? Sweet tea instead of unsweetened tea?

Do you yell at your server, make them feel bad? Do you get on their case for every little thing? Do you go in there with the goal of getting something for free? If you order something and don’t like it, not because its cooked wrong or anything, but simply because you just don’t like it, and expect it to be replaced or get it for free?

Your servers are people too. They have lives, husbands, wives, boy friends, girl friends, children, classes to take, trying to get ahead in life, loved ones who depend on them, elders who might need health care, a pet that they love and care for just passed away, and so on and so forth. Just like you and me … They have their own lives that have come together in this one instance. How do you want that encounter to be remembered?

It’s amazing how many people think that they are their servants, not servers. People who don’t take the time to say hey, find out their name, make a nice comment about the way they look, say something nice, thank them for just being there.

When was the last time you asked your server their name? Or at least remembered their name? The last restaurant I went to, Don Pablo’s in West Lafayette, Indiana for me. And her name was Caitlyn. Lovely girl. Thank you Caitlyn for great service, and helping to make my experience with my friends a good one, a memorable one. Thank you.

So I know a few people in the restaurant business, managers or assistant managers, chefs or cooks, servers or hosts. And they have some of the best, and some of the worst, stories.

One story from an assistant manager, has one of his servers coming back into the kitchen in tears because the customer was being so mean, and just couldn’t go back out there on the floor. She was in tears, crying. Why?

So next time you decide to eat out, for whatever reason, you might want to take the time to be nice and have a good experience and a good interaction with probably a really nice person. They are people to, with their own lives, their own ups and downs, their own experiences. So why not be nice to them? As you sow, so shall you reap.

Your perspective related to my perspective

October 11, 2014

Perspective

What a great word. I love that word.

Perspective: “a particular attitude toward or way of regarding something; a point of view.” – Google

So two people see something. Even though they are seeing the same thing, they each have a very unique perspective. Not just a different physical perspective, but also mental and emotional perspective.

Let’s examine the case where a person asks a questions or gives a piece of information to someone else. This is the case that caused me to want to write this little post here.

The person has thought of the question. The question is formulated based on the information in their head, information that they know about, they can even picture things in their mind, have an emotional response to certain pieces of information. They’ve painted a mental picture surrounding this question over a certain period of time.

With all that information that the questioner has at their disposal, they seem to assume that the person/people that they ask the question of have that same exact set of information and reaction, the same mental picture, even the same emotional response. The people being asked the question are hearing the question for the first time and have not had time to paint the picture in their minds, and it definitely won’t be the same picture. The questioner assumes that the question is clear, or the reference is clear, or whatever it is. But they couldn’t be further from the truth.

Okay … try this. Put yourself in everyone else’s shoes. From where they’re sitting, how would you ask the question so that it is clear, concise, and to the point and conveys enough information so that they can deliver an answer that is useful to yourself and to them. And how much time have you put into asking the question. Would it not be prudent to allow them to take some time to formulate an answer?

Same with note taking. Don’t assume that everyone sees your perspective on a note. Include links, include definitions, write out acronyms, include enough information so that everyone has the same information, or can get to that information.

And here’s a nice quote that I brought up with someone recently.

I have a perspective on an issue, you have a perspective on the same issue, and somewhere in the middle is the truth.

ESIP Summer Meeting 2014

August 18, 2014

A little late getting this one out. Busy catching up after the conference to the work I didn’t get to during the conference, then had a week long vacation, and then a week to catch up after vacation to the work I didn’t get done during vacation. And there you have it.

ESIP Summer Meeting 2014 was again, as it was last year, one of my better conferences. Better then AGU for me. The focus is on informatics and all that goes into data science. Actually, someone asked me during ESIP about what I thought Data Science was. Not a definition that I might get from Professor Fox’ Data Science class (though he explains it much better then I could ever), a class that all Computer Science and Earth and Environmental Science students at RPI should take. But what Data Science means to me. I hadn’t thought about it in quite that way. I could definitely have responded to the question as if it was a question asked during class. Data Science is “advancing inductive conduct of science driven by the greater volumes, complexity and heterogeneity of data being made available over the Internet. Data science combines aspects of data management, library science, computer science, and physical science using supporting cyberinfrastructure and information technology. As such it is changing the way all of these disciplines do both their individual and collaborative work.” Man, I just love that description.

But what does it mean to me? I’ve been pondering this question for the past few weeks. To me, being the Principal Software Engineer in the Tetherless World Constellation at Rensselaer Polytechnic Institute, it means leading the way, leading by example, in the development of data management, information technology, and the supporting cyberinfrastructure related to data collected in the pursuit of knowledge about our natural world, the universe, and all that exists. It means talking about, discussing, and learning from the various disciplines in order to better provide them with the tools necessary to do their jobs. And in discussing these various topics, I want to be able to lead by example, by showing people what we’ve done in our own lab to support this ever growing science that is Data Science. And there are so many aspects of data management, so many technical issues to be tackled in data science. Volume, discovery, search, access to and knowledge about, visuzliations, tool support, archiving, licensing, citation, provenance, storage and speedy access to both data and metadata. And I know I didn’t even scratch the surface.

The week for me started on Saturday July 6, traveling up to Copper Mountain, Colorado (I live in Lafayette, Colorado … so a nice drive up the mountains), getting posters printed, and continuing to prepare for a panel discussion, presentations, and so on. Sunday and Monday was the DataONE Users Group. Monday and Tuesday was the OPeNDAP Developers Meeting. Tuesday through Friday was the actual ESIP Summer Meeting 2014.

Presenting our work on OPeNDAP provenance was by far the best part of the week for me. OPeNDAP is an open source project developing software to provide access to, manipulation and transformation of, and transmission of data to users. Okay, I wrote most of the Back-End Server and that’s why I love it. Problem is, no provenance information is captured within the OPeNDAP Hyrax software framework. What would it take to provide this provenance information? What coding changes would need to be developed? And what architectural changes would we need to make in the software stack? So a presentation on Tuesday and a poster on Sunday and Wednesday about our work on OPeNDAP Provenance. Some good coding to be done.

And there is some interest in using the BES directly. I’ve felt for a while that OPeNDAP shouldn’t be in the business of providing a front-end UI. There’s plenty of data portals out there that have their own user interfaces, their own authentication and authorization systems, discovery, search, and browse architecture. All we have to do is provide access to, manipulation and transformation of, the data. And that could be done by a simple web service talking to the BES, not a UI. Just a thought. Of course, we could provide a user interface for those who don’t have one already, with hooks for providing authentication and authorization, saved sessions, discovery of the data, custom catalogs, faceted browsing, server-side functions and visualizations, visualizations provided in the Cloud instead of having to download data and applications to a local machine, and much, much more. I can visualize what could be and I really enjoy working on it. I just hope there’s time to do the work.

So some great collaborative possibilities with folks that I had discussions with regarding OPeNDAP.

And I noticed that this year, at DataONE and ESIP, there’s a greater amount of interest in providing citation, attribution, and provenance information within systems. And I feel that the Tetherless World Constellation is one of the groups at the forefront of this work. TWC had quite a few people involved in the development of the W3C Prov Recommendation, the Prov-O provenance ontology, and ping back. The Ping Back interface is of particular interest to me within provenance. A shout out to Tim Lebo on this, as he’s the person who brought this to the Recommendation. He and I worked (mostly Tim) on providing ping back within an OPeNDAP system. Basically, a web service, or some mechanism, for allowing upstream users to tell downstream data providers about derived products. So a user requests a data product from an OPeNDAP server. The data product retrieved from the OPeNDAP server is then used in the creation of another data product, like a report. The user can then let the OPeNDAP server know that a derived product, the report, was created using the data product returned by OPeNDAP. Ping back! And then the OPeNDAP server could ping back to the data portal that the report was created from data in the portal. And the data portal could ping back to the data provider that the report was generated using data they provided. And so on and so on.

Of course, this leads to the question of how we represent software in our knowledge system? Another set of great discussions at ESIP, DataONE, and OPeNDAP. Damn, so much fun stuff to work on. Anyway, OPeNDAP Hyrax is a piece of software that needs to be represented in the Knowledge Store. The components of Hyrax need to be represented as well, since Hyrax has a modular design, modules provided by other organizations even. So the libraries and dynamically loaded modules in Hyrax need to have a representation in the Knowledge Store. And the modules use other software libraries. Of course the people and organizations that developed these software components would like to be recognized and cited for their good work. Also helps in getting additional funding if software developers can point to systems that use their software and data products generated through the use of their software. For example, that report above was derived from a data product generated by the OPeNDAP Hyrax Software Stack. And I was a leading contributor to the OPeNDAP Hyrax Back-End Server. And I work at the Tetherless World Constellation at Rensselaer Polytechnic Institute with collaborators from OPeNDAP, Inc. The publisher of the Hyrax software is OPenDAP Inc. DOAP (Description Of A Project) is an ontology that could be used to represent software projects. There are already systems that use DOAP, and I believe we’ll start using it within the Tetherless World Constellation to represent our software products.

Ahhh … Linked Data Rules!!!

ToolMatch was the other big project that I discussed during the week, matching datasets to tools that can be used to access, manipulate, transform, analyze and visualize the data. This project has been particularly challenging for me. It took me a while to determine the architecture for this project, the services that we needed to provide. Specifically, developing and using rules within a semantically enabled knowledge store. In this case, writing rules that given the features of a dataset, match them to the capabilities of tools. Also, how do we represent these features within a dataset and the capabilities provided by the tools. This will require a great amount of feedback from tool developers, domain scientists who really understand their data, and the ToolMatch team. This is an aspect of my career that I have not had a lot of experience in. Sure, I’ve discussed requirements and use cases with clients, developed user requirement documents, gotten feedback from users, but utilizing crowd sourcing for the development of a system is quite different. At least, this is how I see it.

So … a HUGE week for me, and a great success for me and the folks who attended from RPI.

I’m really looking forward to continuing my work with DataONE, ESIP, and OPeNDAP.

Going on the Defensive

June 20, 2014

Had an interesting conversation today. The content of the conversation and the person I had the conversation with is unimportant for this post. It turned out to be a good discussion, and I imagine in the near future I’m going to learn a lot about the topic discussed. But first, I had to open up.

You see, the discussion started with me going on the defensive because my position was being attacked and ridiculed. So much so that I felt that I was personally under attack. My experience is that when someone’s position is attacked, they will more then likely go on the defensive, close up, and not be able to listen to the other person’s point of view, let alone change their mind. All the person ends up doing is defending their own position because it’s under attack. The harsher the attack, the more personal it is, the more you end up defending your position instead of opening up to the possibilities and having a nice lively discussion.

We see it all the time in politics to be sure. Instead of having constructive, lively discussions on the issues, the one side goes on the attack causing the other side to go on the defensive. Nothing gets accomplished. And when it turns personal, it becomes even worse. Not only is the position attacked, but the person as well. You’re busy defending your position and yourself.

And it took me a while to realize that I had closed down. Instead of listening to what the other person had to say, I was searching for the right weapon to fend off the attack, even coming up with “facts” to support my position. But once I realized what I was doing I was able to open up, listen to what the other person had to say, request research articles that I might be able to learn more, potentially grow as a human being, learn something new, and potentially change my position.

There is not one single issue out there that I am 100% on. I have a position, and I can discuss my position. But I’m never 100% positive that I am right. I mean, how could I be. For example, if I have my numbers right, 90+% of scientists are 95+% sure that global warming and global climate change is a critical issue and is human caused. But hey, there’s still that ~5% probability that we could be wrong. Highly unlikely, but possible. The world is a big place with many complex systems interacting together to create our world. And we understand such a small part of that interconnectedness. So how could we possibly be 100%. How could I be so absolute in my positions. I try to approach discussions, debates, conversations in such a way that I will speak to and promote my position, but there is a distinct possibility that I could be wrong. And I’ll be the first to admit it.

So let’s have a lively, constructive conversation on the issues, grow in our understanding and the various perspectives, and be open to the possibilities.

DCO Data Science Day 2014

June 14, 2014

Knowledge Representation

One key point that I heard Mark Ghiorso bring up is related to the fact that there were 20 parameters to a data model that he was using, that he needed to make changes to one or more parameters, but did not know/understand what those 20 parameters were, even with all his years of experience. There wasn’t any information that labeled or described the parameters. The knowledge of these parameters was missing, or had to be searched for.

The point that I took from this is that there needs to be a knowledge representation of the models, the parameters that go into the models. And more then that, the information about the people who put together the model, where the data came from that they use in the model, the software and theories used to create the model, and so on. But semantic representation of the 20 parameters would be ideal. Labels, descriptions, citations, and related documents would be examples of concepts that we could be keeping track of. And in this knowledge store could include information about what would happen if one were to modify the parameters.

When I first started working with the Semantic Web here at the Tetherless World Constellation at RPI we used terms like Knowledge Systems, Knowledge Provenance, Knowledge Store, and even Knowledge Information. Using that word Knowledge meant a lot to me. It was more then just creating directed graphs using concepts and properties, linking things together, creating models, and other engineering tasks. To me it’s more about representing knowledge. This knowledge is in people’s minds, text files on their personal computers, blog posts, scripts that they wrote (probably not well documented.) for the most part the knowledge is in their minds.

As I’ve said for some time now, concepts and properties, the relationships between concepts, are all first-class citizens. I want to be able to ask questions about the individuals to be sure, say a particular dataset, a measured parameter in the dataset, the sensor that measured the parameter, the instrument that that sensor is on, the deployment of that instrument, and so on … but I also want to be able to ask questions about the concepts themselves, the properties, the relationships. Tell me about the concept Cruise. What is an instrument? What is a sensor? Tell me about the idea of measuring parameters by a particular sensor. Describe them to me. Share the knowledge.

Unfortunately this requires someone to enter information. That’s right … data entry. Not a lot of people seem to want to do data entry. Far too busy to do that, not as interesting as the cool science and engineering tasks. Or, in some cases for those with large egos, too important to do data entry. Well, nobody is too important for data entry. Should lead by example anyway. Or, in the least, get someone to do your data entry for you. And we all know what is meant by “I’ll do it later.” It probably won’t get done. And sometimes you just gotta enter the information in by hand, no need to try and create some cool application to do it for you. Just start slapping those keys.

Don’t just declare the concepts and relationships, define and describe them. Don’t just create an individual, label it and describe it. Don’t just do the cool science and engineering, let others understand and follow your cool science and engineering. There are curious minds out there thirsty for not just words, but for knowledge.

Data Science … What?

Some of the presentation given at the DCO data science day contained a great deal of information about the specific science that the presenter specialized in. Deep carbon, extreme physics, deep life, deep energy, volcanology, chemistry, biology, whatever. My take from this … they don’t know, or don’t know how to talk about data science. As scientists they understand very well the special area of research in which they participate. But data? That’s okay … I’m a data scientist and I know very little about solar terrestrial science, oceanography, deep carbon, and other sciences. Well, that’s why we organized this event. And of course I could certainly say, being a data scientist, that everyone should know about data science. Well, that’s because all the scientists collect data, need to do something with the data, store the data somewhere, want their data to be used (eventually), cited. They want recognition for their work, and rightfully so. All of that, and more, is data science. Not that a scientist working in the field of Deep Carbon needs to know how to do any of this, necessarily, but a general understanding of what is data science would be beneficial, specifically data management and the development of data management plans.

21st Century Workshop

One of these days we’ll have a conference/workshop that includes live documentation, not printed on paper, in a folder, in a booklet, whatever. But a live document that has links, is clickable, is searchable.

Could find out information about a person, look at their bio, find out where they do their research, information about the organizations, search for content, search for sessions, search for posters, be able to contact researchers of interest, learn more about research, and more and more. The linked data world.

Day 2 … WOW!

On day 2 of the workshop we presented the DCO Data Science platform. This includes the community portal (Drupal), semantically represented information creation and management (VIVO), data storage and management (CKAN). And I learned a lot. Namely, there’s still a lot to do. Our team has done a tremendous amount of work and have done a tremendous job.

Having a specific number of people working with the tools (Drupal about a dozen and VIVO just a handful, and CKAN even less), is one thing. But getting all the scientists at the workshop to start using the tools? That’s a different story.

Lots of exciting research and work to do here. Lots of great features and community tools are on their way!

Follow

Get every new post delivered to your Inbox.

Join 236 other followers