The other day I saw Dylan Matthews, in honor of "Giving Tuesday," write about his own recommendations for effective altruism ("Made possible by The Rockefeller Foundation"). Dylan Matthews is a very weird guy (he gave his kidney to a stranger), but I don't have any doubt he's a good guy trying to do his best, and modeling your philanthropy after his (with or without the kidney donation) is a perfectly good way to get started if you're interested in giving away some money.
What baffles me is what "effective" altruism is supposed to be so deliberately contrasted with.
You can imagine a completely altruistic person, finding they have no use for their money, deciding to go down to the boiler room of their apartment building, opening the grate, and throwing carefully bundled stacks of $100 bills into the fire. This is a perfectly reasonable exercise of self-abnegation, or "altruism," and I would have no serious objection.
You can also see how this would be ineffective: it wouldn't work. Nothing would happen. Burning physical bills in the boiler room, or dumping sacks full of coins in the Potomac, would not have the slightest effect on the economy of the United States or the well-being of anyone anywhere in the world, no matter how many people indulged in the conflagration. That's because the monetary supply of the United States has nothing to do with the number of notes and coins in circulation; it's completely controlled by the policymakers at the Federal Reserve.
This silly thought exercise is merely to point out that I understand perfectly well the meaning of "ineffective" altruism: when your sacrifice is completely pointless, you are being altruistic, but not having any effect, i.e., ineffective.
What bothers me about the "effective altruism" canard is that the Dylan Matthews of the world consider any form of altruism that is not optimized according the preferences of the speaker by definition "ineffective," and that simply makes no sense unless you ask another question: effective at what?
Take, for example, the Wounded Warrior Project. The Wounded Warrior Project gets a lot of criticism since it's a fairly elaborate hoax. They spend very little money on what a normal person would consider "philanthropy," and an enormous amount on fund-raising and salaries for their executives, salespeople, press agents, etc. In the fiscal year ending in 2017 one in four contributed dollars went to…raising more dollars.
But the Wounded Warriors Project isn't "ineffective" in any obvious sense. It may not help "wounded warriors" much, but it also doesn't incinerate cash: it pays it out in fundraising contracts, advertising, staffing, travel reimbursement, office leases, all the normal activities a sprawling, $200 million organization engages in ($371 million in net assets at the end of their 2017 fiscal year). If you wished it out of existence tomorrow, you wouldn't increase the effectiveness of altruism in the slightest, you'd just create some vacant office space, empty bus stop ads, and unemployed con artists.
Now take another form of altruism the "effective" kind is juxtaposed against: simply giving money to panhandlers on the street. This violates all the rules of effective altruism: you're giving to an uncertified recipient, without conducting adequate research, at home instead of abroad. So it must be ineffective, right? Well, that depends: ineffective at what? If you think a panhandler is going to tear up your money and throw it away, then we're back in furnace territory. But if you think the panhandler is going to spend the money, then it seems to me your altruism was perfectly effective: in the course of handing a dollar from your wallet to a panhandler, you successfully transferred one dollar in value to its intended recipient. Zero overhead, tax-free, and no credit card commissions.
That sounds to me like 100% effective altruism!
In the world of finance, one of the greatest marketing coups of all time was the invention of "smart beta." Smart beta is the suggestion that unlike the dummies who settle for low-cost market-capitalization-weighted index funds, the knowledgable few can attain higher returns by tilting their investments towards cheap, or small, or profitable, or liquid, or expensive, or big, or unprofitable, or illiquid companies. Pick one or two or 10 "factors" and all of a sudden your beta is smart, instead of dumb.
And who wants to be dumb? So the markets have been swarmed with smart beta funds, which promise you the market return…just a little bit smarter.
Effective altruism strikes me as precisely the same branding exercise, in that merely saying it instantly conjures into existence the nonsensical idea of its counterpart, "ineffective" altruism, without specifying what ineffective altruism is supposed to be so ineffective at.
Ineffective altruism is surely ineffective at the things it does not try to do, just as dumb beta is dumb at the things it does not try to do. You don't buy a total US stock market index fund in order to track value stocks any more than you buy it to track international stocks. But it's not broken, it's doing exactly what it's intended to do. Similarly, ineffective altruism is perfectly effective at what it is.
In other words, there are no furnaces full of cash. It all gets spent.
Therefore what concerns me about the consolidation of wealth is not its concentration, but the hands it is concentrated in. Particularly, how unimaginative those hands are. There's no mystery why that should be the case. To become a billionaire in one lifetime, you need to combine talent, luck, perseverance, and in a pinch you can always steal intellectual property and sell it to the Soviets.
Having mastered the desktop computing, digital payment, or car insurance industries, naturally you'd be tempted to treat philanthropy as yet another industry ripe for innovation and disruption. But there are an enormous number of fields that don't require any innovation or disruption at all. They just require money.
Take the case of cash bail. Cash bail is such a terrible idea even the gross framers of our Constitution wrote into the Bill of Rights that "Excessive bail shall not be required." But today, excessive bail is so ubiquitous it's treated as a feature of the system, since holding people behind bars, keeping them from their jobs and families, is one of the surest ways to negotiate guilty pleas and reduce the workload of the courts and juries who were supposed to serve as the guarantors of American liberty.
Just ask the Orleans Parish district attorney, when people started posting bail for his victims: "I think they are very naive as to what they are dealing with, especially with this criminal justice system," and "It's extremely disturbing." This is someone who is fundamentally uncomfortable having to accommodate the rights guaranteed to his victims by the United States Constitution.
There are efforts around the country to eliminate the problem of cash bail, which require the diligent work of staffers and volunteers in cities, counties, statehouses, and in Washington to achieve their goals. That's expensive, difficult, important work.
But writing checks is easy. You can go down to the courthouse every morning, sit in the back, and write checks made out to the city or county for the amount of each defendant's bail. Your hand might start cramping after a few days, you might need to order some more checks, but this is a problem that can be solved immediately by any billionaire in the country. And as far as I can tell, it hasn't occurred to a single one of them.
Is that because it's ineffective? No, it's one of the most effective thing you can do to make real, immediate change in your community. It's because it's boring. No mosquito nets, no genetic engineering, no balloons broadcasting wifi into the Sahel, just money. And money, conveniently, is the thing billionaires have the most of.
So for this, the inaugural edition of the Better Billionaire Project, let me introduce you to the National Bail Fund Network. If I were a billionaire, or even a low millionaire, I'd go down to the courthouse myself, but I understand y'all are busy. So check out the list of member funds, contact them directly, and figure which you want to contribute to. Some are focused on immigrant justice, others on disadvantaged communities, and others on low-level offenses. Ask how your contribution will be used, what their turnover rate is (bail funds are returned when a defendant returns for trial), and how quickly they're able or willing to expand their operations.
Then once you find one or more funds you're comfortable with, all you have to do is give till it hurts. Remember, you can't take it with you.
You're using the wrong baselines here. If the goal is to help veterans, I think most EAs would say to contribute to a fund that spends the funds it receives on helping veterans, as opposed to running a scam. If the goal is to help veterans, it's also better to donate to helping veterans than setting the money on fire.
But you're missing the fact that the funds that do not go to help veterans are not, in fact, set on fire. They're used to pay rent and mortgages and boat leases owed by the employees of the scam fundraising companies. The apartments, condos, summer houses, ski chalets, and boats really do exist — the money's not "wasted" in the sense "effective" altruists seem to believe.
Thank you for writing this post. The cash bail system is disgusting (in my opinion, of course) and I had no idea the type of funds that you mentioned even existed.
I'm thrilled to have been able to bring them to your attention! Give til it hurts, as they say!
I recommend https://appolition.us/ – it is an easy way to support contributions to help people make bail.
Great article! I enjoy your posts a lot. Thanks for writing.
Thanks for reading, and for your kind words!
I would argue your statement about giving money to a homeless person being 100% effective altruism, is not 100% accurate. Ideally, you would give your money to a legal 501-c3, get a tax deduction, and then have them pass on every cent to the homeless individual. If you're in a 30% tax bracket, for example, now you can give $1.42 to that person and after-tax it will cost you the same amount as giving $1 directly. This also illustrates why even if a 501-c3 has some administrative expenses, it may still be more effective to give to a charity than a person directly who is not a 501-c3. In my example above, they could charge $0.41 in fees on the $1.42 (so almost 30%) and they would still be able to give more ($1.01) to the homeless person, than you could give directly.
Correct, but the lower tax revenue would require correspondingly higher issuance of US debt and correspondingly higher interest rates on the higher level of overall debt. That's perfectly fine and good but it means tax deductions don't have any net impact on the "effectiveness" of a giving strategy. All the money and all the goods in the economy have to add up at the end of the day, every day.
The importance of effective altruism is not that all the dollars go to a cause, but rather, within contemplated endpoints, cash is spent efficiently.
For instance, giving $100 to a homeless person is unlikely to be as effective in generating good, as, say, putting it towards a homeless shelter. Or an addiction treatment center. Or just outright giving homes to the homeless. If the outcome is "improving the lives of the homeless" then an outright cash grant is likely ineffective.
Or if we're trying to think about this from a true utilitarian perspective and trying to maximize, say, the number of lives saved outright, we'd look to something like malaria nets, which can save many lives at a very low cost. This is arguably far more effective in terms of altruism than, say, spending thousands to have a single first world child pretend he's Batman.
Now, exactly what outcome you want to maximize and how effective you deem particular charities is a somewhat subjective process. Nevertheless, it's a valuable exercise to go through.
You don't have to like the fact that the Constitution forbids excessive bail, but it does. Bail amounts are not supposed to be set to *discourage* people from posting bail; that's the definition of excessive.


Located at 36 Patton Drive Cullman AL 35058 on HWY 31 north of Cullman.
Town of South Vinemont was incorporated in 1961.We are located north of Cullman on Hwy 31. We are home to Vinemont elementary, middle, high school and the career center.


