the zoning bylaws. So we consciously and intentionally set the zoning bylaws aside and proceeded to spend significantly more of our time on coming up with the changes that were clearly needed to bring the old bylaws of the town of Amherst into conformity with the new charter. With respect to the zoning bylaws, we perceived in the zoning bylaws as they existed before the charter change, a well integrated internally cross-referenced collection of laws that work together like parts of a great big machine, unlike the general bylaws that were like many small machines each needing repair that didn't mention one didn't mention the other. So this analogy probably gives you an insight into how we looked at it with great trepidation about making the number in scope of changes to it without the careful attention of this body, the planning board, to any substantial changes. So our attentions were limited basically to those fundamental necessary changes dictated and mandated by the charter, mainly referenced to the local boards and officials that exist under the charter that did not exist under the under the old form. So changing select board to town manager or town council as required, those kinds of things had to be done. A few other changes related to the manner in which the body is appointed and you can see in the materials that you had previously been provided, the number of changes that we proposed were relatively few. The most significant one is taking topics that were treated in separate parts of the zoning bylaw and aggregating them into a single location for ease of reference. The previous bylaw committee that worked last summer technically went out of existence when the new charter came into effect and the council then appointed the second bylaw committee, made up of five, not three people, three members of the committee, members of the council, and two or not, myself and Bernie Kubiak. Alyssa Brewer, Pat DeAngelis and Evan Ross are on the committee. And we three have been meeting again to fixate and focus on the general bylaws but attended to the necessity of bringing the zoning bylaws to the council at the earliest opportunity. This could have been done shortly after the council took effect as the governing body. But the council determined that it would be its preference in its wisdom to take more time to look at the bylaws as proposed before you so that the action that is taken had been thoroughly vetted. So this body, the planning board did actually go through this exercise once previously, but one of the provisions of chapter 48 section five is that legislative action on the recommendation and report of the planning board has to occur within 90 days and it did not, obviously. So we're doing, this is a redo, basically the same thing all over again. And what it does is it presents to you a revised copy of the zoning bylaws. And the charter did make provision for the bylaws of the town to continue in full force and effect until and unless changed or modified by the council. If questions arose, ambiguities occurred with respect to how to enforce the old town bylaws for our new form of governance, which is a city form of governments, those matters would not likely happen. And if they did, the court would simply say, well, what is the appropriate correlative body or official to carry that out? So we have been living under that regime since the charter we need to affect. But now is the time to bring ourselves up to current. So the matter before you tonight is to join me in recommending something to the council. We recommended something. The planning board under the statute has to make a report with recommendations to the council on the proposal to substitute this book for that book. And the new book basically has the small collection of changes that I just mentioned to you. The benefit of making this wholesale change is to substitute the fundamental core document, the new baseline document that then sits as material for future changes to the zoning bylaw. In other words, making the changes to the zoning bylaw that you are always thinking about that occur regularly. We want those actions on your part in the council spot to address the provisions of a revised set of zoning bylaw, not piecemeal during various stages of this transformation from the old to the new. So if this goes according to the plan that has been proposed, the council will in July there is a date on which the council has begun the procedures of setting it up as an agenda item to basically repeal the old bylaws and enact or adopt the new bylaws as the zoning bylaws in the town. One final comment. The committee has made a slate of recommendations that should be ongoing interest to you. And that is once we have a revised set of zoning bylaws and a new set of revised general bylaws, the extent to which we could bring a little bit of uniformity into these two forms would be helpful. In the general bylaws, we proposed a whole new organizational framework with a new set of alphanumerics that make it easier to read. It is entirely different than the alphanumerical order of the zoning bylaw, which is in and of itself not a legal problem. It just makes it difficult to read. And we have made some recommendations that may warrant your attention going forward. That is to bring the zoning bylaws of format and structure into greater alignment with the format and structure that we have proposed for the general bylaws. Something to think about. We will talk about it over the next year or two perhaps. But as you think about revisions to the zoning bylaws, our committee has recommended that as one of the items to quality your attention. So, substantively, there is a red line strikeout, track changes version of the new bylaw, the zoning bylaws, which you have had opportunity to review. And if there are any questions about any of those proposed changes, I would be happy to provide whatever answers I can come up with for those. Thank you so much. And if I could just reconfirm the changes that are before us today are the exact same changes that the planning board endorsed in December of 2018? Yes. Thank you for that. Are there further comments, questions from the board? So the matter before us is whether the planning board will recommend to the town council adopting the zoning changes that were described? Seeing no further comment or question, I'd entertain a motion. I'll move that the planning board recommend these changes to the town council. Second that. Moved and seconded. Is there any further discussion? If not, all in favor. And that's unanimous. Thank you for your time. Thank you. All right. The next, yes. I wanted to ask you a question of Mr. Richie. If he would tell me at what point that planning board needs to have its report ready for town council, if he knows that. Could you please use the microphone? Thank you so much. The sooner the better. The legal function of this is to equip the council with the legal authority to act. In the absence of a report with recommendations from you, it cannot do so. So the minute before they convene is legal. I'd suggest that you do it earlier than that. But there is no specified timeline in the statute. Or the charter. Thanks again. Okay. All right. So the next item on our agenda would be public hearing on planning board rules and regulations. The gentleman in the audience, are you here for a particular item? Okay. So you're not associated with the presentation material here. All right. Thank you for that. So we're just going to proceed with the agenda now. I think we'll be revisiting or visiting that presentation material a little bit later. So this next item is public hearing on planning board rules and regulations. This is PBR 1-19 continued from March 20, 2019 and May 29, 2019 to review, update and amend the planning board rules and regulations to bring them into conformance with the Amherst Home Rule Charter as adopted March 27, 2018. And so we have some material in our packets. This was discussed at the beginning of March 20, 2019. So we're going to move on to prior meetings. I would, yes, Chris. I just wanted to make a correction to the agenda. We discovered after we published it that the meeting of the planning board was actually April 17th rather than March 20th. So that's just to know this meeting. All right. Thank you for that clarification. I would add for informational purposes that, there are two places in Amherst's ordinances which discuss the planning board voting requirements. And what we're discussing now is the voting requirements as laid out in the planning board rules and regulations, while the other location where these appear is in the zoning bylaw. The zoning subcommittee did meet this afternoon and reviewed zoning amendments, which it will be bringing to the planning board for its consideration. And the zoning subcommittee did recommend that at some point the planning board recommend to the town council, that the town council adopt the changes as described by Attorney Joel Bard in his email, which would change the wording of the voting requirements such that the concurring vote of at least four members of the planning board is required for site plan review applications. So the zoning issue is not at hand right now. What's at hand is the planning board rules and regulations and a potential approach to this as discussed by the board is to simply reference the zoning bylaw and point to that for the voting requirements. And as we know, the voting requirements and the zoning bylaw currently require a two-thirds vote or at least five members of the board. So having provided that update, are there other comments, questions on this issue from board members? Michael? Yes. I'd like to say that I appreciate the information that has been circulated in the last few days concerning the voting requirements statewide and particularly concerning the Governor's bill, which will to promote additional residential development and development of all kinds. And it's an assumption that a majority vote will be required for almost all site plan reviews in connection with these new approaches to development. I intend to continue to support the notion of a two-thirds majority, a two-thirds vote for site plan review at our level, largely because while I support strongly a number of the initiatives that the Governor's bill is proposing, particularly the arrangements for infill development and the 40R proposals, I think that the bill, as it's written, and I haven't read the bill, but I've read a lot of the information about it, suggests to me that it is overwhelmingly skewed toward the interests of developers. And I believe that it should be equally, I believe that the interests of current residents of towns and particularly in this case of Amherst should have more authority in determining the nature of the towns that the town that we live in. I am concerned that since that what I believe to be too large influence on the part of the development community is skewing the way in which the laws are intended to be enforced. That seems to me to be clear from all of the material that I've been reading about, reading prepared by the state agencies which have been circulated to us in the last few days. So, although I realize that I am a minority on this board, I intend to vote that way and I wanted to record my sense that this is a vote more against the mandate from the bill that is about to be voted on in the state legislature, whether it makes it through or not, I don't know. But the vote is to maintain a kind of home rule approach to this issue rather than to submit to state regulation before such state regulation has actually occurred. Thanks for that, Jack. Mike, I'm wondering your reference to being skewed to developers. Where are you getting that from? Because I think that the intent was that Massachusetts has an economy that needs to sustain. If there's not development or housing, people aren't going to live in Massachusetts. There's an analogy where if Amherst can't provide housing, we're losing residents, potential families. It seems like it's a partnership with developers in some sense, I think, and I'm just wondering what your thoughts are about developers. I think there's some evil connotation that you're referring to. I'm not sure. And if I could just cut in for just one minute here. I did review the proceedings at the last meeting and I just want to gain a better understanding of what the options here on the table are. My understanding is that the proposal is to reference the zoning by-law in the planning board rules and regulations as the standard for the voting requirements. So my point is that this conversation can and should happen, but this might not be the exact moment to have it unless there is someone that's proposing that we do something different with the planning board rules and regulations at this time. Because if we do want to pursue the approach that has been recommended by someone on this board, some staff, that we revise the voting requirements, that needs to happen at the zoning by-law level. And that needs to be a future conversation. As I mentioned, there was discussion at the zoning subcommittee today about that. So we could discuss that under the zoning section of our agenda. We could make it an agenda item for a future meeting. Is there anyone that is proposing we do something different with the planning board rules and regulations than was described? Christine? I'm proposing that we go with what legal counsel suggested and what, you know, reading through all this and just it's not about following the rules, you know, from the governor or new bill. You know, when I read about what is a site plan review and it's by-right, it's not about developers and how much control they or we have and whether or not they can or can't bill. The whole process of a site plan review is by-right. And that's why the usual is simple majority. So I propose and the following is that we still have to follow the zoning by-law until that is changed. But by changing our rules and regs, it sets a tone to prepare for some of this smart growth building and changing our zoning and such so that it can be better for Amherst and we can fix some of the problem zoning. So I think we should make a change where we can make our change and send that message to the council so that they can start to think about it. And as this bill and other things and as you look to other towns and look to our own building, then the zoning by-law can be changed down the road. Because even if we change our rules and regs, it doesn't enact now. It's just a start to something better. Chris? I think it's going to be confusing to have the planning boards rules and regulations differ from the zoning by-law. I think you'd be better off having both of them be aligned with each other whichever way it goes. I tend to agree with that and I think we can set the tone for what we want to recommend in terms of the zoning by-law when we have that discussion. I don't think we're quite there yet, but if others are really wanting to explore that option, we can do that further at this time. Are there further comments, discussion or emotion? Michael? Yeah, I respond to what Jack said a minute ago. I agree that this is a partnership. The developers are an important part of building houses, maybe the most important part. They put up the money, they find the constituents and they make it happen. No question about that. I am concerned that whatever development occurs, have the support of a significant body of the town residents. That's where the partnership comes in. It seems to me that the likelihood of large-scale town support is more likely if a large, not a supermajority, but a two-thirds majority of voting on major site plans is maintained. It seems to me that with the appropriate wording and development of requirements that will be part of whatever new zoning by-law we end up approving, as long as those criteria are carefully written and are appropriate to the town's interests and are reasonable to follow for a developer, that's where we want to end up. Not just opening the door to, quote, by-right, unquote, developing without kind of having reasonable requirements which are part of the by-right process. By-right is not you can do anything you want to. By-right is you can do what needs to be done within the context of the zoning by-law. And that's where I think we need to be. And that's where I would hope that a two-thirds majority would get us to the point where we are all in reasonable agreement with whatever we end up doing. So I still favor an approach where we resolve this immediate issue by amending the rules and regulations to say that they'll correspond when it comes to voting requirements with the zoning by-law. Since the conversation has started about what we might do with the zoning by-law recommendation, I would say that one of my main concerns about the current situation we're in, where SPR has become more difficult than it otherwise would have been under our prior form of government because of the way that the math breaks down on the voting requirements, we want a range of tools that we use to permit uses in town. And if we have by-rights, we have SPR and we have a special permit, the nature of these changes means that the site plan review applications have been given a higher threshold for passing, and so our range of uses of permitting paths has diminished. And we talk about development when we're talking about site plan reviews, but I think we've largely overlooked what actual uses are regulated by site plan review in the town and what uses would be made more difficult. Medical offices, grocers, bakeries, delis, tailors, governmental offices, reservoirs, other governmental uses, convenience stores, philanthropic or charitable medical or residential facilities, public parks, churches, these are a range of uses that I don't think we necessarily want to be making more difficult to occur in the town. And so I think that if there are certain uses that are deemed needing more regulation, and I can say that the mixed use building category, which is currently site plan review has been a topic of much discussion, we should have that discussion. I don't think we should have a discussion about making it difficult across the board for the uses such as the one I described. So that's my line of thinking when it came to the zoning subcommittee's recommendation today, and I'll revisit and expand on it when we have that discussion. Are there further comments, questions, or a motion? I don't disagree with that at all. I think that's, you've hit on exactly what the issue is, which is the mixed use building. And those are the, that's the concern that I think will be the central issue in terms of discussion relative to these zoning changes we want to make. And we got to get that right. I think I absolutely agree with that. I think there's many others that would like to see that section of the bylaw revised. I have grave concerns about modifying all SPR uses and how easily or not that can be achieved just because there's a concern with one category. I think we should address that one category. And that has been a priority of the zoning subcommittee. It was mentioned as a priority of some members of the CRC when the zoning subcommittee met with them recently. So I think it's a high priority for the town in general. Sorry. So are you suggesting that we hold on, hold off from voting on the issue right now until the zoning subcommittee has had time to deliberate further or? I'm suggesting we resolve the planning board rules and regulations issue, which is the topic of this hearing now by amending them to say that the voting requirements shall be in keeping with the zoning bylaw. Jack? I also feel like you put your finger on that particular issue. So, well said. And I agree with what you said. Michael? I will move that we resolve the issue. You're reading about keeping the rules and regulations referencing the zoning bylaw. I think that's exact. I think that's the way we should go for now. And I would so move. Does that motion include adopting the changes relative to the other issue, which is the, I believe it's the cost of, sorry, Chris? It's in reference to third party review of projects and what the appeal mechanism would be. And the town attorney suggested that the appeal mechanism should be to the town council rather than to the town manager. So those are the two matters before us. Would that motion include those changes as well? I did not intend it to, but it certainly could. Where is that, Chris? I think I sent you his email and let me find it in the text. It's on page 11 under administrative appeals. Initially when we had gone through this and made suggestions about how the wording should change to comport with the charter, we had suggested that the town manager would be the entity that would decide on an appeal if, say, an applicant did not like the third party reviewer or had a problem with the amount that they were charging or something like that and they wanted to appeal it. We had suggested that it be to the town manager and our town attorney has said that it would be better going to the town council because they could act as a quasi-judicial body and the town manager cannot act as a quasi-judicial body. So that's as it is redlined in the, on page 11 in our current. That's correct. Yeah, I would definitely include that. Okay. I have a motion and a second from Pahri. Thank you. Any further discussion? If not, all in favor. All opposed. All abstaining. All right. So that passes five to one. All right. So we'll move on to the next item on the agenda, which is the zoning subcommittee report. The zoning subcommittee had a very productive meeting with the community resources committee of the town council a few weeks back. And then the zoning subcommittee also met earlier today. And as mentioned, zoning subcommittee is working on three zoning articles. And today it's made recommendations to the planning board on all three of them, those being the supplemental dwelling units article, the marijuana buffer zones article and the article just discussed, which would be a revision to the voting requirements for site plan review. And the zoning subcommittee has recommended that the planning board take town council's advice and recommend that wording, which is that any site plan review applications will require the concurring vote of at least four members of the planning board, that the planning board recommend that change to the town council. So I believe that we have only one of these articles in final form in our packets, which would be the supplemental dwelling units. The planning board would need to hold the public hearing on any of these that it's going to recommend to the town council. And that's an action that we could consider taking at a future meeting. So the zoning subcommittee would look for responses, reactions, conversation from and with the planning board about these three articles, which we may post public hearings for soon. Chris? I don't think that we put those articles in the planning board packets, because I wasn't sure that they were ready. But now that you recommended them, I would put them in the next packet. Can we set a date for the public hearings prior to our receiving the packets? Chris? I think it would be best if we let the zoning bylaw go through its paces with the town council before we propose, before we hold public hearings or propose any changes to the zoning bylaw, because we want to have a base level that then we can amend. So I understand and partially agree with that approach. I also recognize that when we made the same action in December that we made tonight, we may have thought that that would be resolved in short order. And it took a little bit longer than expected. So I think an approach could be a hybrid where the planning board makes its approach and recommendation, but perhaps with a sensitivity to the timeline of the town council as to when we actually deliver and ask for any sort of action from them. I would hesitate to wait to have this discussion amongst ourselves until the changes that we discussed earlier, the adoption of the new bylaw goes into effect. Chris? So with that in mind, you could hold the public hearing in July. There's a July 3rd date and July 17th date. Or you could hold the public hearing in August. There's an August 7th date. So do you have a preference about either of those? Well, we have a larger quorum available on the July 17th than we do on August 7th. So maybe July 17th would be a better choice. Shall I notice the public hearings for July 17th? Yes, I'd say so. Any further discussion of the zoning subcommittee report? Any public comments on the zoning subcommittee report? Any other planning and zoning issues? All right, moving on to item six, old business topics not reasonably anticipated. Are there any such items? I don't believe so. Item seven, new business 7a, signing of letters to registry of deeds and land court recorder regarding signatures of planning board officers. Chris? So this is something I've been meaning to do for a long time and it came to a head last time when Ms. Gray Mullen signed A&Rs and it really jolted me into thinking that we better get these letters signed. So the idea is that you authorize the officers of your board and currently the officers are Mr. Stutzman is the chair, Ms. Gray Mullen is the vice chair and Mr. Jempsich is the clerk. You authorize them to sign any documents related to subdivision and these letters go to the registry of deeds and to the land court and obviously if your officers change we'll need to do this again but we really should have done this probably six months ago and I apologize for not taking care of it earlier. And so those letters are here this evening? So I'll pass those letters along to your signatures and again there are two of them. All right thank you. Are there any new business topics not reasonably anticipated? Would this be a good opportunity for me to report on the meeting last night? Yes please. So last night we had a very lively meeting. It was attended by probably about 45 people. It was very good. It was at the Woodbury room of the library and the topic was chapter 40R which is commonly known as the smart growth program. And what the smart growth program is is it allows a city or town to develop an overlay zoning district that allows denser development in exchange for providing either 20% or 25% affordable units. So in some ways it mimics a 40B project which goes before the zoning board of appeals but in the 40R case the town actually has a lot more control over what happens. In the 40B case the developer comes in with a proposal and the town reacts to it whereas in the case of a 40R the town decides what it wants to have where it wants to have it and it can set up design guidelines to control what is built. It can also if you want to use the phrase form-based code that can be used as well and you determine how many units you want to allow per acre or per whatever size of your district is and then give parameters for the type of building that you want whether it's a mixed use building or whether it's all housing and you also you need to find a location for this overlay district. You can have multiple overlay districts. I think Northampton has at least two if not more. Belmont has one very small one and only has 18 units but it's a start and we don't know if they're going to go any further with it but in any event there are places that are being considered for a 40R development and I've given you each a map showing three potential places so after a presentation by our consultants Karen Sonneberg and David Eisen we gathered in small groups and looked at places in town that might be suitable for creating a 40R district. Some of the criteria that would be used are that the district is already a mixed-use neighborhood that it has public transportation and public infrastructure that it's big enough to make this reasonable that apartments are by special permit if not by site plan review that there's already a build-out capacity for the site. There are some outdoor amenities that the owner of the property is patient and isn't eager to sell immediately and then there are some other criteria as well. So the three places that were proposed by the consultants in consultation with staff were town center and it was actually a pretty big area of town center you can see that in the middle of the map that you have in front of you. North Amherst and again it's a pretty big area that would have this overlay zoning district on it and the Pomeray village area which is Pomeray Lane, West Pomeray Lane and Route 116 or West Street going through South Amherst. All of those three areas are already developed they already have access to infrastructure and utilities they have transportation that the some of them have a lot of open space which wouldn't necessarily be developed but these are overlay districts they sit over the existing zoning so you don't lose your ability to develop property based on existing zoning it just gives you an opportunity to do a different type of development that might be more suited to the town. So we had a great discussion many more places were actually not many more but several more places were suggested one was University Drive one was the Atkins Corner area and one was East Amherst in the vicinity of the Florence Savings Bank on College Street so those are all under consideration those are actually places that the town staff had talked to the consultant about earlier. So people came up with reasons why any of these places would be good places and why they wouldn't be and rank them and it was a very lively discussion and Miss Graham Mullen and Mr. Burt Whistle were already all also there so they may have their own point of view to share with you but I thought it was a really good start and the next time we look at this we're really going to be zeroing in on which area do we actually want to designate as a 40-hour district and then starting to talk about design guidelines and form-based code. Thanks so much for that Chris. Is there a next meeting scheduled or tentatively scheduled as to when that could happen. There's no next meeting scheduled we're going to have to wrestle with summer in Amherst and the fact that people tend to go away and how much time will it take the consultants to get their work together so I think the idea is the next thing we're going to do is meet with them staff is going to meet with them or have a phone call with them and kind of talk about what are next steps and where do we go from here but we'll keep you updated about when the next meeting will be. Great thank you was anyone who is there like to like to comment all right thanks so much so our next item is eight any form A&R subdivision applications. No A&Rs. Okay upcoming ZBA applications. Ms. Field Sadler is going to report on that. Yes please. I will. I want to let you know that the herbology group went in front of the ZBA earlier this evening and they were requesting two special permits one for recreational marijuana and one as an off-site medical marijuana dispensary and both of those special permits were approved and on June 13th Echo Hill Townhouse Condominium Trust is going to go before the ZBA requesting a de minimis determination for a change to condition five of their special permit in their hopes to improve sidewalks and lighting in the area of Bedford and Chadwick courts and the other new one is it will go June 13th and that is there is I'm just going to see them out 1530 South East Street there is an existing non-conforming lot that they are proposing to allow a single family home on the dimensions are okay and meet the requirements of the bylaw except for the building all right thank you are there upcoming SPP SPRS UB applications I think I've told you about some of these already the town dog park has already been submitted by the town and that's going to be a very exciting place when it gets built over on Belcher Town Road and then we have Amir Mikchi who's still interested in proposing a mixed use building on Southeast Street he's very close to submitting his application so I'm expecting that at any time and we have Amherst Media coming back on July 17th great if I could ask as reminded by Amir Mikchi's project about the status of that tree hearing Chris so it's still a little unclear what's going to happen the town manager I believe is wrestling with whether he or town council should take on that decision making and it's I think that the recommendation that we've received from the town attorney leans towards town council but that hasn't been completely decided yet so wait and see all right thanks again planning board committee and liaison reports PVPC Jack um there is nothing to report except for the you know meeting uh next week next Thursday what's the time of that five five to eight thirty okay I think we as a board received an invitation to that so I'm gonna did you get your invitation I received an invitation I think I was the only one it was addressed to the chair of the planning board and we discussed it last time but the time was not noted on the invitation so 5 p.m. next Thursday the 13th and it's at the following street of the arts trust yes excellent all right CPAC no report ag commission all right design review board design review board has not met since the previous planning board meeting same as true for the affordable housing trust zoning subcommittee we've already discussed and downtown parking working group has not met all right no report of chair any report of staff no report of staff thank you all right then we're adjourned thanks everyone we could talk about the schedule it appears that we wanted to get a handle on when people were available so July 17th it looks like oh excuse me Ms. Reahi just said she wouldn't be there on July 17th so we're going to cross her name off this is a very useful thing and are you still here for the summer I was asked to complete my availability and I did so so that would affect the number so I need to find out from town council whether Greg can keep sitting on emmerced media I'm hoping he can because in the past it's always been true that if you're on a case you can continue till the end of the case so without him that would be a difficult case to manage and yeah I think what we're going to find is that having seven members is going to be a challenge it's going to be difficult to maintain our quorums so but we're going to do our best and this is a start to try to get you know some sense of when people are going to be here or not so Ms. Riahi just told me she's not going to be here on the 17th so that means we only have one, two, three, four members and if Mr. Stutzman can sit then we have five members to sit on emmerced media and the way the current voting requirement is all five of you would have to vote yes to approve that project so you want to talk about any other dates here I'm thinking maybe you won't hold a meeting on Wednesday August 21st because it looks like not many people are going to be here and I'm not sure if you're going to have any business to take care of on Wednesday July 3rd so that may be a date that you could cancel but in the meantime you don't have to decide that tonight we can decide that later that is true yes you want to change that July 3rd emmerced media has to be on the 17th because that's when they were continued to so six on July 3rd not even if Greg is there or not whether he's there or not sorry you're saying the public hearing for the no emmerced media is the 17th it's got to be the 17th because you continued it to the 17th so the thing that could move to the 3rd would be zoning if you chose to do that so that what you'd like to do yes okay