text:
Scala at Duolingo
With Andre Kenji Horie
Design Principles From Functional Programming
Doulingo is a language learning platform with over 200 million users. On a daily basis millions of users receive customized language lessons targeted specifically to them. These lessons are generated by a system called the session generator.
In this episode, Andre talks about the reasons for the rewrite, what drove them to move to scala and the experience of moving from one technology stack to another.
Andre Kenji Horie
Senior Engineer at Doulingo
@andrewkhorie
00:00 - Intro
01:18 - Duolingo as a Language Learning App
04:45 - System Redesign With Session Generator
09:04 - The Move Fast, Ship Quickly Mindset
13:02 - Unit Testing
17:06 - The Method of Referential Transparency
24:34 - Transforming vs Mutating Inputs
31:44 - The Verbosity of a Language
36:56 - Pain Points of Moving to Scala
44:25 - Scala and Savings Cost
48:10 - The Business Benefit of the Rewrite
51:12 - Language Learning Perspective
This transcript was machine transcribed. There may be transcription errors.
Adam: Welcome to CoRecursive, where we bring you discussions with thought leaders in the world of software development. I am Adam, your host.
Duolingo is a language learning platform with over 200 million users. On a daily basis, millions of users receive customized language lessons targeted specifically to them. These lessons are generated by a system called this session generator. Andre Kenji Horie is a senior engineer at Duolingo. He wrote about the process of rewriting the session generator as well as moving from Python to Scala and changing the architecture all at the same time.
In this episode, I talk with him about the reasons for the rewrite, what drove them to move to Scala, and the experience of moving from one technology stack to another. It's a great interview and I think you'll enjoy it. Andrea Kenji Horie is a senior software engineer at Duolingo.
Andre: Hello. Welcome for inviting me.
Adam: You have great case study about the rewrite work that's been done at Duolingo's book. Before we get into that, I was wondering if you could explain what Duolingo is.
Duolingo as a Language Learning App
Andre: Duolingo is a language learning app. We have around 200 million users as of today. In the app, people can learn a new language, by doing exercises and translating sentences from their language, their native form to the language they want you to learn.
And then we have other exercises that practice listening skills and some reading skills and grammar skills.
Adam: It tries to make it sort of a game to learn a new language. Is that correct?
Andre: Yes, that's correct. And we have all of the gamification mechanisms, such as levels, experience, all of that to make the language learning experience more engaging because when you're learning a language, that's the sort of process that takes people like several years to become fluent in that language, right? So by gamifying it we make it easier for users to, keep learning and keep engaged. So that they can achieve this very long term goal.
Adam: How big is the engineering team at Duolingo?
Andre: Engineering teams should be around 40 to 50 people.
Adam: And how is that organized?
Andre: So we have several teams, we have some product teams, which we call product teams. For example, we have the learning team, which is the team that focuses on improving our learning metrics and improving the learning experience to users. We have our growth team, which is concerned with expanding our user base and keeping people engaged and we also have some more for the foundational teams, like for example, a Q&A or operations.
Adam: Which team are you on?
Andre: I am in a team called the architecture team. So it's basically, guaranteeing that we have a healthy code base, or a healthy system in terms of – at the application level.
Adam: So would your tasks be around sort of setting standards around what languages are used or what frameworks or things like that?
Andre: Maintaining like common frameworks and libraries for the rest of the company to use, making sure that the architecture as a whole is healthy and each of microservices is doing correct things and not abusing infrastructure.
Adam: You were involved in a rewrite of the session generator? Could you explain what the session generator is?
System Redesign With Session Generator
Andre: Yes, absolutely. So, well, when a user is learning Duolingo, they will need to, we give the users exercises and we have a pool of exercises which is pretty large.
So, actually let me take two steps back. We have a product called the incubator and in that product, we have volunteers making the courses, the courses that you'll see. So it's like a crowdsource called approach where they volunteer, you input all of the data and we'll make the course structure and the write, all of the course content and then the session generator is responsible for pulling all of that data and picking the exercises that will be the most interesting for the user at that point and give a session that is bite-size and small for the user to do, let's say in a bus or wherever they are.
Adam: A session is like a unit of learning and that the session generator creates that, that unit?
Andre: Yes, that's correct. A session on these, simply speaking is a collection of exercises.
Adam: Is this session generated on the fly or is it created ahead of time?
Andre: Part of it is on the fly. We have a lot of pre-processing going on because there's so much dating involved in each session that if we do every single step on the fly, and that's very time-consuming.
Adam: Why couldn't all, say Spanish sessions be created ahead of time? Is there info?
Andre: Yes. We also want the sessions to be adaptive for each user, right? So for example, let's say our user knows 10 words that some or the user knows 50 words. So the sessions for these 2 users will be different and also with the consideration, how likely they are to remember a word and other things like that. So it's very important for these sessions to have these online components.
Adam: How do you figure out when somebody's going to remember a word?
Andre: So we have a model for that, there is this thing called the forgetting curve for a word and it's, basically the probability that a user will forget or will remember a word after a period of time after they've learned, let's say that one day later, they have a probability of remembering that X, 2 days later, the probability will decrease. And so we model that, as in a curve. And then we do some sort of regression to estimate how well the user knows each of the words.
Adam: If I learned that today, then you'll figure out based on certain probability, as I'll probably know it tomorrow, but not next week. And then you reintroduce
Andre: Yes, that's correct.
Adam: So why did you decide that a rewrite was required? So you have this session generator, it takes into account these kinds of forgetting curves and builds the lesson on the fly, I guess. So why did you decide you needed to rewrite it?
The Move Fast, Ship Quickly Mindset
Andre: Yes. It all starts with the monolith, I guess, and all of the nightmarish stuff started with a monolith. If so, we have the monolith and it's written by them. And the thing is that in the first years of a startup, we are all thinking of, let's move fast, let's ship quickly. And after some years, we ended up adding a lot of dependencies like data stores and other services and whatnot.
And in the end, the entire system becomes very, well, the performance is not so great anymore. And also, the site's not as stable so one of the reasons it's true is to re-architect the whole system, so that the system is more robust and the, well, the second reason is that we have the code in Python. Well, Python is a great language for, you know, writing things quickly and having like prototypes ready very fast. But far systems that are very large that have very, complex data structures and complex algorithms, then Python is not so great, because you know, let's give it examples, so something as simple as dynamic typing becomes a nightmare because then you don't have all of the niceties that you have in a, in a strongly typed language because the compiler won't do as many checks, for example. And then the developers lose confidence in writing code and then they have just spent a lot of time testing and testing to see if all of the possible corner cases are being caught and nothing's going to break in production.
Adam: So let's see if I understand it. So we have this giant, Python monoliths. So as you add new features, it keeps on growing and you're saying the problem. The problem with Python is when you want to add, when you want to add something new, like your level of confidence is low because of dynamic typing. Do you have an example to explain?
Andre: Sure. Okay. I'll give a very simple example, which is, let's say we want to, rename a function. And I mean, you could grab your, your entire code base and start changing stuff, right? But it's also possible that in some part of the code, you pass that function as a Lambda and it has a different name somewhere and then your code breaks into production are, for example, if you want to add another arguments or function, then you have to guarantee that also nothing's going to break. But then it's also very hard to find out that the occurrences are for example even simple things as you don't know what data type you're getting into function. You can assume you're getting something, but the end, you're getting something else and these are all things that a simple compiler check could figure out and say that you're doing it wrong. But since it doesn't have that, then it's very easy to break stuff.
Adam: Did, unit tests help with this process at all, or were there tests?
Andre: Unit tests definitely help, but in the starting years of a startup, I guess people are more concerned about shipping things than writing unit tests, and it gets just data. Even parts of our codebase are very difficult to mock with a unit test and are part of the monolith because, after a while, we learn from our mistakes and realize that, "Oh, we can architect things in a different way that makes tests easier." But in the monolith, there are still many places where it's very hard to write unit tests, very hard to mock things.
Adam: Especially, yes. If you didn't have unit testing in mind, sometimes you make decisions that make it hard to add them after the fact.
Andre: Yes, that's very true.
Adam: So when you decided to do this rewrite, what made you choose Scala?
Andre: There are some reasons. The first is that our infrastructure is built on top of AWS. We needed to think of the languages that are natively supported by Amazon. Right? And they are, well, Python, Javascript in no-js, a JVM based languages such as Java, closure, and Scala. And I think Go, which is also, one of the supported languages as well.
JavaScript has the same problem, as Python is weakly typed. we're in and this is something that we wanted to avoid for the particular case of the session generator. And then Java is, well, it's well known and it's a bit slow and verbose so it's slow to develop and it's very verbose.
So we wanted a more modern programming language, which is why we thought that Scala was good, a good might be a good choice. And also because Scala is also very mature in the backend, and it's used by many applications in the big data domain. So, big data is kind of similar to what we're dealing with in the session generator, right? Because it's like, there's also a lot of data, complex data structures, complex algorithms, it seemed to be a very good fit.
Adam: Is there any concerns about the learning curve of a language like Scala. I mean, it has a reputation for being somewhat complex?
Andre: Yes. So we had concerns. Right now, since our entire engineering team is small, and the number of people dealing with Scala is also small. So, my population of people who learned Scala here in the company is also very small. So I don't know how good we can talk about like how, how easy it is, but, up to now, I personally thought it would be harder for me and for other engineers to learn Scala and to get going, well, it was a lot easier than we anticipated.
Adam: Let's discuss some of the features of Scala that you found useful in your rewrite. So could you describe referential transparency?
The Method of Referential Transparency
Andre: When we have referential transparency, we have a method that the only thing it does is calculate the output and doesn't change any state anywhere. So it's very easy to unit test and to also to just logically debug what's going on because you know that once you will have that once it has some input, the output will always be what you're expecting.
It makes things very easy to test, to reason about, and that's one thing that's very good once you have very complex infrastructures.
Adam: So an example, just it's helpful for me if I am probably the listeners if I can tie it, tie it back to an example. So referential transparency means you have a function with some amount of inputs. So let's say like the words that I know in Spanish, and then the output is – or do you have an example of where that could be used.
Andre: So let's say, in some part of the algorithm we are thinking if we should choose an exercise A or an exercise B and we put both into the function. And so what happens with referential transparency is that first there are not going to be any side effects. So, we won't, you know, write things to the database for example, because that will be adding a side effect. We won't be changing something inside one of the objects, because that doesn't contribute to the output. Right. And then, the idea is that we will just do some calculation and that calculation will be yours only for the output. So let's say if we wanted to pick between two exercises, we will do well, the output is simple. This is one of them, but we can guarantee that nothing else is going on,
Adam: Which is what makes it easy to reason about.
Andre: Yes, you're correct.
Adam: You also mentioned, and I think it ties into that example, about immutability. So how does immutability tie into this?
Andre: When data is immutable. You have some nice properties like you don't need to think about. You don't need to think if something is changing your data from somewhere else. And I think many people have seen, you'll call a function and then you'll pass an object to a function that function calls and that function call another function. And somewhere along the way, someone changes one of the properties. And then you don't know who changed it, what it changed to and you just need to add print statements all over the place to figure out what is going on because something changed part of your data and you don't know why. So when you have immutability, you're guaranteed that things won't change. So all of you, in each step of your algorithm, the state will be very clear to you.
What this means in the context of Scala, for example, is that in each step of your algorithm, what happens is only data changes. Let's say you have a list and you'll change the elements of a list by let's say adding one to a property, and then you'll know that in your next step that the, your new list will have all of the elements with plus one, and you'll know that you're guaranteed that that's going to be that for so if you use that variable for something else, that value, it will always stay the same.
Adam: But you did say the list, we're adding an element to it. So how, how can something be immutable?
Andre: Yes, that's a good question. What we do is we actually copy the list. We have the original list. We have the new list with plus one in all the elements. And then we keep just transforming data as we go and that's a way functional programming happens is that you will always, generate new stuff but you won't be changing what you had because if you changed what you had done, it's, it becomes hard to, to understand what's going on once you have a giant system.
Adam: So this is like Scala's immutable collections, and you're saying the immutable, immutable control structures means when you write your session generator, nothing's changed. If a number of lessons come into the input and we need to select one, then that one comes out the other side?
Andre: Yes or another example would be, let's say, if you pass, for example, you have a set of exercises. And in one part of the algorithm, you want your filter and consider, let's say half of these exercises because they're better in that context. So you'll filter your pool to half, and then you'll do whatever you have to process. But then in your next step, you wanted to use the actual like full set of exercises and the data is there because you have not touched it, you created a new smaller set in the previous step which if you want you can use it or not, but the idea is that your variables always stay the same so if you want the entire pool for the next step you're guaranteed that nobody changed it, nobody removed things, without you realizing
Adam: To make this rewrite work. It's quite a different model of operations. So did you have to change the architecture of the session generator so that it could work more as, transforming inputs rather than mutating them?
Transforming vs Mutating Inputs
Andre: Yes. So we did change, so many of the algorithms as we had to just rewrite them in an immutable way. Sometimes when the algorithm was way too hard to rewrite and it was risky to introduce errors in those cases, so Scala has this nice thing that it's, I don't know if it's nice or not, people might disagree, but you can port Java code into Scala, and just run Java libraries in Scala because both of them run on top of the JVM. And what this means is that Scala also supports things from the Java world. So like mutable types and some, for loops, while loops that are not very functional – functional programming. So. If you're rewriting something and then you realize that, Oh, this will be very hard to rewrite without adding complexity or making risky changes, then you can write in Java, like an EDM of Scala.
Adam: What percentage would you say, is more of, you know, Java is written in Scala, and what percentage is, did you kind of go with this functional transformation style?
Andre: So in our codebase, I'd say that more than 99% is functional because we try to do those things in a more – so when you're using immutable, collections and we are using referential transparency, things are much easier to debug, much easier to maintain. So we try to make things immutable and, or referential transparent and, you know, functional in general, in most of our codebase, most of our code basis, maybe one or two algorithms, we thought it would be better to just use the nonfunctional version.
Adam: Well 99% is very functional.
Andre: Yes. When you're writing a code based on scratch, you can also do unit tests that you couldn't do in your monolith. Things are much easier to just test that your algorithms are working as expected.
Adam: How is unit testing in Scala?
Andre: We use, in Scala, should I say in our whole framework we use Sinatra as our HTTP server. Sinatra is an HTTP server written by Twitter. And we, and they use a Guice, which is the Google library. So unit testing in this context, we have like all dependents out of the box, we have mocking out of the box and it's very easy to do everything.
And I'd say that it's, well, it was just easy to write unit tests and we ended up writing a lot of them and I think our coverage right now is somewhere along. 70% maybe.
Adam: Nice. In the session generator, you mentioned microservices. Is it something that calls out to a bunch of services and combines them together, or how does it interact with the rest of Duolingo's infrastructure?
Andre: So we have to pull data from a lot of places, and we have a data pipeline for that. So the pipeline is just a task that runs offline so that we don't, you know so that we don't make real online traffic depend on our data stores, right? So we have these tasks that run daily and hit all of these services and whatnot that we need to hit in order to fetch the data. And then this task pre-processes everything and then serializes all of the data into the S3 file server by Amazon – AWS. And then, when we are online, we are serving actual requests for users. What we do is we just fetch from the file server and catch it in memory and serve it and when we do that, we get, we have an architecture or a system that's very robust to faders because the only, your only real dependency is your file server and network of course. It's also very fast because everything is caching memory.
Adam: So the only real, external dependency you have is S3 and then even that is kind of insulated by your cache?
Andre: Yes.
Adam: With all this functional idiomatic code you're writing. Does that mean the session generator is sort of like, it takes as an input, like a user and then all of the possible lessons ever, and then it spits out what they should learn next?
Andre: A little bit, it actually takes as input, the online part of the session generator takes as input the lesson the user wants to learn and some other user settings and outputs the session to the user – the collection of exercises.
Adam: There's an idea that statically typed languages are more verbose and dynamic languages are more succinct. So I've actually found, in my experience that Scala is a very succinct language, maybe even more so than Python in some cases. What did you find in terms of verbosity moving from one language to the other?
The Verbosity of a Language
Andre: Yes. So I think verbosity depends a lot on the language itself. And so if you're familiar with Python or JavaScript as your go-to dynamically type language and Java is your statically typed language, then I would agree that yes, Java is super verbose. We have that Scala is a language that is concerned about a lot of typing. Scala tries to infer types whenever it can. Sometimes it can't and makes some errors here and there, but usually it's able to infer your types and sometimes infer other things that the decompiler can infer.
Like Python you can do a list comprehension and write one-liners, instead of writing like in Java, you need to write three or five lines of code just to do a for loop. And Scala is very succinct, and there's not as much typing as a language like Java, and compared to Python I'd say in some cases a Scala it's fewer variables. When you're defining a class, you don't actually need to write, if you don't need a body, you don't need to write a body for a Scala.
Adam: Are you using implicit within your codebase?
Andre: In Scala, there are two kinds of implicit. Implicit parameters and implicit conversions. Implicit parameters basically define some of the parameters of your method as implicit. As long as we think about the scope of the color, a variable of that type that is also an implicit variable. It's declared as implicit then you're able to just not write the code to pass that value into the function. So it's basically to avoid typing and so for those, we do use implicit. We don't use implicit conversions because we usually find that a little bit scary cause you know, you won't see when things are being converted. So generally, no implicit conversions, but we do use implicit parameters.
Adam: What's an implicit conversion?
Andre: Implicit conversion is when you have an object of type a, and then let's say that you'll want to convert it to an object of type b. There is a mechanism in Scala that you can define your conversion from type A to type B, and if you put that conversion in your scope, you're able to convert it from it for A to B without writing code to convert.
Adam: So it could be very handy and save on typing, but also maybe you don't know. What's changing to what?
Adam: In my experience, Scala can be less prone to runtime bugs. I think you mentioned you had some issues with runtime bugs getting to production in Python. So how did this change now that you've rewritten?
Andre: Yes, so in Scala, we do have a lot fewer runtime bugs, part of it is because your compiler would just get most of the errors. So as long as compilation passes, well, you don't have any programming errors you have like application logic bugs here in there, but that's another problem, right? And so, the compiler does a lot of stuff for you, and the unit testing framework is also very user friendly. So we can write a lot of tests that make sure that your code doesn't have the most common application logic errors that you'll know about. So, in the end, it's very hard to have these runtime bugs going on these Scala
Adam: What, what did you find to be the pain points, of moving to Scala as a language?
Pain Points of Moving to Scala
Andre: So I was actually more fascinated that Scala is like a modern language. It has so many nice things that we don't have in Python and Java that kind of outweighs the pain points. There are some pain points, but I would say that they're not actually the language itself. There are some small things here and there in the language, but those are not a big deal. Most of our pain points where let's say we have a library in Scala that it's like undocumented or we have a function that's available in Python by default are in one of the common libraries and it's not in Scala. So they're like some small things but I guess that that's true. Whenever you change, a codebase from one language to the other.
Adam: Nice. You mentioned there are some things about the language that fascinated you?
Andre: Okay, let me see – What are the things? So yes, I think one of the things is a well functioning, functional programming in general, how readable it makes it your code. Since the language is not too verbose the end result is that a, your code is very explicit on the application logic instead of having like a boilerplate of just like controlling your loops or things like that. I find coding in Scala very readable and that's nice, it's also very easy to just look at the code and see if there is a problem because, you know, it's all immutable and it's just easy to debug even without running any code.
I originally started my life as a programmer in Java and then you know when you're in Java and you move to Python, the first thing you think to yourself is that "Oh, I love lesser codes. It's much faster to write stuff. And then there's also that difference."
Scala is very fast to write code. So in the end, I spend my time not only writing code but all of that extra time that I would either spend you know just typing in Java or testing things in Python. I use that time to write a unit test in Scala and in the end, it's a confidence thing you can write code and be confident that things will work as you expect.
Adam: So you're back on the JVM, so you got tired of the JVM and you left, and now you're back. But the language, the language is more fun.
Andre: Yes, exactly
Adam: Is it faster to write Scala slower but worth the trade-offs or compared to Python compared to Java?
Andre: I'd say that far it's a bit slower than Python, but there, there are caveats, it's slower to write a piece of code, but then the amount of effort you have to maintain that code in your test code is a lot lower in Scala, so for me, in the long run, Scala is just a faster language than Python.
Adam: So, not faster to initially develop, but faster, like the all-in time.
Adam: So how about maintenance? So maybe you don't know, maybe this is so new that you haven't had to do much maintenance of it?
Andre: We haven't done that much maintenance because the system is very new but whenever we have to like refactor or something it's very easy to, cause, you know, your IDE does, does it fire you basically. So you don't even need to think about it. We just click two buttons and that's it.
Adam: The compiler gives you confidence, I would imagine too, or around these, these refactorings because you know, you get some sort of error checking?
Andre: Yes, exactly. So, I remembered the first time I had to refactor some stuff in Scala. I was just surprised that in fact, it would take me like, I don't know, an hour, maybe not an hour, but you know, a lot of types and in Scala I finished in like less than one minute and I was just so surprised. I mean, it's that sort of thing that after working with a Python a lot of time you just become so used to that, that whenever you have something nice, you're like, "Oh, that's nice."
Adam: Scala being on the JVM should, in a lot of cases, be much faster than Python. do, did you have any sort of numbers about that?
Andre: I wouldn't say like, so we haven't actually done any benchmarks that you would be able to trust that compares the exact same code in one environment, R and D out there the one thing that we have going on is that we, well we have rewritten the whole system. The whole session generator in Scala. we've, we have also rearchitected things and some of the performance gains that we saw were, so from rearchitecting and using the memory cache and, and using a street, we decreased latency from it was maybe 700 - 800 milliseconds to tenths of milliseconds. So it was like more than 10 times. That was very good at the number. Also, the number of servers that we need to show. Just to use to serve the same amount of traffic decreased by – how much was it? It was like maybe 10 times or so.
Adam: Well. So that's a big savings cost bottom line, I guess.
Scala and Savings Cost
Andre: Yes, and also just the fact that you know, Scala and the JVM general do better in both multithreaded, environment, and multiprocessing and it's able to, to just run a lot of stuff at the same time. It's nice, so one thing that's color has the Python does, for example, is a, it's called futures.
So what a future does is basically it's a unit of an asynchronous computation. So whenever you make a request, you'll get the response in the future, but the value is not there. The value is you're waiting for the value in another thread. So what happens is that you don't block your original thread. And because of that, you're able to do a better job in concurrency, for example. And that's one thing that we see in Scala that our servers are able to handle a lot more concurrent requests than Python? Because in Python whenever you have a request and then you're waiting for I/O, that thread is completely blocked. And if you have, I don't know, let's say 20 threads in your server, then you have one less to serve traffic.
Adam: Is there, is there a Python way to deal with this? Like, or there's just none?
Andre: Not that I know of well, not out of the box. Maybe there might be some libraries that do, for example, the actor model, which is something, it's, it's the thing that languages like Elixir and Erlang out of the box too, so it just handles concurrency better.
I think there is something for Python as well, there's Akka, it's a library for our Scala. And if I think if you use that, you might be better off, but not out of the box, not if you're using Pascal's pyramid.
Adam: Are you using the actor model in your session generator?
Andre: I'm not in the session generator. No, because we wanted to. The interactions with I/O are very simple in our session generator and there's also the overhead, to get it set up first because you know, nobody in the company had that kind of knowhow. So we chose to first do the more common approach but it's something that after you start reading, you become interested in it.
Adam: Are you using actors at all? I'm just curious because you mentioned it.
Andre: So we're thinking of implementing that for the offline part of the session generator because we have a lot of data. And in that situation it wouldn't make more sense to have a data pipeline that uses actors, for now, we still haven't had the opportunity to do it because, you know, we're still working on some other things, and that's not the highest priority yet.
Adam: Makes sense. So now that your rewrite is over. What were the business benefits of the rewrite? Like was it a success?
The Business Benefit of the Rewrite
Andre: Yes. So far now I think it's a success, it's not completely over yet because we have some, it's just some features to port, but it's mostly done. I would say it's a success because we were able to have like those cost benefits, it's just a lot cheaper to run or to serve traffic with the rewritten code and the rewritten architecture than the original one. Also, in terms of developer productivity, it's also very good because definitely. It's a little bit weird if I say it, but the feedback from the other developers is that it's just less painful and I think it's painful. It was the word they actually used.
Adam: So what makes it weird?
Andre: Well I started the whole process of moving to a Scala so I might be very biased towards the new system.
Adam: So you don't find it weird, but other, other people do? Is that what you're saying?
Andre: No, it would be weird for me to say cause I'm biased, but other people, I also got feedback from other people that it's less painful. It's that thing that I talked about we've like, you can write code, and I think that's very important.
Adam: Okay. I understand. Would the rewrite have been successful or as successful if you had made the architectural changes, but not the language change?
Andre: I think partially, with the architectural change, we would see improvements in latency. I think in Python they wouldn't be as large one reason is that Python is a bit slower than Scala. The other reason is that having a threat-safe caching Python is not as trivial as it should be. So I think that's, that that would be one problem. But also generally, we would lose all of the benefits of developer confidence of not pushing breaking changes, because you know, it's all dynamically typed and the, it would be much harder to make, like larger changes are just, you know, what the data structures are.
Language Learning Perspective
Adam: What is it like working at a company with such a focus on learning? Are you a language learner yourself? Does the company have a learning perspective based on what it does?
Andre: Yeah. So I think it's very interesting to work here. So I am a language learner so my native language is actually Portuguese. I was born in Brazil. I'm a Japanese-Brazilian, so my native language is Portuguese second language is English. I've learned Japanese and kind of know Spanish. It's very fun to be surrounded by people who have the same interests in learning. There are some people who are learning like a ton of languages and they know a lot of languages. And even, with our community. Sometimes when we meet some members of our community, it's like very interesting because they have all these, a view of worlds that you don't usually see in your daily life and know people who want you to learn new cultures and learn new languages and have a very broad horizon I'd say.
Adam: Yes I could see why that would be refreshing, people, Talking to people who have a global perspective. Well, it's been great to talk to you about this rewrite. I'm glad it's been a success. Thank you so much for your time.
Andre: Yes, thank you for, thank you for inviting me. It was great at talking to you.
Rewriting Doulingo's Engine in Scala

redpajama_set_name: RedPajamaCommonCrawl


0% of this provider's 367 patients who are 65 and older filled at least one prescription for an antipsychotic drug, compared to an average of 0%.
0% of this provider's 387 patients filled at least one prescription for an opioid, compared to an average of 2%.
50% of this provider's prescriptions were for brand-name drugs, compared to an average of 48%.
$119 was the average price of a prescription from this provider, compared to $87 among peers.
This provider's address and specialty information was last updated on Jan. 29, 2018.


text:
COOLEY v. THE STATE.
MCMURRAY, Presiding Judge.
Rape, etc. DeKalb Superior Court. Before Judge Coursey.
Defendant Cooley appeals his conviction of the offenses of rape, kidnapping with bodily injury, and robbery. Held:
1. Defendant's first enumeration of error raises the sufficiency of the evidence to authorize defendant's conviction on each charge. The evidence viewed in the light most favorable to upholding the verdict shows that the victim was staying temporarily with a friend, Acker. When the victim returned to Acker's apartment around 11:30 p.m., she found defendant present. After a conversation with the victim and defendant, Acker indicated that he was ready to go to sleep. The victim and defendant left the apartment at that time and went to the nearby apartment of defendant's mother. Defendant became embroiled in an argument with family members and the victim returned to Acker's apartment. Shortly thereafter, defendant returned to Acker's apartment and accused the victim of having taken some money from him. An argument began between the two and as it escalated Acker asked them to go outside. The victim and defendant continued to argue as they walked back to the vicinity of the apartment of defendant's mother. Defendant insisted that the victim proceed further and she refused at which point defendant knocked the victim unconscious causing her to suffer a broken tooth and various cuts and scratches about the face. The victim regained consciousness in a vacant apartment near defendant's mother's apartment; she had been disrobed. Defendant was lying on the victim as she regained consciousness and he proceeded by forcibly overcoming her resistance to have carnal knowledge of her. Afterwards, as the victim was fleeing the scene, defendant chased her down on the street and forcibly took her handbag from her.
Although defendant testified as to another account of the incident including that the sexual intercourse was consensual, the determination of credibility and resolution of conflicts in the evidence are for the jury. This Court does not reweigh the evidence but only determines its legal sufficiency. Holcomb v. State, 198 Ga. App. 547 (1) (402 SE2d 520). The evidence is sufficient to authorize any rational trier of fact to find defendant guilty beyond a reasonable doubt of the offenses charged. Jackson v. Virginia, 443 U. S. 307 (99 SC 2781, 61 LE2d 560); Hunnicutt v. State, 198 Ga. App. 572, 575 (402 SE2d 534).
2. Defendant contends the trial court erred by admitting evidence of a similar transaction, a previous rape which like the crime at issue occurred late at night after defendant had been drinking and using marijuana. "In criminal cases, the rule admitting evidence of similar crimes is an exception to the general rule against prejudicially putting a defendant's character in issue. Millwood v. State, 164 Ga. App. 699 (296 SE2d 239). But where its relevance to show identity, motive, plan, scheme, bent of mind and course of conduct, outweighs its prejudicial impact, it is properly admitted. Hayes v. State, 175 Ga. App. 135, 137 (332 SE2d 917); McCarty v. State, 165 Ga. App. 241, 243 (299 SE2d 95). However, before it is admissible, two conditions must be satisfied. First, there must be evidence that the defendant was in fact the perpetrator of the independent crime. Second, there must be sufficient similarity or connection between the independent crime and the offense charged. Davis v. State, 249 Ga. 309, 311 (290 SE2d 273)." Anderson v. State, 184 Ga. App. 293, 294 (361 SE2d 270). Both of the conditions prerequisite to the admission of the evidence at issue were satisfied. Based on these similarities there was no error in the trial court's admission of this evidence. Colquitt v. State, 196 Ga. App. 817, 818 (2) (397 SE2d 164).
3. The trial court did not err in curtailing the cross-examination of a witness who was the victim in the similar transaction crime. The witness had already testified that s)he was not using any drugs on the night of the similar transaction crime, that no one present at that incident was smoking crack cocaine and that she was familiar enough with cocaine to recognize when others used it. It was within the trial court's discretion in controlling cross-examination to sustain the State's objection to an inquiry as to whether she had ever used cocaine since such evidence was neither relevant nor material. Williamson v. State, 186 Ga. App. 589, 590 (2) (367 SE2d 863).
W. Edward Nethery, John H. Tarpley, for appellant.
DECIDED SEPTEMBER 10, 1991.
GOODMAN v. THE STATE (two cases). (237 Ga. App. 795) (516 SE2d 824) (1999)
PAYNE v. THE STATE. (206 Ga. App. 189) (424 SE2d 868) (1992)
BATTLES v. THE STATE. (205 Ga. App. 510) (422 SE2d 672) (1992)
LITTLE v. THE STATE. (205 Ga. App. 578) (423 SE2d 42) (1992)
Thursday May 21 09:36 EDT