I've got, what, five minutes, so this is going to be pretty quick. I'm only going to talk about one of the data capture projects that we've got running at Melbourne because at the moment we've only got one data capture project running at Melbourne. So I thought the best, we've got a whole lot of others that are about to start, but I thought the best thing to do is actually talk about the one that we've been running for all of this year and really just focus on some of the things that we've learned from that project. The project was entitled, this is the title we gave to Anne's. It was Enhanced Metadata Capture for Sustainable Management Sharing and Reuse of APN Histopathology Research Data. Now what does that all mean? APN stands for the Australian Phenomics Network. I'll get to this, my only slide for the day, I'll get to this shortly and that sort of explains the intricacies in which we're working. The major thing I really want to do is just to get to that, what it is that we've, the way we've gone about the project and the sort of things that we've learned through that process and how we're going to be using those learnings in thinking about the data capture projects that we're going to be rolling out over the next 18 months or so, 12 to 18 months. Just to mention that a major partner in this project for us has been Versi and it's been important to have another view and another form of expertise and other set of skills to be able to bring into a project like this. Keep an eye on the time. In 2007 Oliver Smithies, who was at the Department of Pathology and Laboratory Medicine at University of North Carolina won a Nobel Prize. That's his Nobel lecture turning pages and I recommend that you go to Google and look this up, was a combination of, his lecture and his Nobel Prize was a combination of 60 years in the lab and 130 dense and comprehensive laboratory notebooks which he kept religiously. In his, in turning the pages, he actually, his overheads for his talk were all images of his laboratory notebooks which were dense with data. Probably the lesson from that is that he is probably the only person that will could actually understand that data but it is actually an incredibly valuable archival source for him but also for the people that came to do the work that led to him getting a Nobel Prize. His part of his work over that 60 years was on gene targeting technologies that enable you to do specific things with specific genes and a lot of that was basically working in animals and other cellular things. When that was combined in around about 1985 with the emerging embryonic stem cell capability that it also turned up which was done independently which basically means that yet they could grow mice as an example from singular cells. Basically when you brought gene targeting and an embryonic stem cells together it meant you could make animal models of human genetic diseases so that was about 1985. It was quite a long time ago. That work was published in 1987 and by 1988 through collaborations with others they actually had a general approach for producing mice of any desired genotype. Now this was a fundamental breakthrough and by 1991 there was the first mouse model of cystic fibrosis. Now basically what this means is that you can reliably take a specific form of mouse. You can alter it. You can produce a mouse with a disease that mimics a human disease and then you can run tests, drugs and other things against that mouse to see what sort of effect it has. Now that's a whole area of medical research that's blossomed over the last 20 years and at the University of Melbourne and essentially that research area is captured in the Australian Phenomics Network, this community that starts to bring this sort of data together. At the University of Melbourne we have a service that is part of that Phenomics and mouse modeling network which is the histopathology group. Basically what they do is a researcher will come to them and say okay from the people who provide the mice with particular genetic problems they say okay we've got this mouse, we've run these tests, we now need to have the mice killed, cut up and analyse for their pathology. So this is what the Histopathology Service does at Melbourne and this is a service that has evolved probably over the last sort of 10, 5 to 10 years. It had evolved in a way that was a sort of a bit manual, it was sort of trying to figure out exactly how the workflow processes were going to work so there were bits of manual handling, bits of technology that were used but it was all fairly clunky and within the framework that had emerged nationally which is pod the Phenomics Ontology Database project which is an interest funded or neat funded activity. They were looking at how what was happening in hops at the University of Melbourne in that pathology service could lead to the data about these mice flowing into the national framework in a much more systematic way. And so the project, the data capture project was, I mean it's a really good model because we had an established workflow, we had data that was being collected that included digital data plus also slides and samples and other things that one minute. So we had to look at how we could bring productivity gains into that point. And what we've had is a modeller and some technology building, I suppose the key learning was that there are many variables in the model and the most important work we've been doing is actually modeling the true work environment and all the variables that are involved so that we can deal, whatever we build, we'll actually be able to deal with all of the variables that we have seen from the past but we can anticipate will be in the future so that the model we build about the data flow does not constrain or constrict unnaturally the work that has to be done. For example, sort of things that occur in double blind trials. So anyway we've made a lot of progress and but that's all I want to say. I'm directing the data capture projects at Monash University with the funding that we've been kind of given by and so we've actually got eight sub projects and what I'm hoping to do in this session is give you in a background in our methodologies that were adopted at Monash and also like a whirlwind tour of each of the eight sub projects so it's going to be pretty quick. So talking about methodologies and that the things that are important to us at Monash is that first of all the solutions got to be researcher driven. Also agile software development methodologies we're finding that the old waterfall technique just doesn't work. This idea of analyzing at the front, having a good idea of what they want and then sort of building it and then delivering at the end. You really have to build it as you go. Researchers work in a very different way from standard businesses and that. Also working in the research disciplines community so if they've already got something in their environment and some of the products I'm talking about later on that's part of their environment. We have to work in with that. We can't go and build a separate solution that's very different that's got to fit in with their current and emerging sort of environment. Also collaboration with other institutions getting the ideas out that we've actually got here at Monash. We already started to do that with people in Versi and the Synchron and we'll talk about that in a bit in a minute. Down the bottom it's already sort of starting to come up but the basic sort of fundamentals in each of our sub projects is first of all as I said working in with the environment select the appropriate data management solution whatever that might be. One of the solutions that we've got we're working with a product called Amiro as a data management solution. With the funding that we've got we really can't build a separate data management solution for each particular project. Building the appropriate infrastructure and integrating that in with the data management solution. Also building the reuse infrastructure and also adding that in and then finally linking it up to ANS. So that's very fundamental to each of the sub projects I'll talk about now. Climate and weather it's sort of looking at modelling or actually simulating rainfall in the urban area and why this group wants to do it at the moment is their particular output is that they actually want to help with the design and adoption of stormwater harvesting as you can sort of see in the far diagram. That's one example of stormwater harvesting. So they've got all of these huge simulations some of them are taking quite some time to do and they want to put that data out and make it available to other researchers. So that's sort of coming out of our climate and weather. Down the bottom you can sort of see what the emerging sort of solution net CDF is sort of coming out as a very important aspect. As I said walking working in with the researchers and what's important to them and Simon you who's in the audience and I sort of invite you to talk to him later on about this if you're interested. He's basically started to develop a solution along with our senior business analyst Nigel Holgate in that particular area. We talk about that more later. Ecosystems measurements. What this is about is that around Australia we've got a number of these towers that are basically being built or established. They collect measurements in waterfall as well as carbon and the idea is to sort of monitor that over time. Now these have been going for quite some time. They're part of the Ausflux network which is part of a broader flux network around the world. With funding that's come out of turn which is an English course funded initiative. The Ausflux project has actually pushed forward but they're sort of missing that data management solution. What we're actually helping them do is helping them with the capture side lead into a data management solution which in their case is a number of different databases and then making that available to others around the world through ANS and through other initiatives. Molecular biology. This is probably a lot of these projects some of them are actually quite progressed now. This one is one that's sort of doing quite well and we're hoping the others will also do as well as this one. What it is it's an initiative where we've basically gone and worked with Vercie and people at the Australian Syncnetron and continuing to do work in that particular space. What's happening there is in the past our researchers would actually run an experiment at Syncnetron, they'd get their large hard drive, they'd go the Syncnetron, they'd then sort of come back to Monash whichever are in the institution and then access their data there. The problem is that actually find that with these hard drives and that they keep using them over and over again so their reliability would lose out and you know if you've gone and grown this crystal which could take a quite a bit of time in itself and then you basically do the experiment which doesn't take long now on the Syncnetron, it'd be quite a major setback to lose that data. So with this solution which was basically turned on very early this year and is now sort of spreading its wings to other institutions. We know that La Trobe has got an instance of it and I think the University of Melbourne is either establishing it or was almost there. Once again what we're trying to do is make it easy for the data capture side, making it easy for the management side, using building on what the work we've done in my TARDIS which is a relatively generic solution. At the moment it's been applied to molecular biology but it actually can be spread to other different areas. We're sort of finding with other groups such as RMIT. Multimedia collections and Arrow. So what this is about is we've got this large repository at Monash, the Arrow digital repository and it's quite capable of actually storing and providing this research data and we're providing another means of actually making this research data available to it. We started this about two or three years ago with molecular biology when we're looking at protein crystallography, trying to make their data available through Arrow. What this is saying is there's a lot of simple data out there that we can really just clean up on and make a very generic way of putting it in. The photos we're seeing are actually from Kashgar, a photographer, John Gollings wants to make his collection available. It's quite a valuable set of research data. So that's really adding quite a lot there and we can, as far as we're concerned, it's got a lot of more generic uses than just the Kashgar collection. History of adoption, what it's about is we've got this researcher at Monash University, Marion Quarterly, and she wants to collect all these stories about people, how they were sort of adopted and make them available. But in the past, the way they would have collected these stories was that actually get people that actually hire some people, that go out and actually collect these stories from people in the community, wouldn't necessarily be a large or diverse sort of sample and then that sort of provide those particular stories. Now through the internet they can actually capture more of those stories. So what we're using is technologies such as Confluence to help them capture those stories and Confluence is good because it's done through the Faculty of Arts. They've got a lot of experience there with Confluence now and they can actually do a lot of the moulding of the product that we actually give them. So we're sort of providing them really with the underlying infrastructure and letting them mould and style the solution they actually use. So we're capturing those stories from the community. We're making, we're actually storing them in MediaFlex at the moment because MediaFlex gives us the ability of appropriate connections with metadata and then we're sort of making it available once again to the community and to researchers through Confluence. And then the intention is to actually finally connect up to Anne's. Two minutes? Yeah, thanks. Interferome. What this is about is a researcher in oncology who's quite well known, Professor Paul Herzog. He's actually trying to collect all of these interferones. Interferones are proteins that actually help with generating genes that are important for the immune system. And so what he's got is he's got this interferome database and he's looking for us to give him help to actually capture more information from the community. At the moment they're entering a lot of data themselves. I think they've got arenas here. Is it 40 that they've got at the moment? Is that right? Something like that. But they'd like the community to contribute a lot more. And so Paul's basically making these connections in with other researchers and he's telling them about the solution down the bottom right hand corner sort of showing these extra areas where we're sort of hoping to get extra bits of this data put into our warehouse. The data warehouse school base but interferomes sort of looking more at the interferone collection. And as you can probably see there's others. We've got to work in with the environment. As Gavin had you can see GO, another system that's very common in this particular space. So interferomes getting established there and also hooking it up with ANS. That's what this project's pretty much about and making those particular bits of information available to the broader community. Microscopy collects a whole lot of these TIFF images in that and you can sort of see a sample of them in the top left hand corner. And what they're finding is that it's very difficult to manage the research data. All of their students in that are basically collecting a whole lot of different images and it's very hard for them to find stuff. The other thing is that they can't actually search across the whole collection. And what they'd really like is to have this holistic sort of collection with the appropriate bits of metadata and they see a particular abnormality in say a cell. They can sort of find out where else it's happened, data minor, and find out where else it's happened and then sort of lead back one minute or less. And so once again a very sort of exciting sort of project working in with the Amiro system that's coming out of OME, the open microscopy environment. And you can sort of see an example of that down in the corner. So modification of that to suit the what we want to do here. Working in with capturing some of the capture stuff is having happening automatically. So Vishya Garak, who's actually in the second row, is actually doing some interesting work there out of David Abramson's group to try and automate that and make it very easy to collect lots of data for the researcher. The final project, each of the other ones is sort of looking at very discipline specific projects. We wanted something that would sort of focus on the long tail of researchers and could be moved from one environment to one institution to another. And so this is sort of our like that project that's really targeting, you know, it's sort of building this environment that we can easily share with other institutions. And our code name for it at the moment and it may change over time is I share my research. And what it's sort of looking at is taking the work we've done in my TARDIS and actually tailoring it and making it available to other research institutions. So if they don't have a discipline specific solution at the moment, they can actually apply this. And finally, the team most of them are here today, except for Ray who's unfortunately sick. And I'll leave it at that. Thanks very much. My name is Oli. I'm from Versi from the Victorian Research Saatchi Initiative. And I would like to talk about the meta data capturing project we are doing at Australian Syncrotron and then late at Anstow. So this project, the MECAD project, is a joint venture between the Australian Syncrotron and Anstow in Sydney. Okay, so the MECAD project is a joint venture between the Australian Syncrotron and Anstow. It's aimed to improve the meta data management of all the experimental data captured at the Syncrotron and Anstow. Syncrotron is a light source providing X-rays in a various range of wavelengths, having different experiments sitting there at the moment, nine beam lines, producing two terabytes of raw data a year. And at Anstow, there's seven experiments using neutrons. So we want to provide services to researchers to manage better their experimental data and give an opportunity for data search and raw data access to a broader community. We are focusing on developing an extensible search with web-based catalog for these data in an ARCS compatible data repository and also facilitate their harvesting by the Australian research data comments of public meta data. The aim is to increase visibility and the value of these experimental data by improving scientists' own data and meta data management providing a more efficient use of the beam time by re-rows of already existing research data and also enable other research groups to validate already published results by reproducing their experiments. So we have a few challenges to face here, mostly technical, a little bit of human engineering as well. So first of all, we need to design a standardized and automated workflow within the research of the scientists. So the meta data is captured as the data comes out of the beam lines. We need to interface this to the control systems. Once the data is captured and stored, we have several access controls. We have to have several access controls in place so to make sure that the data is not public before the publication is out and also to meet the requirement of the facilitated data is public at least after three years. No, after three years has been collected. We have to have data management tools in place for versioning of the data sets and derived data sets to handle annotations. And we need to create persistent data handles so in case that data is moved to a different storage or just to a different location, the handles point to the new location. And we need to provide download facilities to the raw data which is linked to the meta data. All this needs to be interfaced with the already existing infrastructure of the facility. So there's a proposal and booking database, for example, and a local storage which we need to interface. And as base technology for the meta data catalog, TARDIS has been chosen. TARDIS is a federated diffraction image publication repository developed at Monash by Steve Andrew Larkis. At all. And it's archiving and sharing x-ray diffraction images at the moment from the protein crystallography community here within Australia. And we plan to adapt this to all other experiments conducted at the Australian Synchrotron. It uses the core scientific meta data soft schema to describe experiments. And it's already deployed as the protein crystallography beam line at the Synchrotron. And as the data is created at the SYNC, the meta data is collected within the facility. And Anthony just mentioned this. It allows the researchers to shift through their files and associated meta data and download then parts or the entire experiment to their institution or personal hard drive. And it's already interfaced with the proposal and booking database of the facility. So it collects all the information from the different databases and the raw data and the meta data and puts them together and provides them to the product community. TARDIS itself is based on Django which is an open source of the application framework in in Pison which aims to ease the creation of complex database driven websites. Yeah, that's already it. Thanks, Marvin. I just should mention that unfortunately physics couldn't make it today so I'm filling in. The e-research office is managing the projects but we don't actually do them. So I'm going to have to be very careful about what I say because I have no idea what I'm talking about. Never mind. The Centre for Materials and Surface Science at La Trobe is a major laboratory hosting a lot of equipment. The equipment there, I mean we have very similar issues with the synchrotron that the equipment produces a hell of a lot of data and it has to be managed and there's a lot of people involved in using that equipment. Lots of universities and other organisations. So the problems are similar in that we have data management, data access issues, there are legal issues and the data have to be curated so that it can be usable by other people which is what ANZ is here for. So it's a lovely overlap with the requirements of ANZ. The biggest problem that they've found is in dealing with the data from the moment of creation to some endpoint which up till now is typically a CD or a DVD or something like that. And that pipeline has a whole series of steps to it which is not just analysis but adding a metadata trying to understand the proprietary format which is a major issue in this laboratory with the equipment that it's got and separating out all those elements but even understanding what defines the what is typically called the golden master of the data that has to be kept as the original in the repository from which all other data can be derived. The other problem is because of these proprietary formats the international field is actually kept back from collaborating properly and that's been a major issue at the various conferences and so on that people of like mind go to. How do we deal with the outputs and allow the companies that produce these instruments to feel secure with their IP and their profits and all the rest of it that they can give up some element of their data formats to allow proper collaboration to continue. So that's a very critical point for the lab and they see themselves and I'm talking about the lab at La Trobe they see themselves very much as leading in this area especially with this project. So the ANS project has come along at a perfect time to provide the framework for a lot of this to occur. So we've talked about my TARDIS at the Synchrotron which is not the only possibility I'd have to say for dealing with this data really obviously any database that can handle metadata and so on is theoretically suitable. So we have to be very careful about what is something that has long term value and accessibility and use and so on. But obviously this space is a growing and changing field so we have to watch that very carefully but we're going to have to make decisions now. So I guess a guess is as good as anything in some of this sort of stuff. The other thing is that many of the people who use the facilities at La Trobe have IP and commercial and confidence issues they're using it as a commercial facility. So whatever is produced is almost certainly not a single instance repository which is just available to everybody it will have to be restricted and in fact to make people happy with the way the data is stored and almost certainly have to be a multi-instance database to make sure that people are happy with the fact that their data is not going to be viewed by somebody else that their competitors and so on. But a major part of the data is meant to be out there publicly accessible and particularly the metadata components of that. There's another aspect of the public data in that the whole field of surface science has this issue of being able to compare what are called standard spectra so that if we have the surface of a particular material that there is a world standard for the spectra for that surface there is some way you can go for that and use it in your analysis and perhaps enable you to understand what the surface of your material is based on those worldwide standards. Those standards will only be produced through common goals through working together collaborating with other people. So the standards are obviously a difficult component but the harvesting of the data from the machines to get to all that point is what we're dealing with at the moment. Versi is helping us a lot. Thank you very much for that. We've still got a long way to go though. I think the end result though is that apart from having these databases that can be accessed which is interesting of itself but being able then to have the analytical tools online as well so that people can get in and do what they need to do in a standardised way will also be interesting. So I think a repository is actually only one step in that direction. We really need to think about how the analytical tools can be used as well. That's really about it. Good morning. I don't have any overheads probably because even though I work for the e-research office one day a week, the other six days of work operate as a harassed university professor. But hopefully what are the information I'll give you will be useful and informative. RMIT is in the final stages of approval of a data capture project which is called Data Capture from High Performance Computing from multi-user environments. Its collaborators at this stage will be the NCI National Facility, VPAC and possibly Monash University through Mytardis. The basic motivation for the project was that RMIT has a very strong or a number of very strong groups that research in computational condensed matter physics and computational material science. And their work basically is in simulation and property prediction of materials. They have a significant publication record and they have a very strong ARC grant track record and of course because of that the data that they generate comes under the Australian Code of Responsible Conduct for Research that document was produced in 2007 and that document talks about university responsibilities for curation of data. So this and project came around at a very timely in a very timely fashion. So basically because RMIT has a very strong usage of HPC facilities both at the NCI National Facility and at VPAC what we've done is we've identified a number of software programs that these researchers use. We've identified four possibly five but these programs which are used to do computational simulation of matter are also used by a number of other institutions around Australia. I think three of the four software programs we've identified are used by seven other institutions around Australia and a number of research groups within those institutions. So although it's important to RMIT researchers to develop some software tools to curate data that is generated on these HPC facilities I think that the software tools that we develop will be of interest and of use to a number of other institutions around Australia. The other institutions that we've identified that use these programs are University of Sydney, University of Melbourne, University of Queensland, CSIRO, Monash, ANU, Newcastle, Curtin University and UTS. Now the purpose of these software tools will basically be to interface to these four or five common software programs which are used for simulation of matter. They'll interrogate the output that is generated by these programs to be able to extract relevant metadata. So we'll have a metadata wrapping and then the metadata that's formed and the data itself will be stored in an appropriate format for long-term storage. We expected these software tools will be developed from open source software that's available maybe with some shell scripting around it or something like that. The software tools will be freely available once they're developed to all researchers and they'll be stored in some kind of open source repository like SourceForge or Google Code or something like that. We have also committed to just as an institution store a number of data collections using these software tools on software and data repositories, common software and data repositories. One of the other things we'll probably do with the code that we develop is we'll code in there some kind of time trigger function if it's stored in some national data repository so that after a certain period of time the data would be open to a wider community. We still have to negotiate exactly how we do that but the basic idea is to, as I say, develop software tools which will interface with common software that's available on these state and national supercomputer facility centers and to develop these tools so that they'll interface with output data, create metadata and store everything in an appropriate format for storage. So that's the project we hope to embark on shortly.