text:
Home » Metaverse News » Metaverse Business » J.P. Morgan the first Metaverse Bank releases White Paper
J.P. Morgan the first Metaverse Bank releases White Paper
Metaverse Business Post date May 20, 2022 No Comments on J.P. Morgan the first Metaverse Bank releases White Paper
J.P. Morgan has become the first Wall Street bank to open in the Metaverse, having launched an investors lounge called Onyx in Decentraland, a decentralised Metaverse platform. The Onyx Lounge is built-in the Metajuku part of Decentraland. It features a circling tiger and a digital portrait of the CEO of J.P. Morgan. Upstairs, visitors can view a presentation on cryptocurrency economics.
The Metajuka District was created by Republic Realm and was inspired by the Harajuku, Tokyo known as the centre of Japanese street fashion. Decentraland's Metajuka is a pedestrian-friendly virtual shopping district that was purchased for $913,000 by Republic Realm in 2021 and features virtual fashion shops in 16,000 square feet of digital land. When you visit the Metajuka district the Onyx Lounge is one of the first things you see.
The Onyx Lounge is named after J.P. Morgan's Ethereum-based suite of products and opened alongside the release of a paper entitled "Opportunities in the Metaverse ". The paper discussed how businesses could explore the Metaverse and seize opportunities whilst avoiding this new sphere's hype. J.P. Morgan envisages a new world of interaction through digital avatars where people work, play and socialise. They hypothesise about the risk of investing in the Metaverse against being left behind in the digital landscape. It introduces the Metaverse to business leaders and compares web 2.0 and web 3.0 strategies of Metaverse platforms.
"The Metaverse will likely infiltrate every sector in some way in the coming years, with the market opportunity estimated at over $1 trillion in yearly revenues."
The paper reports that between June and December, virtual land doubled on decentralised platforms (monitoring four Metaverses: Decentraland, The Sandbox, Somnium Space and Cryptovoxels). J.P. Morgan highlights individual creators using Web 3.0 technology as the driving force behind the new metaverse economy. They introduce Metanomics (Metaverse Economics) and the creation of an avatar led meta-economy where advertising and marketing are one of the largest sectors. They identify gaming, digital gambling, sports betting and casinos as being ideally placed to capitalise and fuel the transition from cash to crypto.
"This democratic ownership economy coupled with the possibility of interoperability could unlock immense economic opportunities, whereby digital goods and services are no longer captive to a singular gaming platform or brand."
Metaverse banking and facilitating crypto exchange, virtual mortgages, and digital asset-backed financing could become a booming sector. J.P. Morgan sees the interoperability and the integration of crypto payments and NFTs on centralised platforms as a critical element of Metaverse's commercial infrastructure. The paper notes that Decentralised Finance (DeFi) could become the next-generation financing and Decentralised Autonomous Organisations (DAOs) could become financiers.
The Onyx Lounge provides a base for J.P. Morgan to explore the Metaverse and its potential for corporate and business clients alike. The Onyx will allow customers to create digital avatars, build virtual rooms and travel. J.P. Morgan can facilitate many of the banking needs needed for Metaverse travel such as crypto exchange through the Onyx. You can visit the Onyx by navigating your avatar to the Metajuku District in Decentraland.
Related to J.P. Morgan the first Metaverse Bank releases White Paper
← Mr Bean Steps into the Metaverse → The Fresh Prince Steps into the Metaverse