Some of this presentation will center around testing code. And we have already, so some of the projects used for testing we have seen before, right? So that's why this is going to be a little bit faster. And I have a few other projects and a few other, well, actually sample applications on the same github repository that I showed before. I think that the link will be up here in just a moment. So you will see all the different things that you can do. Now, let's see, same basic idea, yadda yadda, you know this, hope that I was able to do this in the past. We'll see. Okay, you know that. Okay, again, that's the link where you can get all the information, all the different projects. And all of that, again, is open source. So that should have been a problem. If you find an issue, if you would like to have a new feature or something like, please let me know, send me a pull request, it's all open. Okay, so the first thing is assertions. Because one of the things that we need to do with our test cases is to figure out if the code is doing the right thing. Now, I am culprit because I did this in the past when I was learning and I saw also my teammates to do the same thing. When they told us the management said, you need to write test, sure, I'm gonna use junitree and that's it. And we executed our code and then we verified that the code was doing the right thing. Using printouts, yeah, kind of works, but it didn't, right? So you have to use proper assertions. Now, junitree and for have an entry point for assertions is called the assert equals method, which you can use in many ways, but there's another project that you have seen before called Handcrest that allows you to do this thing. The one in blue, that's in this presentation, whatever you see in blue is what is specific to that particular project. So those are the same set up as before and we have some class on their test and we verify that that thing is doing what is supposed to be doing. So returning the value that is equal to that thing. Now, Handcrest is quite extensible and pretty much everybody knows it. The problem with Handcrest is that when an assertion error occurs, the generated message may not be as descriptive as you want. Believe me that this is much better than what we used to have before. Before crime, Handcrest, we had to have the expectation and the actual value and the generated error will say assertion failure error, this value, that value, not equal and then what? So description was kind of lost. Handcrest gives you a more descriptive error message. If this fails, it will tell you expected value test but actual value, the other one. Pretty much gives you descriptive conditions and it's easily extensible and comes bundled with JUnit 4 so you don't even have to define an additional dependency for this. But given that it's a little bit difficult or not really nice kind of messages that you produce with Handcrest, there are a few other projects that you can have a look at. For example, assert J. Assert J has also its own assert that method. It's done in this way so that you can just replace the original input for the other but notice what is different here is that here's the invocation, this is the value and what follows is fluent interface. And this method can only be invoked based on the type that we have here. So if these were to be a collection, then I would have access to the size of or the size equal to method or something like this. If it were to be a map or a match or something else, then I would have access to different collection of methods that make no sense to the other one. And this, again, actually would allow me to continue doing more assertions for the same value. The messages provided by assert J are a little bit better than Hankress but the most important feature provided by assert J is the capability to do the assertions in a fluent interface design. Assert J was inspired by another project called FEST, FEST Assert, which is a swim-based project and now, well, it works for any kind of Java project. The author of FEST Assert joined Google some years ago and I don't know if it was a direct influence by him or because some people at Google discovered Assert J and FEST Assert, they decided to create an own version called Truth. What is the main difference within Assert J and Truth? Well, looks exactly the same, isn't it? And the entry point, well, it's different but it's the same name. So technically speaking, they are the same thing. Actually, they are inspired by FEST, they are based on the same code but the type of messages that you can do with Assert J, the Google Truth, are much more descriptive and it has some additional features that Assert J does not give you. So regardless of this, if you use Hankress, Assert J, or Truth, you have now three different options to do your assertions and the last thing that I want to say about Truth is that even though Hankress and Assert J are extensible to using your own custom conditions and extensions, the way that you extend Truth perhaps is much friendlier to the developer, in this case yourself, the ones that need to create these kind of conditions. And the last thing, there are no advantages that is supported by Google. So if you like the stuff that is produced by Google and if this thing is good enough for the big projects that they have at Google, then it might be good enough for your own projects as well. Anybody here use Go, the programming language? Yeah? So you know that in Go, we have a big team of built-in version of testing that is quite easy to get started. So one of the features, one that they have is that you can run a test and do a bunch of assertions together and have one single point of failure instead of multiple, because what we have been told in the past with JUnit is that it should have as little assertion as possible was in the same test method because if we say we have five assertions and the third one fails, what happens with the fourth and the fifth? They don't get executed, right? But what if we want all those five to be executed regardless of the state of the other ones? We need something like the concept of soft assertions. This is something that AzureJ gives you. This is something that Thruud also gives you. Nothing that Hempgres gives you. But GoTest gives you that and JGoTesting gives you that as well. So how does this thing work? You use a JUnit rule to instantiate a JGoTest rule, give it any name you want to, use test or T, which is the convention in GoTest and then you can log as many messages as you want. This is just a printout of any statement and then notice that we do fluent interface chaining of these methods. You can do test, assert that, or check. It's up to you. Because the concept behind a JGoTesting and GoTest is that instead of following just one check, you want to do some multiple checks. Say for example, you got a card. This is the basic example. If there is something wrong with your card and you don't know what you do, you go to the mechanic and say, here's my card, please fix it. And then what does the mechanic do? And the first thing is he's going to check, oh, let's do a surface review and then, ah, I see. One of your taillights is broken. Okay. Then what happens? Does he simply stop there so they fix it? No. And it continues going on. There's a problem with your motor and there's something like this. And it gives you a full list of all the things that need to be fixed, right? It's exactly the same idea. You got a production test class. You run it. There may be five problems with this thing. You just get, run all the checks and then you say, boom, five errors instead of the first error fixed. Ah, another error fixed. So the feedback look is faster. That's the whole point. To make sure that you got information as soon as possible. So with this thing, we can use hand crest matchers or we can use Boolean expressions or we can pass the value directly. And at the end, all these things will be evaluated and you will get a full report of all the things that fail thanks to that rule. If by any chance there is an error and any kind of exception that occurs during this execution, it will be also caught by this one. But unfortunately, once that error occurs and if you have other code and any other checks, those checks will not be able, will not be executed because the whole method aborted using an exception. All right. So now let's go into general. This is a pointer to the same application that we saw before, the gif of API. And so I say it's quite the same thing. So we saw JUnit programs. Now we saw much better what needs to be changed. So the things in blue. So we know this. Then Moquito, again the things in blue just a quick refresher. I promise there is new content coming up. And Junkito, all the things that are different. Spock, for which I will show you a different way to do the parameterization because you can do it in this way which kind of looks weird, right? Because of these characters. What about that? Does it look better? Okay, have a look again. Odd data table. Same thing, right? But now it's much better to see, okay. So for all the values of the input variable for this will be the first test row. And so that's also output. And here's the second row and third and fourth and whatnot. And you can have as many columns as you want. Much, much better. Bad, good. There we go. That's what I like, Spock. That allows you to do great things like this one. Okay, we saw that. I waitability, we saw that too. Wiremock, we saw that too. Now comes the good thing. Let me see if I got this application going. It's the to do example one. And we do run, I believe. This is a web application using the Spark Java framework just because it's very easy. And now I'm going to say curl localhost 8080 and I think it's to dos. Oh, no, sorry, that's not the port. 4567, silly me. 4567. And we got a JSON payload. Nice. But I'm gonna make a full out of myself, try to remember how to define a header, I think is accept, content type, text HTML. Is this the right way to do it? Yeah, here we go. Now it gives me the same content, but using HTML. Okay, so my application is a bit smart and knows how to do content negotiation. Ooh, so early 20s. All right, now what I'm gonna do is, let's kill the application. And I showed you the code for this application. Here we go. It also uses juice. Let's make it a smaller. Like this. And there's a Spark Java. There's some bootstrap for the data and that's pretty much it. Whoa, that's cool. Because the important thing is in this object called routes. So let's go into Spark and routes. And here's this class. And this class is just an interface, aha, so it's coming from this. Which gives me access to the actual Spark behavior. Okay, so we're getting further down to the rabbit hole. So the actual implementations found in these classes. So these are interfaces. So the default methods are this one. So perhaps let's go with the list. The list does this. This is a Spark Java object. Nice. Creates a pojo, adds it to the model and returns it using a repository. And what is it to do repository? That's where we start getting into JPA or some other means. Actually, this project makes use of another library called SQL2O, which are very lightweight. SQL2ObjectMapper is not really an ORM, but it's quite small and quite fast. So for in order to do this testing, if we need to test the repository, which is right here in the database, that interface, we need to test this interface and we need to test the application. So testing the interface of the repository does not a problem because that's plain Java object. So that's it. Let's see. We use Yukito, okay. And we define a custom test module. We'll see that in a moment. So you remember Yukito is JUnit, juice and Moquito together. So these injections will come out from the good use injector. We invoke the bootstrap so we got some basic data and they will start to do assertions with the repository. And for example, we can do the find all. There's handcrest matchers, another matcher. Then we save, we find and we start to do things. And then the next thing is this module that we saw before. Here's something that Yukito allows me to do is that I can override default bindings for a particular module. So for the case of the bootstrap, instead of using the real production bootstrap, we're going to use this class, which is right there, which does nothing. Did we do this because this app module here, this is the production module, it does define a concrete binding for this interface that will do the right thing in production. Well, we want to change this for testing code. All right, so again, this is just like any regular Java code. What if we were to test out the actual route? This will require the real server, don't we? And let's see what happens if we run the test case. It's kind of working, there's one test executed, then the other one, come on. Waiting, waiting. Everything successful, you trust me? I said you trust me, you kind of do. You shouldn't, never trust a test you haven't seen fail once. Let's make sure that this thing fails. Do we have no null value? Not null value, change this condition to that, run it. We should get at least one failure. And there we go, yes, it fails. Now we know the test was okay. There's the other one, the application test case. This one, test out the application object itself. So if we see the application, it's this. So this is kind of like an integration test case where we need the real repository, the real routes. So we need to hit the real server somehow. So we need some kind of client. Remember we are building a web application. We need a client that we can use with fake queries perhaps. All right? And that's exactly what we do here. Okay, using Yukito, here's the application object. We start it, we finish it, and here comes the Groovy. And by Groovy, I mean actual Groovy code. This looks like Java, it is Java code, but the code that is behind this implementation is Groovy code. Given certain port, when that particular URL is in bulk, then I expect somebody using this notation, this code right here is actually run by Groovy code inside. But you don't have to be aware that it's Groovy code, it's cool. And then again, using Handcrest matches, we make sure that these values get transformed into the right thing. And here's another one when we expect, this is when we empty, and this is when we create a new item. So we post, we expect the list to contain now more values. So the great thing about this is because Spark Java is so easy to get started. For the test case, we can start the real server and shut it down. What is new here is this API. This is known as REST Assured, which is exactly this thing. REST Assured is a DSL for defining web clients on which you specify your expectations, you can configure the delays and timeouts and the port, and then you can do get possibly, you can do all the HTTP verbs, and then you can verify on the body using simple expressions. So regardless of the, remember the response is XML, or actually HTML or JSON. If I pass an initial length header here, if I were to return XML, the format, at least in terms of the content is quite similar to JSON in the sense that there is a to-dos container that has to-do items that have description property. What is going on here, this is known, well, if it were XML, you know you can use something called XPath. But in JSON, there is something called JSONpath. And in Groovy, we have something called Gpath, which works for a graph of objects. What's happening here when I mentioned that there's some Groovy behind is that the actual implementation is intelligent enough to figure out, oh, is XML? I do this. If JSON, I do that. If it's an object notation, then I do the other thing. Using JSONpath and Gpath. So you can switch here to JSON or XML or the other. Your expression will be exactly the same. So it allows you to validate JSON, XML, and HTML. Here's another thing, because it's very unlikely that you're using Spark Java. Probably you're using a standard Java EE or a Spring Boot. If it's a Spring Boot, it comes with its own testing facilities, which I'm not going to discuss here. But who's using a standard Java EE? Wow, no one. Interesting. What you guys are using? Besides Spring Boot. Is there something else? Drop Wizard? What else is out there? J-Hipster? Grails? Come on. You're not web developers? Wow, okay, cool. Well, if you have to work with Java EE, the problem with Java EE is that you have to run your application on a container. So in order to test this thing, you have to have a container. How do we set up a container in the right way so that we can have the application in the correct state in order to run the test case? That is the problem. But there is a solution. That solution is called Archelian. It's a test framework that we're going to see next. And for that, I got another version of the application. This is a standard Java EE application. Let's see. That also uses juice. Here's a servlet. And here's my to-do servlet. Let's make it bigger. Let's expand this a little bit. All right. So it's a regular servlet that has injection, that has its own routes. It has a bootstrap and does the handling. That looks a little bit like what we saw in Spark Java. But how we handle this in the default list route, exactly the same as before. Grab a reference to the repository, then pass everything and then send it to something that looks like a model in view. This is specific to this class here, to this application. The simple pojo again with our good friend Lombok. And we go back here and wow, what is this thing? No, do the list here. We got another interesting project called Mustache. Anybody done Mustache templates in JavaScript? They're quite good, quite fast. Mustache Java is very, very fast. The best, fastest templating solution for Java. Anyway, going back to this is how do we run this application? We need to have a real container. But if we use Archealian, not a problem. For example, here's my test case. Looks pretty much exactly as the other one, isn't it? The difference is that we're using another port because I'm running this test case embedded in Tunkat. Okay, so that's exactly the same. What about the other thing? This, my friends, is how we can tell Archealian to create the web application, the war file, that is going to be deployed on a particular container. If you're using Maven, which I guess most of you use Maven I suppose, then Archealian knows how to resolve all the dependencies that need to be added to the dependencies. It's quite easy, but because I'm using Gradle, I need to do extra stuff. Say, here's the way, where is the way for Maven? Here's the way for Maven, by the way. You do Maven resolver, and then you can give it a name on the point file or the location of the particular point file and tell it, give me all the test dependencies or all the runtime dependencies that will grab all the locations for the jars. You have it here, and let's just add it to the web archive. I'm doing this because I'm running with Gradle so I don't have a point file. And then also with Gradle, I grab all the dependencies that are needed for runtime. There we go. So what else do we do here with this archive? We say that it's a web archive, so it's a war that contains that particular resource. So we'll see what is in that resource. And then we're also going to add another resource, a web.xml, and add all the files and also where are all the classes? This gives me all the classes right here that I need. Okay, so everything is fine, and this will generate a war that gets automatically deployed to a container. And there are three modes to run the container. Embedded mode inside the test case. For every test method, a new container is going to be started, deployment is made, test case run, done. There is the managed version where you got a local container installed on your machine that is shut down, is not running. And when you run the test case, the test case will run the container, do the deployment, and run the test cases. And the final thing is the remote. You got a container already running somewhere. It might be on the same machine on all the server. And the test case will do the deployment to that location and run the test cases. So let's see what happens when I run. And let me make a mistake here. For example, at java.one. You could never trust that test case. You haven't seen it fail once. Okay. Hopefully Gradle will not gobble up all the messages because by this moment, it will try to launch Thumbcat to the deployment and then run the test case. You can put the configure Achillian with some resource files like this one, where I'm telling which kind of mode I'm running. Thumbcat on that port and that's everything that I need to do. So this is a resource that is going to be found automatically by Achillian. You can have different containers, with different names, with different settings. So you can have a managed version, a remote, or a embedded one as much as you want. And it fails. Perfect. Build, report, test, test in the XHTML. There we go. Takes a moment. And of course, there's the assertion failure that we got. And in the standard output, where does this print out? This is printing out the contents of the wire file. So we can verify that it contains all our production classes, which are these classes right here. And all the gyres that are needed. Where this thing is coming from? Where is the application test case? At this line right here. I like to use this so that I can quickly verify if it has the right contents, or at least what appears to be the right contents. Because you can shrink, if you don't need a whole application, you can say, perhaps I'm just testing a small subset. So I want to include these classes of this package, or exclude this package perhaps, but include the other one. So you're free to do all that is needed in order to create the deployment. Okay. So that's basically Archealian. And the other miscellaneous options. Any of you have had the need to create a PDF and then assert that it has the right contents? Well, if you ever had the need, know that it's something called PDF unit. PDF unit, it's aware of the document model of PDF. So say that somehow you have generated a PDF using some reporting mechanism, like Jasper reports or something like that. Then you create an object of type page region and start doing assertions like this. What is the document on the test? It will read all the document and start to look at the different elements. So you can figure out if it has the right number of columns and if there is a value in the right cell when it's suspected. Instead of doing a visual verification. That is much better, I would say. There's another one called XML unit. I would expect that sometimes you need to work with XML and that you need to verify that it has the right contents, right? XML unit does it for you. So in this case, we have to extend from XML test case. There is no way to do composition. It has to be inheritance. We have some basic content here. This is actually a real test case for all the project that I have. Remember that I mentioned that Java has just a few, actually a lot of Java libraries. There is a real test case for a project called JSON live. It's the third project that created JSON to Java and Java to JSON and then added XML. I know it for a fact because I'm the author, it's kind of like 10 years old. And so when I brought this test case, I needed to figure out that XML was written correctly from Java and JSON. So this thing serializes some Java objects from JSON to XML. So that's the JSON. Then writes it at XML. And it needs to verify that the response, that thing is actually the same thing as that. And there are more things that you can verify with XML, but at least you can check that it has the right number of tags and it has the right content. And with that, I promise that I'm gonna make it this quick. It was close to half an hour. I wanna close down that again, really remind you that everything is open source. You can use it right away. If you can contribute to open source, the easiest way that you can contribute is report an issue if you find it. Please leave as much information as possible, what the running environment or what happened, the steps to reproduce. The next thing to do is getting in touch with the community, getting in touch with the authors and the project team so that you have a conversation going on. And if you can supply a test case and if you can supply a patch, that will be great. But again, the easiest thing to do is just submit an issue or file a report if you find something. We all benefit because of open source. And I think that's pretty much it what I have. Thank you very much for listening my rambles for close to two hours. And again, let me repeat that I'm very happy to be here. I'm here for two weeks. So if you want to continue hearing me rambling on on different projects and some stuff, please let me know. I'm available for the next following weeks. Thank you.