text:
This article was published on November 19, 2013
US government releases first NSA court order and Attorney General's annual reports to the public
Today the US Office of National Intelligence (ODNI) declassified a range of heavily-redacted reports and information around the NSA data collection processes.
Nearly 20,000 pages of documents have been declassified to date, but this batch is particularly revealing. It includes the initial court order that allowed NSA surveillance, training documents, FISC submissions and orders, information about metadata processes, and the Attorney General's annual reports from 2006-2012.
That's a mountain of documentation to peruse, but — for starters — it shows that the FISA has approved every single one of the hundreds of data requests made by the government over the past seven years, as former Reuters journalist Matthew Keys notes — visit the links below for more.
➤ DNI Clapper Declassifies Additional Intelligence Community Documents Regarding Collection Under Section 501 of the Foreign Intelligence Surveillance Act [Office of the Direct of National Intelligence]
Further reading: Court order that allowed NSA surveillance is revealed for first time [The Guardian]
Image via sergign / Shutterstock
Published November 19, 2013 - 8:46 am UTC
Can chatrooms replace courtrooms?
Trump's social network may launch on February 21 — and it's gonna be YUGE
Politicians and scientists manipulate us with surveys – AI could stop them
Big Tech is pushing states to pass privacy laws, and yes, you should be suspicious


Discussion in 'Android General Discussions' started by droidfreak, Dec 12, 2009.
Can my Droid phone set up different text notification sounds for specific people? Just curious asI would like to know without looking if it is from a family member VS a mass text mailing. Thabnks, this is a great place. I am definetely a newbie.
Can my Droid phone set up different text notification sounds for specific people?
I don't think the default messaging application does it, but Handcent does. I use it for exactly the reason you mention, and it's great. Different ring tone, different LED light, different notification icon in the notification bar. It's great.
I second Handcent SMS. It's a great app, free and does exactly what you're asking for. Also has a neat popup feature. It gets in the way at times but still a neat all-in-one SMS app.
Got the DL, thanks very much!


We have 134 used Peugeot 206 cars available on our site.
To view the full 134 available Peugeot 206 cars on our website, please use our search form for a more in depth search.
Peugeot 206 1.4 Verve 5dr 5 Door in Blue, Full Service History. MOT till 15 January 2020. Provided.Car has no issues and drives smoothly. A test Drive is always welcome at Kar4uLTD.
No problem, above is just a small sample of the 134 Peugeot 206 cars we currently have available.
Searching for a used Peugeot 206 car can be frustrating, all that choice, all those colours and nothing within your budget or on your doorstep. The people at BuyYourCar have tried to simplify the whole process of searching for a used Peugeot 206 car and make it an enjoyable one! Our super smart search, gives you the results quicker and simpler than our competitors, we believe searching for a new Peugeot car whether that be used or not, should be an enjoyable one, we work on the basis that the quicker it is for you to find a used Peugeot 206 car, the easier it is on making a decision to buy one. So if your looking for a used Peugeot 206 car, start your search with us! It might be the only search you need to make.
BuyYourCar gives you access to the UK's Largest Used Car Database, we search through all the very best used car sites in the UK and display their stock in one central location for your convenience. However, should you find that we haven't got the used Peugeot 206 car you wanted, we'd recommend visiting the sites below, they come highly recommended and they may have some brand new stock that we won't have until tomorrow.
A superb selection of used Peugeot 206 cars for sale keeps the dealers prices competitive.


text:
On October 22, 2008, jetBlue opened its new primary hub at John F. Kennedy International Airport (JFK), Terminal 5, or simply T5. The mostly new terminal, costing approximately $800 million,[41] partially encircles the historic TWA Flight Center, the former Trans World Airlines terminal designed by Eero Saarinen, which remains closed. According to the plan, passengers will eventually be able to check in for flights in the landmark building, then transfer to the new structure via the original passenger departing-arrival tubes from Saarinen's original terminal and its 1969 addition by Roche-Dinkeloo.[42]
Ever since Tolminc raw-milk cheeses and Slovenian marbled trout were featured on an episode of the Netflix series Chef's Table with chef Ana Roš, Slovenia's culinary star has been on the rise. Hiša Franko, the Soca Valley inn and restaurant that Roš runs with her sommelier husband, is now one of the region's hardest tables to get — prompting the pair to open a small brewpub, Hiša Polonka. Surging demand for Slovenia's natural and orange wines has driven local winemakers like Burja Estate and Movia to expand. And in the capital of Ljubljana, adventurous chefs at Monstera, Atelje, and Restavracija JB are helping redefine modern Slovenian cuisine, while the experimental farm and eatery Gostišče Grič has brought in a Swedish celebrity duck farmer and full-time forager to create one of Europe's most unexpected dining experiences. —Nicholas Gill
In March 22, 2010, jetBlue turned down incentives from the City of Orlando and announced its headquarters would keep its Forest Hills office,[46][47][48][49] start leasing and using a new office in the Brewster Building in Long Island City, New York.[50][51] in Queens Plaza in Long Island City,[49] move its headquarters there in mid-2012,[52] and start a joint branding deal with New York State using the iconic I Love NY logo.[49]
Golf Weekends: Great for team building and re-connecting with friends, golf getaways can include a day trip to a nearby public course or a weekend vacation to a luxury resort. Plan on PGA courses in California, check into a famous resort in Florida or play a few rounds on your business trip to Las Vegas. Best vacations for golfers can also mean a day trip to a nearby golf course which is fun and cheap.
In October 2013, jetBlue introduced Mint, a premium cabin service on transcontinental and select Caribbean flights. The service began in 2014, using the Airbus A321-231 aircraft ordered by jetBlue. These planes are outfitted with winglets, as well as with "lie flat" seats, and moveable partitions that can create small suites on the airplane.[56] Called "Mint" by jetBlue, these planes are configured with 16 business-class seats and 143 economy seats, instead of an all-economy configuration of 190 seats.[57]


Dining Services focuses on providing exceptional food with seasonal flavors and world-class service. We understand the importance of our role and influence outside of the dining facility. Our interactive dining concepts bring the preparation and presentation of foods face to face with our guests and allow them to select fresh, seasonal, and artisanal ingredients.
Whether you are planning a wedding, small conference, musical concert or sports-related event, our experienced staff will provide the personalized service and superior cuisine that you deserve. Looking for a meeting venue for your business or student organization? We have space for that, too - and we can cater your meeting breaks. We encourage you to give us a call and arrange a tour!
Planning your wedding is one of the most exciting times in your life and the Parkside Student Center at UW-Parkside has many options to make it everything you've dreamed of. Take a look at our ad on The Wedding Knot to request Parkside as your location.


Does anyone really care that Tiger committed, um, transgressions? Does anyone really care that his $1billion (yes, I said $1 billion) sponsor deals may drop right down into la toilette? The only one I care about is his, well, no one. In my opinion, if this country didn't make such a big deal about infidelity, 911 would never have happened. Yes, while DC impeached, the Republicans preached, and our country was breached by the terrorists. So, this should be another lesson to us. Or to you. Is life so boring that we need to follow the transgressions of …well, anyone? What say you?


Only down side is that it's not the actual post count but the valid entries. So all the chit-chat won't count, same goes for the required words. It's getting there but not quite yet.
some of the posts won't count because they are people chatting back and forth in there. If you look at the post in the list of posts, click the number showing the total replies. a new window should pop up that shows everyone that replied to that post and list the number of replies they have. Anything more than 1 will be deleted, so we are really set at a lower number.
We tried. If we don't get the total needed and the magic number does not come in a timely manner, I will contact them and either ask if we should continue or throw in the towel. The price of the recovery gear went up, so really it is over $1000 worth of recovery gear, but we cannot even get enough people that want to win free stuff to post, so I am not going to do anymore contests for a while after this until we get more people online that want to win free stuff.
Still trying to get people to enter. It is not over yet.


text:
Pentagon equity chief praises book calling 9/11 first responders 'menaces' as she pushes for 'revolution'
First on the fox – He described himself as "awakening" the Pentagon stock chief, and is currently Under investigation for anti-white tweets Revealed by Fox News Digital, it recommended a "social justice" book for classrooms that called 9/11 first responders "threats."
Kelisa Wing is the Chief of Diversity, Equality and Inclusion in the Pentagon's Education Wing – Department of Defense Education Activity (DoDEA). She is involved in the curriculum at the US Department of Defense, which serves more than 60,000 military-related children in 160 schools around the world, according to a press release announcing her position in December 2021.
Fox News Digital has found that on two occasions, the head of the US Department of Defense's Diversity, Equity and Inclusion Department has promoted an anti-police book. "Between the World and Me" by Ta-Nhisi Coates While she was representing herself as an employee in the education wing of the Pentagon.
Kelisa Wing has written books on "White Privilege" and "Defunding the Police".
In his book Between the World and Me, Coates wrote of the 9/11 responders, "They were not human to me. Black, or white, or whatever, was a danger to nature; they were fire, comet, and storm, which could—without justification— break my body."
The 'WOKE' section of the Defense Rights Chief writes anti-white posts:
The Pentagon was one of the targets of radical Islamic terrorists on 9/11. 125 people were killed in the Pentagon and 59 people were killed on American Airlines Flight 77.
according to Ministry of Defense The historian, "In the terrifying first minutes after the plane crashed into the building, the swift actions of survivors and rescue workers helped save the lives of many who would otherwise have been killed."
In 2018, when Wing was a teacher, she advocated the use of "Between the World and Me" in the classroom in an article for "Digital Promise," an Obama-era organization set up by Congress to help teachers monitor "threats of stereotypes" about students. Wing is currently on the nonprofit's advisory board, according to her website.
The article recommended teachers to include material fromSocial Justice Book List. One of the recommended anti-police books is Between Me and the World.
"Your classroom materials should be a mirror to your students where they can see themselves represented in it," the article said.
"We should also avoid getting into the trouble of teaching about the same historical people from different cultures as well (for example, focusing only on Martin Luther King Jr. or Harriet Tubman) when there is a wealth of diverse, historical and current people of color who we can choose to highlight."
Biden has partnered with an organization that has questioned the rights of parents to report their children's transmission
Wing has also co-wrote a children's book about Stop funding the policein which she explains to a young audience the differences between abolishing the police, defunding it, and dissolving it through anti-racist policies.
On another occasion, in 2021, Wing included "Between the World and Me" in a presentation for the DoDEA Stock Summit. The session video was captured by OpenTheBooks, a non-profit organization dedicated to government transparency.
Kelisa Wing reads a quote from "Between the World and Me" during a DoDEA session.
(DoDEA | screenshot)
"I love this quote from his book and it makes me think about the kind of environment we put in our classrooms, in our schools…Do we see children as culprits?" Wing said during her presentation.
The quote from Coats said: "I have come to see streets and schools as weapons of the same beast. One enjoys the formal power of the state while the other enjoys its tacit consent. But fear and violence were a weapon of both."
Wing commented, "I hope we set The environment in our schoolsin our system, where schools are not looking to not provide access to seeing our children in their full humanity and allowing them to succeed."
Wing is currently under investigation for tweets that referred to the whites as "Karen[s]She 'stressed with those whites in [professional development] sessions. "The matter will be submitted to the Undersecretary for Personnel and Readiness — Jill Cisneros — for a final decision 30 days after the initial review, which began on September 19, the Pentagon told Fox News.
Kelissa Wing, the Department of Defense's Head of Diversity, posts disparaging posts on white people on Twitter.
(Kelissa Wing/Twitter)
Wing's Twitter said, "…this lady really has the power to say that blacks can be racist too… I had to stop the session and give Karen the job… We're not the majority, we don't have the power."
"Caution" is a general term used to describe the boldness shown by whites.
On another occasion, Wing responded to a user who said, "I'm exhausted by 99% white men in education and 95% white women. Where can I get a break from white bullshit for a while?"
Wing replied, "If another Karen tells me about her feelings… I might lose her…"
As a result of these tweets, as well as books she co-authored, 22 House Republicans — including some members of the Armed Services Committee — demanded that Defense Secretary Lloyd Austin take "immediate action" to investigate her for "egregious bias."
"This awakened ideology is destroying our military and poisoning the minds of American children," said Representative Elise Stefanik, a New York Republican.
"If President Biden wants to know why there is a problem with hiring and low morale, he doesn't need to look further," said Senator Tom Cotton, R-Ark.
She's a "vigilant director," said Keelissa Wing, DEI's chief official in the Department of Defense's Education Division — known as DoDEA.
(Twitter / screenshot | Kelissa Suite)
Biden's egalitarian-obsessed education curator dodges academic priorities amid 'disastrous' reading scores
"This is very intentional. They put her in this place because [the Defense Department] It is another institution [the Biden administration] He has every intention of demolishing the 'former CIA Director, Mike Pompeo, He said.
In June 2021, Biden signed an executive order that "activates[d]… the approach … that was first put in place in the Obama and Biden administrations "and directed all federal agencies into it "Creation or promotion of senior diversity officials," among other priorities.
US Department of Defense Administrator Thomas Brady said, "Kelissa Wing is the perfect fit person to lead our efforts in building on the foundational work that has been done to support meaningful change in our organization."
"This new position will take a holistic approach to identifying and improving how to integrate practice Diversity, equality and inclusion In every aspect of the Department of Defense, from curricula and assessment to recruitment and professional development."
After protecting her tweets, Kelisa Wing's Twitter account appears to have been deleted or deactivated following Fox News Digital's investigation into her social media history.
(Kelissa Suite | Twitter / screenshot)
Wing said in September 2020 that she was trying to "completely demolish the system," according to the nonprofit OpenTheBooks.
"I am anti-racist," she said, according to the nonprofit. "[Anti-racist] It means I take an active stance to completely demolish, root out, rebuild and create something new, and that's exactly what we need to do in education. I know this sounds really revolutionary and challenging but there are a lot of mechanisms and tools that can help us get there."
CLICK HERE FOR FOX NEWS APP
Then an audience member asked Wing, "As we go through this racial arithmetic, is it time to really change education, transform the curriculum — is it time for a revolution?"
Wing responded "absolutely," according to the nonprofit.
Jessica Chasmar of Fox News, Houston Kane and Charles Kretz contributed to this report.
Hannah Grossman is an associate editor at Fox News Digital.
Mark Wahlberg, Julia Roberts and more stars who have moved out of Hollywood
Katie Porter berated Irvine mayor in texts: 'lecture me' on 'professionalism' and 'see what happens'