供ño э pexxasha whatever is this are there not deaths, are there not sizings, are there not suicides, yes there is but when something becomes beyond the normal then people begin to ask questions and say what is going on now the last week of february do not give me the revelation on this issue and then I prayed about it and I prayed the second time I say god this issue of suicide that is going on what is the root of it because you see everything have a root the Bible says in the book of Amos at Atribus God cannot do anything except he revealed his secrets to a servant a prophet every problem has a root this is what God revealed to me what is going on and the solution because he's wanted to say this is the problem this is this is what i saw what is the way out number one the law revealed to me that there is sacrifice there is what sacrifice behind these accidents these deaths and this suicide is not normal there what sacrifice now you say the prophet what is sacrificed the law showed me six authors these authors they are crying for blood because you know anything about sacrifice involve blood anything about alter involve blood the law said to me revealed to me six authors and these authors were erected these sacrifices on these six authors were done in 2021 in what 2021 and you know when sacrifices are done for certain reasons what i saw is that some within the nation with some outside are involving these sacrifices now the law said the nation of zambia must pray what is the what is the prayer two prayers one lord expose the root of this sacrifice because the law told me that this accident accident here accident this blue circle accident yes have they have been accidentally passed but this is beyond is this one especially in this 2022 is not normal is beyond normal accident here accident there accident the blue circle no this one come as suicide this one suicide is something there so six authors six sacrifices done last year when last year pray lord reveal the root of the sacrifice those behind the sacrifice the purpose of the sacrifice bring it to light because the law said if the people of zambia we pray things we come out number two the law showed me that with these authors i saw these six authors in six places of the nation whenever these authors with the sacrifice crying for blood then you see accident here then you see accident here then see suicide there somebody can say oh what are you saying what is this man saying you may say oh what is he saying he does not matter accident happen the suicide happen no everybody in zambia know that it's not normal i'm not telling you what god showed me because god reveals the law said when they pray that first prayer when i mean pray the nation because zambia is a christian nation pray god will begin to expose because nothing no matter the bible said nothing that is hidden that will not be exposed god himself will expose because our god is a reveal is a god of revelation it's not the mean that we spoke god says when they pray when the when the people of zambia pray the christians that they join hand and pray so this is an assignment to the church to the christians in zambia to pray number two the law says we out first prayer to increase national prayer want to expose to to destroy those authors because the law said if these prayers are not done and done quickly this thing going to continue because you see it is the sacrifice that was done i repeated the inside with outsides now what happens authors were done sacrifice were done and the authors have been positioned these authors have been positioned and the authors are crying for blood and it is utter cry because you see whenever i said sacrifice involve blood authors involve blood and whenever these authors are crying sacrifice are crying blood you know accident here and there i want to say it again i'm not saying that accident are not normal but the one that is going on now is not normal you know it god is just speaking about it increase national prayer yes there's a national day of prayer but when i mean i said the nation must rise and say god this thing must stop the root must be exposed secrets must come out no more dead in the nation of zambia is a christian nation a blessed nation lives are important to god one exposure to destroy the foundation oh lord destroy the even outer then finally three stop the roots no more dead this is what god revealed to me in the month of february and i prayed over it they let's say give this message and as the nation of zambia we follow setting things to be a spouse this thing was done in 2021 the what you have seen in the physical is as a result of what has happened by those sacrifices sacrifices are powerful either to god or to the devil when sacrifice are done to dark powers they call for blood and then you see this thing that if you say this is not normal well god have spoken be blessed nation of zambia 13th day in the month of march god will fight for zambia accidents will be arrested secret to be exposed the root will be brought out to the public god's name will be glorified the nation of zambia is blessed god is saying something shalom from prophet isekamata amen