text:
Outrun the future
A lack of available labor has made automation an imperative for Spring Meadow Nursery.
Matt McClellan
Top photo: Rob Sackyta
With labor shortages all over the country, smart growers are looking for ways to do more with less. Grand Haven, Mich.-based Spring Meadow Nursery has changed its liner production system many times to accommodate a new transplanter or sticking machine.
Spring Meadow Nursery is happy to invest in automation, which general manager Jeremy Deppe considers vital to the future of the industry.
"If we want to continue to grow and provide young plants for our customers, then we need to be able to have either the people or the equipment to be able to continue growing," Deppe says. "To us, it's a no brainer to continue to find ways to automate as much as possible."
Automation is prevalent in every industry, but it's particularly important in horticulture because of the difficulty of finding quality labor.
"Automation, for us, does not necessarily save us money," Deppe says. "Machines aren't necessarily more efficient than humans, but if you can't find enough workers to do what you need to get done then it's irrelevant. You have to move to automation just to reduce the number of people that you need because it will become harder and harder to fill all the available spots."
Willing to change
Automation can be a fantastic help for a grower, but it's not a silver bullet. The machinery is not "plug-and-play." To reap the benefits, growers must evaluate the segment of their production system the equipment will attempt to automate. More than that, the nursery must be willing to change their process. And the workers must be able to adjust, as well.
With every piece of automation equipment that Spring Meadow has purchased, Deppe says it takes at least a year to understand the nuances of the machine, configure it properly and adjust the production process so that the new way is faster than the old way.
"You don't change the machine to fit your production system," Deppe says. "You have to change your production system to fit the machine."
The equipment has very tight tolerances. Measurements must be correct down to the millimeter.
So how do you make sure you're doing it right? The easiest way is to find someone else who has already done it and adapt what you can for your operation. The good news is nurseries can look to most other industries for examples.
"If the growers around the country would go and visit another industry and see what they're doing with automation, they'd be blown away," Deppe says. "They'd ask, 'Why aren't we doing this?'"
Spring Meadow has made a point of visiting other growers who have paved the way – pioneers of automation – locally and nationwide, and asking tons of questions. The horticulture industry is full of people who are willing to share and discuss best practices. Find them and ask what issues they've had, what they struggle with, what would have to change in their process, and if they think the investment was worth it.
"You don't change the machine to fit your production system. You have to change your production system to fit the machine." – Jeremy Deppe
Running on rails
One company Spring Meadow looked to for automation advice was Westbrook Greenhouse Systems. The Ontario-based company has manufactured all of Spring Meadow's greenhouses. But Westbrook is more than a manufacturer to Spring Meadow.
"What we like about working with Westbrook is, in addition to being a greenhouse manufacturer, they are a greenhouse grower," Deppe says.
Members of Spring Meadow's management team have toured Westbrook on several occasions. Seeing the large grower/manufacturer's adoption of automation encouraged Spring Meadow to try it themselves.
"We saw some of the homemade things that they were making internally for their own greenhouses and said, 'We can do that,'" Deppe says.
After their creative fires had been stoked, Spring Meadow set a team to making prototypes. Spring Meadow's greenhouses were custom-built to accommodate a 24-foot trimmer and a 24-foot sprayer and the rail system that is crucial to their operation. Both devices were inspired by Westbrook, and both run along a rail system that allows them to glide smoothly through the greenhouse.
It took two years and several prototypes to get the first 24-foot trimmer that Spring Meadow felt confident would work. Once the nursery was close to a finished product, they shopped it around to outside companies that could take their prototypes and make something built to last.
Deppe says Spring Meadow's team is continually looking for ways to utilize the rail system. The initial investment of installing the rails was the most expensive part. Developing the trimming and spraying machines was comparatively cheap. However, Deppe says those two machines have reduced Spring Meadow's labor in those two areas by 80 percent and given the nursery a more consistent and better product.
The success of the trimmer and sprayer on the rail system underlines a point Deppe makes about adopting automation in the nursery: don't be daunted; just try it. One of the hurdles growers trip over most often is seeing some immense example of automation and giving up. They want to automate, but it seems too big, too expensive, too complicated.
"Every idea that we have around here started out as a small idea," Deppe says. "It grew over time."
Starting small makes financial sense. Calculate your payback period for any new piece of equipment. When Spring Meadow first started dipping its toes in the automation waters, the nursery capped any project's payback period at three to five years.
"If it didn't fit that, we didn't buy it," Deppe says.
As Spring Meadow has grown and the lack of labor has forced their hand, the nursery has extended those timeframes.
Empower your team
If your employees are willing to put in the effort and you're willing to allocate some money and time for R&D, you could reap the benefits years down the road. Deppe is clear that his employees are the ones in the company that deserve the credit for thinking up wild ideas of how to simplify the nursery's production process or make it more efficient. The key is to remove fear from the equation. Many companies fear a project won't work, so they don't try. Deppe says it's crucial to make employees understand that it often won't work, at least not at first. He compares it to when his growers want to try something new but worry about killing their plants.
"I'm like 'kill them.' If they're not sold, kill them," he says. "Every single person in our nursery has killed plants. Every time you did it you learned something. You learned what to do and what not to do. Automation equipment is no different. Try it and see what happens. Do your research. Talk to the rest of the industry. Just do it."
The 24-foot trimmer uses a rail system to glide smoothly through the greenhouse, yielding more uniform plants.
Stick the landing
One common refrain you'll hear from growers who have invested in automation is to pay attention to how the Europeans do it. Deppe and the Spring Meadow team have visited European colleagues in their own industry. No matter whether they are growing annuals, perennials or shrubs, the one constant is that almost every operation is using significantly less labor.
"It's mind blowing when you walk over there how many people there are not in those greenhouses," Deppe says.
Spring Meadow's latest investment is a set of four machines that automate the labor-intensive task of sticking cuttings.
"As a propagator, as one who sticks millions of cuttings per year, the thought of a sticking machine is something we've dreamt about and hoped for, for years," Deppe says.
There were machines in the marketplace already, both small-scale and high-volume models, but none truly fit Spring Meadow's operation. Still, the hope remained. In 2015, Spring Meadow's management team saw an article about the ISO Model 2500 automated cutting planter. It piqued their interest, and after some research, they decided to reach out to the Dutch robotics company. Spring Meadow founder and president Dale Deppe and product development manager Tim Wood visited as part of a January 2016 trip to meet with customers and tour the IPM Essen trade show.
As part of the Proven Winners network, Spring Meadow Nursery has partners and customers all over Europe. Those partners were able to send cuttings of boxwood and hydrangea – "things we do every day," Deppe says – to the ISO Group for them to test.
The videos that ISO Group sent back were enough to convince Spring Meadow to take a chance.
"Our team said 'That's a lot of money to spend… but if this works, then it could completely change how we stick cuttings over the next five to ten years," Deppe says.
The first machine arrived in August 2016. After about six weeks of fiddling with the settings and trialing the machine, they ordered three more. Deppe expects the payback on these machines to be in the five to 10 year range, depending on how often they run them.
Spring Meadow Nursery
With the ISO machines, every cutting is pushed down to the same depth, which results in uniformity. Thanks to the self-learning vision software, cutting types of many species of plants can be planted in a short time. The user-friendly interface ensures the easy and fast input of new plants. The use of the machine is very flexible, regardless of whether the cuttings should be planted into a tray or pot, and in different planting patterns. The same machine can even process different pot sizes.
One person can operate up to seven machines, loading the conveyors with unsorted cuttings and empty trays. The conveyor shakes the cuttings to make it possible for the machine's two cameras to spot individual sprigs. The cameras scan for cuttings, and once one is found, relay its location to the robot arm, which zips over to pick it up. Next, the arm swings over to plant it in a waiting tray. The gripper is equipped with a pushing device to make sure the cutting is planted firmly in the medium. And the cycle repeats. The machines can plant in loose soil, paper plugs and peat plugs. At Spring Meadow, each machine can stick 2,000 cuttings in an hour.
The downside of automation is that it requires some tinkering. For these particular machines, there were several variables to consider, including the right type of cutting, size, and depth of placement.
Whether it's troubleshooting or programming tweaks, Spring Meadow has always been able to get the answers they need when they need them. The ISO Group has been available to help via Skype or traditional telephone calls.
"Even though we're six hours and an ocean apart, we can communicate almost daily, if needed," Deppe says.
For more: www.springmeadownursery.com
Ace the audit
3D printers help accelerate innovation in horticulture


Sir Charles Tupper was the longest-surviving Father of Confederation. He led Nova Scotia into Confederation in 1867. He went on to serve as the sixth Prime Minister of Canada in 1896.
Charles Tupper studied at Horton Academy, Wolfville, Nova Scotia (now Acadia University) before going on to study medicine at the University of Edinburgh, becoming a doctor in 1843.
Upon returning to Nova Scotia, he established his medical practice at Amherst.
He was the first president of the Canadian Medical Association from 1867 to 1870.
Tupper first ran for office as a Conservative in Nova Scotia in 1855. In 1864 Tupper took over the office of premier. He was a supporter of British North American union.
Charles Tupper was leader of the Nova Scotia delegates at all three Confederation conferences (the Charlottetown Conference, the Québec Conference, the London Conference).
In 1883-95 Tupper served as Canadian High Commissioner to the United Kingdom.
His 69-day term as prime minister in 1896 is currently the shortest in Canadian history.
Amherst is a town in northwestern Cumberland County, Nova Scotia.
Wolfville is a town in the North Western of Nova Scotia. The town is a home of Acadia University.


Would you have liked to live in the Paleolithic Era?
Experts think there were no more than one million humans living during any time of the Paleolithic Era.
A lot of this research has been centred on what are broadly thought of as 'literary' texts, such as chronicles, romances, poetry etc.
Muchas increíbles historias de citas Hay mucha gente como usted que está en busca de un amigo especial, un alma gemela, amistad, ya sea en el extranjero.


text:
Q: Change Button to JButton can't fixe it((( I'm stuck using Button and JButton
expected result.. ( all information working )
http://i.stack.imgur.com/3qX7v.png
 and what I have
http://i.stack.imgur.com/a4gao.png
I want to replace this:
Button butRock = new Button("Rock");
butRock.addActionListener(this);
ButtPan.add(butRock);

To This:
BufferedImage buttonIcon = ImageIO.read(new File("rock.jpg"));
JButton butRock = new JButton(new ImageIcon(buttonIcon));
butRock.addActionListener(this);
ButtPan.add(butRock);

I'm stuck because when I replace Button to JButton the program doesn't work properly...when I use this JButton
Question: How to replace the button with picture and that program still work properly...
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;
public class gui extends JFrame implements ActionListener
{
    public JLabel JWoL,JWoLPlayer,JWoLPC,JNumWin,JNumLose,JNumTie, logo;
    public JLabel JWinT,JLoseT,JTieT, rpsP, rpsC, result;
    JPanel LabelsPan;
    static final int WINS = 0, LOSSES = 1, DRAWS = 2;
    int[] counts = new int[3];
    String[] strings = {"| You Win", "| You Lose", "| Draw"};
    JLabel[] labels = {JNumWin, JNumLose, JNumTie};

    @SuppressWarnings("deprecation")
    public static void main(String[] args) throws IOException
    {
        gui theWindow = new gui();
        theWindow.show();
    }

    private void record(int type)
    {
        JWoL.setText(strings[type]);
        counts[type]++;
        labels[type].setText(""+counts[type]);
    }

    public gui() throws IOException
    {
        JPanel logo = new JPanel();
        logo.setLayout(new GridLayout(1,1));

        BufferedImage myPicture = ImageIO.read(new File("logo.jpg"));
        JLabel picLabel = new JLabel(new ImageIcon( myPicture ));
        add(picLabel);

        JPanel ButtPan=new JPanel();
        ButtPan.setLayout(new GridLayout(1,3));

        BufferedImage buttonIcon = ImageIO.read(new File("rock.jpg"));
        JButton butRock = new JButton(new ImageIcon(buttonIcon));
        butRock.addActionListener(this);
        ButtPan.add(butRock);

        Button butPaper = new Button("Paper");
        butPaper.addActionListener(this);
        ButtPan.add(butPaper);

        Button butScissors = new Button("Scissors");
        butScissors.addActionListener(this);
        ButtPan.add(butScissors);

        JWoLPlayer = new JLabel();
        JWoLPC = new JLabel();
        JWoL= new JLabel();

        JLabel rpsPlayer= new JLabel("| Your Choice:  ");
        JLabel rpsComputer= new JLabel("| Computers Choice:  ");
        setTitle("| RoPaS GAME |");

        LabelsPan=new JPanel();
        LabelsPan.setLayout(new GridLayout(3,2));

        rpsP = new JLabel();
        LabelsPan.add(rpsPlayer);
        LabelsPan.add(JWoLPlayer);

        rpsC = new JLabel();
        LabelsPan.add(rpsComputer);
        LabelsPan.add(JWoLPC);

        result =new JLabel();
        LabelsPan.add(JWoL,"Center");

        JPanel WLPan = new JPanel();
        WLPan.setLayout(new GridLayout(3, 2));

        JWinT = new JLabel("Wins: ");
        JLoseT = new JLabel("Losses: ");
        JTieT = new JLabel("Ties: ");

        WLPan.add(JWinT);
        JNumWin = new JLabel();
        WLPan.add(JNumWin);
        WLPan.add(JLoseT);

        JNumLose = new JLabel();
        WLPan.add(JNumLose);
        WLPan.add(JTieT);

        JNumTie = new JLabel();
        WLPan.add(JNumTie);
        JLabel[] labels1 = {JNumWin, JNumLose, JNumTie};
        labels = labels1;

        JPanel TwoPanesN1=new JPanel();

        TwoPanesN1.setLayout(new BorderLayout());
        TwoPanesN1.add(logo,"North");
        TwoPanesN1.add(LabelsPan,"West");
        TwoPanesN1.add(WLPan,"East");

        getContentPane().setLayout(new GridLayout(3,2));
        getContentPane().add(ButtPan);
        getContentPane().add(TwoPanesN1);

        Font fontDisplay = new Font("Arial", Font.BOLD, 16);
        JWoL.setFont(fontDisplay);
        LabelsPan.setFont(fontDisplay);
        setSize(400,250);
        setVisible(true);
        setResizable(false);

        addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent ev){System.exit(0);}});
    }

    public void Play(String PlayerChoice)
    {
        String PCchoice=PCansw();
        JWoLPC.setText(PCchoice);

        if(PlayerChoice.equals(PCchoice))
            record(DRAWS);

        else if(PlayerChoice.equals("Rock"))
            if(PCchoice.equals("Paper"))
                record(LOSSES);
            else
                record(WINS);

        else if(PlayerChoice.equals("Paper"))
            if(PCchoice.equals("Scissors"))
                record(LOSSES);
            else
                record(WINS);

        else if(PlayerChoice.equals("Scissors"))
            if(PCchoice.equals("Rock"))
                record(LOSSES);
            else
                record(WINS);

    }

    public String PCansw()
    {
        String rpsPC2="";
        int rpsPC=(int)(Math.random( )*3)+1;
        if(rpsPC==1)
            rpsPC2= "Rock";
        else if(rpsPC==2)
            rpsPC2= "Paper";
        else if(rpsPC==3)
            rpsPC2= "Scissors";
        return rpsPC2;
    }

    public void actionPerformed(ActionEvent e)
    {
        if(e.getActionCommand().equals("Exit"))
            System.exit(0);
        else
        {
            JWoLPlayer.setText(e.getActionCommand());
            Play(e.getActionCommand());
        }
    }

}

A: The problem is that you are using getActionCommand to determine which JButton was clicked but this property is not set by default in Swing. You would have to call
butRock.setActionCommand("Rock");

java.awt.Button automatically uses the label property as the ActionCommand if it not explicitly set. From the docs

If the command name is null (default) then this method returns the label of the button.

Some asides:

*

*Better to avoid mixing heavy & lightweight components and use lightweight components throughout the application.

*As your Rock, Paper, Scissors buttons have identical functionality, consider using an Action.

*A direct instance JFrame is typically used rather than extending the class

*Use Initial Threads

*Window#show is deprecated. Use Window#setVisible.

*Don't use System.exit - See more here

redpajama_set_name: RedPajamaStackExchange


text:
Shortstraw Release 'The Less We're Together' Video
Written by Tecla Ciolfi on 10 July 2017
With just two more songs left to release under their Those Meddling Kids umbrella, Shortstraw's latest single 'The Less We're Together' is a pop punk anthem that reminisces about a couple's good ol' days.
"You look better and better, the less we're together," has a nasty ring to it but truer lyrics in this track are harder to find. The accompanying video, directed by The Brave Cartel's Yolande Botha, came to be after she heard about the collective on Nick Hamman's 5FM show and decided to get in touch with the band.
"For me, brainstorming a music video always begins with listening to the track on repeat over the course of a day or two," Botha explains. "The emotion of the track is always the starting point for brainstorming and for 'The Less We're Together', there was definitely a strong feeling of anger, hurt and frustration."
The resulting video is crammed full of these traits, as we are introduced to three characters who seek out an unconventional therapist-type in order to vent. It's a brilliant video to watch if you're feeling a little down in the dumps and who knows, it might even provide you with an inspiration of sorts to make yourself feel better. Watch the video below.
Follow Tecla on Twitter.
Tecla runs this here show and wants you to wash your hands for a good 20 seconds, for the love of god.
Shane Cooper Launches New Band & Crowdfunding Campaign
Matt Carstens: 2D Heart


For a versatile multi-tool which can make light work of a number of tough gardening jobs, look no further than our fantastic 5 in 1 petrol cutting tool. Not only does this offer you a choice in applications, its dynamic and durable 52cc 2-stroke engine provides you with the power you need to always get the job done.
You can enjoy four cutting tools including a chainsaw, trimmer, brush cutter and hedge trimmer. To complete the set we also include a long reach pole, ensuring you can get to those high and difficult to reach branches and hedge tops without the need for a step ladder. With this tool you can take on your whole garden, from sorting out your grassy edges with the trimmer, to trimming bushes and roots with the brush cutter, to pruning your hedges and bushes with the hedge trimmer and finally tackling the tougher, thicker branches with the chainsaw.
Some assembly required. The product includes a comprehensive manual and we have many online guides to assist setup and use of this tool.
Communication excellent from purchase to delivery. Item purchased brilliant.


Hansel Cook is the librarian responsible for archives, special collections, and records at the Patrick power library at Saint Mary's University. He has a BA in political science from Dalhousie University (1995), and a Master's in Library and Information Studies from the University of British Columbia (2002). Hansel's research interests include the connections between the library and archival fields; the effect of war and conflict on libraries and archives; and community archives, particularly of immigrant communities. In 2016-2017 Hansel took a research leave to study the issues around accessing international archival collections for immigrant communities in Canada. Hansel has held several roles in library and archival professional associations, including President of the Council of Nova Scotia Archives from 2014-2016. He was recently appointed to the Nova Scotia Public Archives Board of Trustees.


We take great pride in sourcing and stocking only the best quality and best value wines, including the magnificent world renowned award winning Biddenden wines, grown only half a mile away.
Click on the images above to see the current wine lists available in the restaurant and bar. We also stock an extensive range of quality local and international wines that can be purchased in our shop.


Discover our selection of stunning, edgy and creative feature wall designs. Use a feature wall to combine your furnishing and interest – and create a room that describes your personality. Are you down to earth or a soft kind of person? Then go for a nature scene feature wall of a forest, lake or mountain to keep your surroundings on the same level as you. Or, just go for a feature wall with attitude; plain concrete, worn brick wall or urban graffiti. For the romantics, we've got several vintage floral designs that will turn your home into an adorable cottage by the countryside. Whatever style you might like, you'll find the feature wall of your dreams right here at Rebel Walls.
Take the opportunity to get the feature wall of your dreams. In Rebel Walls feature wall selection there're many options and possibilities for you to find the unique feature wall you've been searching for. You'll get your feature wall in the precise size you need it – no discards and also good for the environment. We'll print your feature wall using high-quality non-woven wallpaper and make sure the delivery goes smooth with our partner UPS.
Order your feature wall by first measuring the width and height of the wall you would like to hang it. We will then produce your feature wall on demand and deliver it to you with free wallpaper paste. We provide you simple instructions on how to install your feature wall on your own. All wallpaper lengths will be marked in the order they should be hanged on to the wall. Get your tools ready and in just a few hours you've given your home a whole new look; a stunning feature wall. Becoming a rebel is effortless!