text:
InfoQ Homepage Presentations Interaction Protocols: It's All about Good Manners
Interaction Protocols: It's All about Good Manners
Martin Thompson explores the history of protocols and their application when building distributed systems. Protocols provide the foundation on which the quality attributes are delivered; qualities such as performance, resilience, and security.
Martin Thompson is a Java Champion with over 2 decades of experience building complex and high-performance computing systems. He is most recently known for his work on Aeron and SBE. Previously at LMAX he was the co-founder and CTO when he created the Disruptor. He blogs at mechanical-sympathy.blogspot.com, and can be found giving training courses on performance and concurrency.
Software is changing the world. QCon empowers software development by facilitating the spread of knowledge and innovation in the developer community. A practitioner-driven conference, QCon is designed for technical team leads, architects, engineering directors, and project managers who influence innovation in their teams.
INFOQ EVENTS
April 4-6, 2022 (In-person, London), May 10-20, 2022 (Online)
Learn how to solve complex software engineering and leadership challenges. Attend in-person at QCon London, (April 4-6) or attend online at QCon Plus (May 10-20). Save your spot now!
Thompson: What am I going to talk about here today, because this is a performance track and it seems a little bit odd to talk about protocols? But I want to cover with two major things, to begin with, which are interesting. First thing is code. And probably not the code that you think, but the code that we write is encoding something else usually. So I'm going to cover a little bit of that, and it's the way we do stuff, the way we behave, the way things interact.
There are interesting codes that we have, like, what is the code to make good coffee I want to find? You go to Tuscany or anywhere in Italy and you get amazing coffee; go to a hotel anywhere in the U.K., or pretty much in the U.S., and you get coffee that's disgusting. Maybe they make coffee a bit like this. Is this the correct protocol to go make coffee? Well, actually, it would work, and that's most of the code that I get to see in production. People make stuff work. Questionable. Is it the right way to do it?
I want to talk about protocols, really. I'm going to say that I think protocols are one of the most significant discoveries of human history. At the end of the talk, we'll come back to that and see if we agree with this or not, and some of the points around it.
Protocols, what are they about? What sort of things are we thinking about here? As a word, what does it mean? Well, we're talking about a code, yeah. Okay, we get that, that's describing a strict adherence to an etiquette or precedent, etiquette and precedent together. And particularly, the precedence side, I find, is so important in code, because precedence is all about timing, the order in which things happen. As we get into concurrent and distributed systems, the order in which things happen is very key to making that work. How do things behave? Etiquette is really about behavior. I'm going to explore this in some detail.
From a computing perspective, it's also described like this: a set of conventions governing the treatment and formatting of data. Often people just think about the formatting. It is an important part, but it's only a small part. The treatment is actually way more important, and treatment is about etiquette and precedence. We're going to go into that. But before we get into some of the computing stuff, I want to talk a little bit about how we've evolved as humans and what we have learned. I find this subject fascinating, because I find there's so much to learn in it for myself as well.
Going back I started studying this, and there's a lot of origin in evolutionary biology, where we come up with protocols, where we come up with etiquette manners, all of that sort of thing, and how it influences what we do. Interesting things go right back to things like facial expressions. Charles Darwin, we know his work on things like Origin of the Species, but he did a lot of other things, like looking at how different societies evolved and how we communicate and learn. There are some real innate things that don't require teaching. People know this without it being taught to them around how we recognize things. We recognize shame, we recognize disgust, regardless of language, even if someone has never been taught language. There are incidences in the world where people have unfortunately had a feral upbringing that were never introduced to language, they still understand things like shame and disgust. So we get that.
We see this in other things. I love dogs. I've interacted with dogs all my life. It's really clear, dogs know shame. There are some things that are innate in what we do. There are things that we can learn from this. And does it work in code? I've seen a lot of JavaScript, and it's pretty disgusting. We can definitely learn from some of these sorts of things.
Then it's evolved. So it goes much further. That's the wheel to the core biology stuff. We have taken this much further. We're the smart apes that exist in the world. We've taken it through things like etiquette and manners. This is actually really interesting, where we start to form protocols around doing stuff. The etiquettes around things are very interesting.
There are three types of manners that come out from etiquette. At a base level, we have what are known as the hygiene style manners. That's all the really base level stuff that's important, mostly about the prevention of disease. So a lot of the shame and disgust and different things come about from that as well. We teach people around things that will help prevent disease. It's also things like how close we get to different people, the public space, personal space, intimate space. You don't involve people, go into people's intimate space, mostly because it prevents the spread of disease. We have evolved in certain ways to do stuff. And then there's ways we relax some of these rules.
Going on from the hygiene stuff, we then have the courtesy side of things. This is how we bond and create societies. This is being polite, is one way of thinking about it. So someone else can eat before I eat. What you're saying there is, you're saying that the society is more important, the community is more important than me as an individual. We learn these things because, actually, our individual survival is based on survival of the society. So you start to see how things should behave around that level.
Then it gets more advanced again with like cultural norms. So people all behaving in a similar way, and you identify as part of the group. What that does is it builds trust, and then certain other things can be relaxed. You can relax some of the more strict things you would have around boundaries, mistrusting other people, you make things more efficient. We've evolved through a lot of these sorts of things. As we got more advanced as a society, we start to use them in interesting ways.
One of the very common ones that is well-documented and well-understood, is the military. We have very strict protocols around how we go to war. How do we act in the cases of wars? This is known as the rules of engagement, for anybody who's had any military experience. And you'll see, it's all about what is acceptable whenever you go to war, because war should be considered as a last ditch attempt to do something. I've seen a great talk with a guy called General Mike Jackson a number of years ago, and he said, "The point of war is not to defeat or crush your enemy. The point of war is to change someone's mind." It's whenever you've got a disagreement, it's the last thing you do before trying to change their mind. It's the ultimate thing you can do, but it's the only thing that should be done as a last resort.
Talking of the good conditions to succeed. If you look at the laws that surround this, they fall into two groups. This is the jus ad bellum and the jus ad bello. The first one is the Latin term for the right to go to war. There's a strict protocol you should follow before you start a war. That's things like you must go through diplomacy, you must behave in a certain way, and then it's a last ditch attempt. If you don't follow those, there's a difference between being a soldier and a murderer or a criminal. The difference in murder and war is, do you follow these laws? So there's a strict protocol around this.
There's a lot to be learned about how people have done this. By doing that, they end up behaving in better ways, we cause less damage, we do certain things. Examples in this is like, two things should be proportional. If you're a superpower that has nuclear weapons, and somebody happens to blow up one of your ships, you don't retaliate and nuke their capital. That is not acceptable as behavior. You're supposed to be proportionate. Then if it escalates, you're still within the law. So this gets interesting. A lot to be learned from our history in this.
Concurrent & Distributed Systems
Let's go on to concurrent and distributed systems. How does some of this start to go through and how can we apply- because it might seem a bit high level. What fundamentally we're talking about is how do things interact? This is really the whole essence of when we write code, is we are encoding how things interact. Getting that right makes a big difference to the quality of the given output. We've evolved as humans with all of these protocols because we want a certain quality outcome. As an engineering discipline, we're very young. We're very immature and we're working some of this side.
What can we do to get a bit better at this and what can we learn? There are some bodies out there that have done really great work in this space. The IETF is probably one of the best examples of this, where we very strictly document our protocols. They're known as the RFCs typically, and we follow those. This allows us to create great things like the internet. We wouldn't have the internet without the RFCs to describe the protocols for what we're going to deal with. Coming back to coffee again for a second, how do we make coffee? The IETF has even got a fun thing that happens. On the 1st of April each year, they usually release an RFC that describes something interesting. This particular one was a hypertext protocol for controlling the coffee pot. They produce some of this. And it's fun, and some of the bits is like you can return a 418 to say, "I'm a tea pot," rather than, "I make coffee."
That's the fun side. And they do continue on, there are various other examples of this. Some of them are fun, but also really informative. Anyone heard of Big-Endian and Little-Endian as a way of encoding integers? This paper is the best description I have seen of it anywhere. It's one of the 1st of April papers that come out from the IETF. Back in 1980, and if you haven't read this, you'll actually discover the origin of why we call it big-endian and little-endian. It's to do with "Gulliver's Travels," Lilliput, where the people there were divided and had different views. How do you have societies believing in different things? Well, what they believed in was one group said, you eat your boiled eggs by smashing the big end, and the other one smash the little end to get into the egg. And that is the origin of big-endian and little-endian, it's the endian of the egg.
This paper describes the origin of that, but it also describes why we do it with memory, and the interesting stuff around that. That's cool, a way to learn some of these things, but also have a bit of fun at the same time. Various other examples is like, how do we do IP over Avian Carriers? That was there. That was expanded with, how do we add QoS to that? We've got quality of service. We can take on a bit further. And just recently, we updated it to next year, we've covered IPv6. This is the stuff in there, good fun, sort of interesting.
How Should We Document Our Protocols?
How do we make this a bit more practical for ourselves? Particularly, how do we document our protocols? I find this is actually one of the really good things you should do when you're working on any project that's of any sort of complexity, is start documenting your protocol. What do I mean by this? Well, you can hear about APIs versus protocols, I think APIs are a very one-dimensional, a very anemic view, and protocols are a much better way of thinking about it. So people who have API design, that's a very narrow dimension of it. But it's not complicated. For example, let's say I wanted to write a protocol for how to use a file system. I want to use a file. It could be as simple as, I open a file, I can perform zero or more read or write operations, and I close the file.
Now, that's the pseudo regular expression style syntax. I've seen some people use extended NET Backus-Naur form. There are other ways we can do this, but I like this as a way to do something. It's actually pretty simple. Notice, it tells you the precedence, as well as what operations are available there. An API does not give you the precedence for its usage. That's really important. So, you end up making a lot less mistakes when you've described the precedence.
Then you go on and you expound that and you say, "Okay, what is a read operation? What's a write? What's an open?" These sorts of things. But just doing that, it really improves the quality of the component you're developing or the system you're developing. You know how you should interact with it. That can just be a piece of ASCII, that's there documenting your component and how to use it. That's usually how I start with most of my distributed systems or concurrent systems I work on; I put something like that together, I flesh it with so much of my own thinking, by doing something as simple as that.
And then what do you do with this? Well, just think, what are the events that are happening in your system? What are the pre and post conditions? What are the invariance that are going to hold true whenever these things occur? And just document it. Write it down in text. You're encoding what your protocol is going to be, and then later, you will encode it in whatever your preferred language is, hopefully not JavaScript. Otherwise, you see the disgust again coming through. Oh, and particularly in the disgusting bit, what can go wrong besides writing JavaScript? Todd Montgomery who I get to work with a lot, this is one thing he's taught me that's such an important thing in designing protocols- when you look at any step in the system, or any interaction that's going to happen, what can go wrong? Always answer that question, or ask that question and try to answer it.
Todd has written lots of software that was involved in space exploration, so he worked for NASA and different things. Just have the mindset of what can go wrong. This is why I think things like RPC is so broken; most people just assume it's going to work. That leads us down a wrong road, where you think, "It's asynchronous communication. I'll send a request, I'll maybe get a response back. What can go wrong?" You may not get the response. That should be a normal thing that you think about. How do you deal with it? How do you tie a knot? How do we do things in an interesting way? Very, very simple examples.
Multicast Example
Let's make it a bit more real and show a reasonably interesting, complicated example. So, let's say I want to build a system, say it's a whiteboard or a chat room, or just something I want to show lots of information to a large number of users. Multicast is a really nice way to do that. I'm going to send the data out from a source to many different receivers. Now, we can implement that in a number of different ways. If we did it with TCP, one of the problems is it doesn't scale. If you do it that way, you end up having to send the data to all of the different receivers and handle acknowledgement back from all of them. So you get a problem of all of this traffic exploding up. Multicast is nice, because you can send it once and all the receivers get it.
But we've got some issues with multicast and UDP in general, it's not reliable. How do you know if you've lost data? Do you use an acknowledgement protocol if you start acknowledging back? That doesn't scale up either because as you add numbers of receivers, it doesn't scale up, because we're dealing with too much data coming back. So we take a different approach; we won't just acknowledge, we will negatively acknowledge. So just send a NAK when you don't get data or data arrives out of sequence. That way we can scale up much better because you're going to rely on the fact that loss is going to be a more infrequent event than successful delivery. That's a different protocol, a different way of thinking, but it's got some issues as well.
Either we have an ACK implosion, but we can also get NAK implosions. Let's say you send from the source, and most times when you have loss, loss is correlated with some event, like I have overrun a buffer at the source. I've overrun a buffer at the network switch that's then going to distribute this data. Once you've done that, you now have some loss. All the receivers are all probably likely to experience the same loss. If they're good in NAK, they all NAK at the same time. The source gets all of those NAKs, a huge amount of NAKs, it then goes to send all that data multiple times to all of the different receivers. And now we've got a meltdown scenario, because all of this data goes out, that floods the network. You've probably got a loss problem in the first place, Now you've got even more data in your feedback cycle, and you get into what's known as a NAK implosion or a congestion collapse. These sorts of things end up happening.
How could we deal with that better? Well, there are some really interesting work in this space, like going back to the 1980s and slightly beyond that. One of them is a nice paper by Sally Floyd. Sally Floyd worked with Jacobson, and rescued a lot of the internet in the 1980s. We suffered from a thing called congestion collapse over TCP. They brought in congestion control to TCP and really improved things. Sally, some other great contribution is some of the work here, where what ends up happening is when you go to a NAK, how about not everybody NAKs, not everybody screams at the same time? So let's say something goes wrong in the room. If everybody screams it's wrong, it's just too much noise. What if, say, you notice that something's gone wrong and you decide, "I'm going to wait a little bit of time to see, has anybody else noticed it first? Just a reasonable little bit of time. If somebody else raises it first, I won't raise it as an issue because it's fine, it's already been dealt with."
She encoded it in this algorithm by doing this. What you do is, if you get loss, you set a random timer for a very short period of time in the future related to how long it takes for communication to happen, so quite a short period of time. The random timers are going to go off between now and this given timeline in that normal distribution. The first one to go off will end up sending the request to get the data sent again. The data will be re-sent; because it's multicast it's sent to everyone. Then whenever the others have seen this data, they know that they don't need to send the NAK themselves because they've already got it. So they just listen for the data to be re-sent.
Now we've only had one or maybe a small number of NAKs, and we've dealt with all of this data. Nice, simple, clean. No central control, using random timers as a way of doing something. Beautifully simple algorithm, scales really, really nicely. I think that's a really interesting way of thinking about the problem. To me, that's the essence of really good protocols, especially thinking about how a group or community of entities, whatever they happen to be, this case happens to be computing knows that are saying that I haven't got the data, they're behaving in a really nice, interesting, coordinated way. And this ends up scaling quite nicely.
But that sort of thinking inspired some other people. Now, this was done with a normal distribution. What happens is with a normal distribution, you still can get clusters of NAKs, you can get quite a lot coming along. So you end up with a thing called NAK suppression, needs be added to that algorithm to dampen it out a little bit more. Someone had a good idea of what will change this. Rather than doing the timer's firing with a normal distribution, if we change the distribution to be an exponential distribution and we truncate it at both ends, we get this really nice, interesting property where the bulk of the timers are going to fire later in the cycle. But we're going to truncate the lower end, and with reasonable numbers, and if you set the sample sets correctly, you will likely get the timer to fire really quite soon, but you don't have to suppress stuff because there's very little NAKs flying around.
This ended up being a really nice improvement on that. We end up getting even lower latency, we don't need NAK suppression, and we take a lot of network traffic away. So, again, beautiful algorithm. Using mathematics, using cooperation, we get higher throughput, lower latency, and a really nice, elegant solution. It's not all clever coding and bit shifting, but we get a really good solution to the thing by thinking, what are the protocols of interaction? As people are thinking differently, I think there's some really cool stuff in here. By the way, that is the algorithm we ended up implementing in Aeron and we've been getting really great results from it. It's such a simple, elegant code. It just works really well, rather than going with something overly complicated and complex.
What Should We Focus on?
What should we focus on if we're going to look at protocols in general? There are lots of things within protocols. I'm not going to cover all of these, but I just want to highlight, it's a really interesting, rich subject and a rich history, the different things that are on there. I'm going to pick out a few of them and show as I go, how do they impact how we interact? How do we learn from that? How do we make some of our code a bit better?
Since we're in a performance track, I'm going to give you the one tip that will make the biggest difference to your code from a performance perspective. And that's when you come to the encoding step, please don't use text protocols. Use binary instead, it's the single biggest thing you can probably make as a difference, yet we keep producing all of this JSON and XML and YAML and, oh, disgust is going to come out of me again. Do the people who write all of these things, are they typically neurotypical and have no interaction skills with the world, did they never experience disgust from the people around them as they produce this stuff?
Clearly, some of it has gone wrong in our interactions with these things. Let's use binary protocols. Well, people say, "I know, but text is so much easier, it's human readable." Rubbish. It's not human readable. I know very few people who can read ASCII, and virtually no one who can read UTF-8. You've got a text editor that can read it, and you can read that. You've got a tool that can do it. If you want binary to work well, you write a tool to do the binary. That's what you need. It's not that the text itself is human readable. It's really interesting how we contort how we think about the world. We miss some of the interesting points.
Whenever we do it in binary, we can go with what people in IETF would call protocol porn, and we describe it in ASCII, it is how things are laid out. And then we can write our tools to deal with this and work quite nicely. We'll see so many cycles in how we deal with these things. So, that's the main thing on performance. I'll come back to a few other things on performance, but if you just at least do that, hopefully we'll save a few more trees around the planet and people will stop wasting lots of CPU time. I'm not joking- I get to profile many real world applications, and sometimes the business logic, the percentage of time spent in it is an absolute rounding error, often less than 1%. So much is the time taken to scrap off the network to eventually go through many, many, many layers of translations to eventually invoke some business functionality at the end of it. That's what we do a lot of.
Let's pick another topic in here, versioning. Versioning is a really interesting, fascinating one as well. Something I've discovered, that my own learning and understanding of it has been really advancing. It's a subject I keep finding more and more interesting things within it. And so, what are we talking about in versioning? So, versioning and identity can often be interlinked as well. When you talk about protocols, what conversation are we having? That's the first one of the important things that we're having, is that when you're engaged in any conversation, any sort of message that you get, which protocol does this belong to? It's good to know that and count that version over time, so can we upgrade stuff, keep things going?
The messages themselves is what is the version of the encoding? Is this version one? Is it version two? Is it version three? We can add fields to things. We can never take stuff away if we want to have a system be up all of the time. We can add stuff and we can expand, but we deal with this for versioning. It all works really well. What's way more interesting and something my own understanding has been coming forward a lot with, is the versioning of state. This is a really fascinating topic in its own right. What do I mean by this? Let's give some examples.
Well, I've done some work on some multi-producer, multi-consumer queues, and I like to do things lock-free. The space I work in requires a lot of performance, so we are doing lock-free algorithms using atomic primitives around things. And there's some great work like Lamport's or Fast Flow, various other stuff that's out there over time. I've been taking algorithms that were like single-producer/single-consumer, multi-producer of single-consumer, evolving all of these, combining some of the algorithms, doing quite well. Multi-producer/multi-consumer is a really interestingly complicated one. And you can evolve some of Lamport's work and some of the other work to get a working solution.
I find that some of the ones I produced in this worked reasonably well, and got reasonable performance. And then after a few years, I've seen these odd bugs that would appear, and then discovered there were some flaws in my algorithm, I needed to fix it. I eventually dug into it to find out what was wrong in it, and had these odd cases of where queues were particularly full or empty at wrap cases. You can end up with ABA problems, and you get bugs in your code and you have to fix them. I came up with some quite complicated solutions to fix it by CAS-ing different things, and I could do an algorithm over two CASs and some ordering rules. And it would work, but it was uncomfortable.
Then I started searching around to see, "Well, what can be done better? How can we deal with this better?" I came across this 1024cores.net site. There's a guy, he produces this, Dmitry Vyukov, he now works on the Go team, he was at Intel before, and he has a beautiful algorithm for multi-producer/multi-consumer. I remember whenever I read it, I just thought, "Wow." It just so made it so much easier. He does it with one CAS, but the thing that he does that's fundamentally different is he versions everything that comes into the queue and everything that goes out of it. So you've got the sequence slot that you use, so you never get the ABA problem because everything is given its own sequence.
There's an interesting trade-off for that. It requires more memory to track this, but it actually performs really, really well. In C, it's beautiful because you can keep an array of structures where you've got a pointer to the object that you're putting in and the sequence number side-by-side. Unfortunately, we can't do that sort of thing in languages like Java, because we've only got arrays of references. If we've got arrays of value types, this would be much better and we could deal with keeping code. But you can implement it by two arrays with the same slot index, it means the same sort of thing. This was so much more elegant, but it was just versioning the state of the interactions, because you got producers and you got consumers. If a producer produces something, if it's given a version ID, you know that it's the right thing that's been handed off. And you know who owns a slot at any given point in time without any locks. So, versioning the state, really interesting.
Another example of versioning the state is consensus algorithms. So, things like Raft is the current popular algorithm in this space. We version everything around this. Every message has got a version number. It goes forward monotonically, but also things like elections. So if we get an election, the election has a leadership term ID and a candidate term ID that will deal with this. And this goes forward monotonically. If you get a message that says, "Ways to run your network," it comes back later but it's from an earlier election, you know it's from another election because it's got the version number on it. These sort of things start to matter. And then it makes it so much easier in a distributed or a concurrent context to do this. I think this is one of the most important personal discoveries for me, getting some of these algorithms right. It really makes it so much easier. So be aware of that.
Sync vs. Async
The good old sync versus async debate is really interesting, especially in concurrent distributed systems. Let's explore what some of this means from a timing perspective. If I've got two things that want to communicate together and they're going to use a synchronous protocol, after I send a request from one, send the response back. Send another request, another response back. Request, response. Time is progressing as we go with this. If we increase the latency, what happens? I can get less done in the same amount of time. We program lots of things using synchronous protocols by request-response.
What's happening in the meantime? We end up having to send a request, but waiting for a long enough period of time. We often block on the response, which means the operating system has to get involved, this thread has to be suspended, it has to be woken up again whenever the packet comes back from the other side. We spend a lot of time on overhead and bureaucracy and dealing with these, plus the time to deal with these sorts of algorithms. If it's asynchronous, what happens instead? We send a request, we don't wait for a response, we can send another request, we can send another request. And then the responses all start coming back. We greatly compress the time we're dealing with this. In any distributed system, if you start being asynchronous, we can get so much more done by sending requests and getting the responses.
We increase the latency, what happens? It does much better. So, even as latency increases, async plays off much better. When I say Todd was banging into me, the guy who taught me about what can go wrong, he was writing a software that was talking to things going to Mars and farther out in the solar system. Latency is a real serious problem there. You do not do rest, request, response, when you're talking to something on its way to Saturn. It's not going to really work. We have these silly ways of thinking and looking at software which deals with it.
What's happening in this sort of case? Well, if I'm making non-blocking sends and non-blocking receives, I can do other things in the meantime. So, I can send the stuff. I can go off and do other things. I can come back. I teach concurrency, and I do a few courses a year, it's interesting. Looking at, what are the characteristics that make good concurrent programmers? One of the things I find quite common are the people who play musical instruments in a band, because they're used to working with other people, and people who are good at cooking. Because if you're in the kitchen, and you have to deal with multiple things all happening at the same time, if you're synchronous, you can't make anything interesting. Thinking of the ways we approach this stuff, it's really interesting.
But people will say, "But synchronous is so much easier." No, it's not. It's just it's how you think about the problem. It's how you manage the feedback and how you manage the state. Using the thread stack to manage your state is a very opaque way of doing that. You've got multiple requests going, how do you monitor a system that's doing that without doing something really weird? If you have the state model for what's going on, like proper state machines, then okay, I'm sending this off, I send a request off, I change the state. I get a response back, I change the state. I don't get a response back, I get a timeline, whatever. You make all of that as part of the model of your demand and make it observable. You can now see what's going on in your system. It's not opaque anymore. It's a different way of thinking.
I find that synchronous systems, you get going really quickly, and then it gets really hard as complexity builds up. Asynchronous systems are a bit harder to get going initially, but then you hit the same level of complexity. Unfortunately, we're driven this instant, we want instant feedback and instantly getting things done well. This is why we have problems like JavaScript, where we have problems with VB. We have to know that we have to actually do a little bit more work up front, but then we can do it much better later on. We need to demonstrate that disgust much more when we see these bad practices being put into place.
Think about it, this is the real world. The real world is decoupled in space and time. To pretend it's not is crazy. All underlying protocols are send something off, get something back; they're asynchronous under the hood. But we force synchronous on top of it. If you're going to build your own system and your own API, at least think about this, is if you're going to build something, build it with an asynchronous interface. Then wrap it with synchronous. If you get the people who need methadone, and they can't get off, the bad drug habit they've got of using synchronous programming, give them this for a bit and try and wean them off it. Don't go ahead and just build a synchronous API, because then you're just locking it in and you're making it worse for the future. You won't get the performance.
We can see some of this with some of the history of certain protocols and how they work. Things like RPC, HTTP, TCP. Typically these days, RPC is on top of HTTP, which is on top of TCP. Really inappropriate protocols. TCP was not designed for request-response. Anybody who wants to grab me afterwards, we'll talk about time wait and fast start, and all the problems that are in TCP. It's such the wrong protocol. It's a great protocol, not for what it's being used for. We then wrap it with HTTP, which is a document fetching model, and we're using this to communicate to servers, and then we put in RPC. No one has been broken for years, and yet we keep doing this. Come on, please, let's show our disgust more and stop doing some of this stuff, because it's bad.
We end up trying to fix this by gaffer tape and bonding. It's like TCP now has fast open to try and get running some of the slow start processes. We're now using QUIC. So if you use a Google browser, talking to a Google service, you don't use TCP anymore. You're typically going over QUIC which just a UDP-based protocol. It's much better for what you end up doing. We're seeing HTTP/1 go through things like SPDY, and HTTP/2 is available now. Also things like the encodings, we're not using text encodings anymore. We're moving to binary encodings. People are learning, "This is what we need to do. We need to get better." Some really good examples in TLS going from 1.1 to 1.2 receive or round trip time, because being locked into some of the synchronous stuff is really, really hurting us. Go read protocols, you're going to find out much more about this.
Batching. This is an interesting one. Take this back to protocol. Think about the etiquette of making a request. Humans do this really horrible thing, whenever we want to be unpleasant to any group of society or any group of individuals, we dehumanize them. Because then that takes us away from our instincts, our protocols that come into place. We dehumanize them. Imagine you going to a friend's house, and they're making dinner and you're getting involved with it. And he says, "Do you know what? I need a pint of milk. Can you run down to the shops for me and get a pint of milk to finish this?" All friends go, "Yeah, no problem. Let's go do this." So you go get the pint of milk and you come back again. And then they said, "Oh, actually I need another pint of milk. Could you go back to the shops and get me another one?" You go back to the shops and get another pint of milk, and then you come back and he says, "No, actually I need another one, and I need a block of cheese." You're going to get pissed off with your friend at this. You're going to start showing some of those basic hygiene manners. You're going to train them into, "You should have really thought about how much you need and go get them."
So, think about it. We deal with computers without thinking about the interactions. We disconnect ourselves from that, and that causes a lot of really bad behaviors and things that we have evolved to deal with. We've got to think a little bit differently. We need to, for how some of the stuff's going to do. Like, can we use 100 gigabit Ethernet connection using our current APIs and ways of interacting with it? We can't. We can't use the sockets BSD API to get 100 gigabit Ethernet working, because we just can't make that number of syscalls. It becomes a real problem.
Syscalls are something that is such a limiting factor in our performance. And now with things like spectrum meltdown, they're becoming even more expensive. We need to work out if we're going to use these as an expensive thing, we use them as infrequently as possible. And we batch and we think of different ways of doing stuff. For example, if you're in the networking space, if you're on Linux, for a while, you've been able to do things like send a message and receive a message, where you can send multiple things to the network in one system call, receive multiple things. Like, don't send a friend to get a pint of milk three times. Ask for three pints of milk. Do that sort of stuff. So think about being, "Can I do this?"
We've seen other protocols that have come up in user space to save us these. Then we're going to asynchronous protocol, so things like DPDK, ef_vi, RDMA. These allow us to get full usage of things like 100 gigabit Ethernet stacks. We've got to think differently. RPC, with TCP and HTTP and all that stuff, forget it. You're not going to get a proper usage out of these. We've got to think differently.
Natural Batching & Mechanical Sympathy
Think about naturally batching up your stuff, treat things with some sympathy. Think of the computer not as an inanimate object. Let some of your instincts come into play, that were designed for interacting with people, and other organic things come into play. So we'll do things in the right sort of way, rather than dehumanizing and going the other way. Then we can get better use. It's not that we're obsessing about it, it's not like it is a human, but don't try to overcome the other things. Try to think about, its natural way is to write a frame to the network. Its natural way is to write a block to a disk, or whatever. Well, take account of that. Show some sympathy for it.
Examples of where we don't show things- ORMs. Again, like I said, another great source of some disgusting performance issues that we have out there are things just aren't designed to work together. And database, you need stuff from a number of tables. Write a joint statement, get it back in one go. And actually, SQL is not hard. It's actually quite pleasant if you bother to learn it. Most ORMs are not that pleasant if you've got to deal with them. They're pretty disgusting.
I'm going to ramp up a little bit here and think about things I call snake oil protocols. This is a really interesting way of starting to look at how some of our human behaviors go. One of my favorites is two-phase commit or XA, as this new one. This is something people often ask me about- and typically these are people who are architects. What they're doing is they're trying to make what should be their problem someone else's problem. This is bad protocol. This is the sort of stuff that we should not allow in society. There are a lot of interesting things we dig into what's going on with XA.
So, more great papers to look at, is one of the ones by Jim Gray and Leslie Lamport. Unfortunately, we don't have Jim anymore. This is only 2004. Relatively recent, but there's a body of work showing how bad XA and two-phase commit is. Here's one of the quotes from these guys, and this like, "Two-Phase Commit is not fault tolerant because it uses a single coordinator." It's a single point of failure, and it's synchronous with a blocking approach to it. There are loads of problems with it. It's a really bad way to design. Consensus-based algorithms are significantly better, give you better performance, better resilience, better qualities of service that we need for this. We think about different protocols. We keep asking for these same stupid things over and over again. We calibrate things into doing the wrong sort of offset.
Particularly, I find in these spaces, any protocols that require arbitration, it's the command and control mindset, it doesn't tend to work. It's much better having that mindset. So think about Sally Floyd's idea with scalable reliable multicast, using timers to go off, getting consensus across. It's a much, much better way to achieve these things. You actually get greater performance side effect. Another favorite is guaranteed delivery. What the hell does this mean? Again, it's making the problem someone else's. It's like pushing things away. It's terrible human behavior.
Applications Should Have Feedback & Recovery Protocols
The way to think about it is all applications need to have their own feedback and recovery things. You can't just tell the underlying transporter, "Whatever, you're going to totally take care of this, because there's so many failure conditions, there's so much that can go wrong in this." We have to think about it. And how do we think about it? How do we deal with it? We start thinking about protocol layering. Because you happen to know that your transport does something a certain way, you start relying on the implementation. That's breaking the contract. You've got to be relying on behavior, not the actual implementation to do this.
For example, if you're communicating between two systems, you have your own protocol. Let's say you give monotonic sequences to your messages, you can tell those gaps. You can deal with idempotent delivery, you can deal with all of this at the right level. Trying to make it a problem with the transport is crazy. We've got people who are even enabling the bad behavior. I was really shocked whenever the Kafka folks were saying, "We are going to give you guaranteed once deliveries." It's like, "No, it's been proven to be wrong so many times," but yet we keep going forward with this. Again, let's show our disgust a bit more.
So, let's wrap up here. Are protocols some of the most significant things we have come up with as humans? I argue that they are. I'll give you an example of one thing that will come up as an example. Anybody know this protocol? Scientific method. Probably one of the greatest things that we have discovered as humans, but at its core, it's a protocol. It led us to things like this, famous Photo 51. What was happening with these protocols? How do we encode information in ourselves? Crick and Watson were, "How is it?" Their question was, "How do we do that?" Their hypothesis was, "We think it's done in a helix structure." "Okay, what's the experiment to do that?" "Well, if we use X-ray defraction, we should see the X." They performed the experiment. That's the result of it. They were able to conclude because of what they knew about molecular interactions. This is a helical structure.
How good is this from an evolutionary perspective? Well, it looks like we can encode about 2.2 petabytes per gram. That's a pretty impressive tape to store stuff. This is some pretty cool stuff out there. But it comes from a protocol. So, Newton defined the protocol for how we do this. There's much more detail to this, right? You're going to do science, you're going to do single blind, double blind, triple blind protocols on how we deal with stuff. We do really amazing things when we apply them correctly. Medicine, science, engineering, many things have advanced to a really good level because they take protocol seriously.
Some of this is my call for, if we're going to grow up and get better as an industry, we have to take protocols more seriously. Actually, protocols are the essence of ethics as well. Because ethics is how we encode some of this. So, I ask, why do we not take this more seriously? Why are they not studied and practiced more? I find people have heard the terms. We even get misled. Google talked about protocol buffers; they're not a protocol, they're a codec. Us as an industry, we do terrible things.
So I'll leave you with one thing to think about. On your next project, your first step that you go to do, is your first step to install all different frameworks and tools and do whatever, or do you actually start thinking about, "What is the domain of this problem and what are the protocols of interaction? What are the domain events that I'm going to start dealing with?" And start from that perspective, seeing what you get out as a result. It's a different way of thinking, rather than just being tool and framework-oriented, and playing with the latest thing. And so try to discourage some of the really nasty tools. On that note, I'll thank you very much.
See more presentations with transcripts
Martin Thompson
This content is in the Architecture topic
QCon London 2019
QCon Software Development Conference
Popular across InfoQ


Byron, MN (KROC AM News) - Three area teenagers were taken to St. Marys Hospital Friday evening after being involved in a traffic wreck.
The Minnesota State Patrol says a car driven by 18-year-old Kyle Ziegler of Pine Island was trying to cross Highway 14 between Byron and Kasson around 6:30 PM when it collided with another vehicle.
That car was headed east on Highway 14 and was driven by 36-year-old Luis Semidey of Faribault. He was taken to St. Marys as was Ziegler and two passengers in his car. One was identified as 18-year-old Jeffrey Wiebold of Pine Island. The other was an unidentified 17-year-old female. Her injuries are also unknown. The State Patrol report indicates the other three suffered non-life threatening injuries.
News Update: Rochester records third snowiest season ever.


text:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DataExplorer.Presentation.Core.Canvas.Events
{
    public delegate void CanvasExecuteEvent(object sender, CanvasExecuteEventArgs e);
}

redpajama_set_name: RedPajamaGithub


With many years of combined experience in the graphic design industry, we've been able to produce numerous award-winning solutions for our clients. All of these projects continue to be based on the basic fundamentals of quality design, which is the one thing that hasn't changed through the advancement of technology. Although, it is true that web sites have become a predominant marketing tool for most businesses, we recognize that an effective print marketing campaign is sure to get your business results.


Trivium, formerly known as Buchtel Plaza, was a garden style apartment built in 1968. As an older property, it was struggling to achieve the leasing success that it once had. Our client came to us with a huge challenge. How do we help a community built in the 1960's compete in 2015? After speaking with the client and residents, we could see that the current brand needed a change.
The Challenge we faced was this: How do we help our client make an old brand appealing to a modern consumer?
It was pretty easy to see that the current brand needed a change. Buchtel Plaza was able to charge an average rent of only $965 before FIFTY3 jumped on board. It was an older building and a brand that seemed even older. Our client knew they needed to rebrand from day one and chose Trivium as their new name. We took over from there in how to make the Trivium brand look like how they wanted their new focus to feel. Our digital team also dove in on how to make sure this facelift could drive interest and leads.
The client performed a complete remodel of each apartment and common area. The FIFTY3 design team wiped the dust off of Buchtel Plaza with a completely new identity that was focused on modern appeal. The FIFTY3 digital team made that brand buzz.
In a little more than three months after taking over the entire digital marketing platform, a total of 299 conversions were generated from PPC marketing. A conversion rate of 23.73% drove revenue to $7,767 at a cost of $2,843.43. That means our digital tactics provided the client with an ROI of 173.16%. That original average rent number of $965 increased to an average occupied rent of $1,093.
Within the three months after the rebrand, 65 of the 100 apartment homes were leased by customers. A new look and a new approach to driving conversions through modern digital marketing helped raise this brand from the grave.
They didn't just need a modern touch. They needed a digital overhaul.


Experimental characterization of arch wires has been performed in many previous studies; however with the advent of new arch wire materials being introduced, some new experimental methods and characterization are required. Since literature is available for comparison, this paper examines mechanical and physical characteristics of steel arch wires to quantify their variability in engineering terms. Furthermore, the effect of wire size on properties was evaluated using two of the most common wire sizes. Finally, manufacturing consistency was verified by testing samples from different lots.
Vena, A., Carey, J., and Badawi, H. (2007). Clinical variability in arch wires: A preliminary study evaluating mechanical and surface characteristics of two different sized rectangular stainless steel wires. The Open Biomedical Engineering Journal, 1(0), 13-22.


Littleton surgery is fully accessible to wheelchair users and the disabled and we provide a disabled toilet. There is easily accessible parking in the car park (off Claremont Lane). When you telephone to make an appointment could you make it known that you are disabled as we can then arrange for your consultation to take place on the ground floor.


ARCHIVES: Health and Nutrution.. | COFFEEBREAKWITHFRIENDS!
Doctor Oz did an episode of the Dr Oz Show on Thyroid Cancer, which is the fastest growing cancer in women.
before it is too late. 45,000 new cases of Thyroid Cancer are expected this year in America, and 3 out of 4 of these cases will be a woman.
the director of the NY Thyroid Center, to discuss Thyroid Cancer.
this cancer faster and sooner, and the good news is that 80% of Thyroid Cancer is picked up in stage 1 and is mainly curable at this stage.
like a big lump growing out of your neck.
to a physician for a physical exam or when they look in the mirror.
Sometimes it is also found as a thyroid nodule during an ultrasound.
– Large doses of radiation therapy, especially as a child.
have a four times greater risk of developing Thyroid Cancer.
Runowicz is a Breast Cancer Survivor and said that when you have breast cancer, one treatment is to remove the lump and then to receive radiation therapy.
The problem, of course, is that radiation scatters to other parts of your body as well, so she is now very cautious about further exposure to radiation.
You should always ask you doctor why you need to get x-rays, and if it is just to check your teeth for example, Dr Runowicz would not get the x-rays personally.
thyroid to protect yourself. Dr Oz said that he would also recommend using these Thryoid Guard Lead Aprons when getting a mammogram.
I have never seen a Thyroid Guard whenever I have had an x-ray, but I will be sure to insist on it going forward!
The FDA is beginning two days of hearings on the possible withdrawal of its approval of the drug Avastin for treating breast cancer.
Dr. Jennifer Ashton speaks to Rebecca Jarvis about the drug and how patients are rallying against the withdrawal.
why Avastin should remain FDA-approved for metastatic breast cancer. The FDA has scheduled the hearing for June 28-29, 2011.
comments in writing to the public docket on www.regulations.gov.
Below is a New York Times article that helps explain the FDA letter. Also below is the Genentech press release.
Access Solutions Group at (866) 4 ACCESS.
the approval of its drug Avastin as a treatment for breast cancer.
to Genentech's lawyer and to a lawyer for the F.D.A.
time exposing them to dangerous side effects. The decision has split the breast cancer community.
While Genentech, a subsidiary of Roche, will get its day in court, so to speak, it will not get the jury it wanted.
12 to 1 last July that the approval of Avastin for breast cancer should be withdrawn.
In its request for the hearing, Genentech argued that the committee did not have enough breast cancer specialists and therefore could not properly evaluate the importance of Avastin for that disease.
The letter sets out other ground rules. The first day of the hearing will be devoted to presentations by witnesses chosen by Genentech and by the F.D.A.'s drug division, with each side given equal time. On the second day, the advisory committee will make recommendations.
Members of the public can submit written testimony but will not be allowed to speak at the meeting. The ultimate decision will be made by the F.D.A. commissioner, Dr. Margaret Hamburg.
approved for use in combination with paclitaxel for the first-line treatment of HER2-negative mBC in the United States.
Avastin in metastatic breast cancer," said Hal Barron, M.D., chief medical officer and head, Global Product Development.
Notice of Opportunity for a Hearing ("NOOH") on the Agency's proposal to withdraw approval of the mBC indication.
The response set forth the Avastin data, analyses and information that Genentech will review with the FDA at the hearing.
http://www.gene.com/gene/news/news-events/avastin/ or on http://www.regulations.gov under Docket No. FDA-2010-N-0621.


Virgin Voyages 'Scarlet Lady' will also be green!
Friday the 20th of July was a milestone for the Virgin Voyages team and an exciting one for us 'sailors' waiting on the latest news. Sir Richard Branson revealed their first Ship will be named 'Scarlet Lady' and that there would be a ban on single-use plastics for sailors. This Scarlet Lady will also be very green! Take a read of the press release below for the full information.
Virgin Group Founder Sir Richard Branson and Virgin Voyages President and CEO Tom McAlpin announced that the company will eliminate the use of sailor facing single-use plastics as part of its aim to create one of the cleanest fleets at sea.
This initiative includes banning plastic items on board including straws, bottled water, other beverage bottles, condiment packets, shopping bags, food packaging, stirrers, and take-away coffee and tea cups. Instead, the company will emphasize the use of recyclable and reusable materials across the ship.
Sailors will have access to complimentary filtered still and sparkling water at all bars and restaurants, as well as specially designed Natura filtered water stations throughout the ship.
In an homage to sister company Virgin Atlantic, Branson revealed the ship's longawaited official name: Scarlet Lady. This name appeared on one of the earliest planes to fly for Virgin Atlantic. Now, as the flagship for the Virgin Voyages fleet, the Scarlet Lady name will be paired with the brand's iconic mermaid image. She reflects a powerful spirit guide who is creating a whole new way to travel and will adorn the hull of the ship when she sets sail in 2020.
The ship's namesake has also inspired plans to launch the 'Scarlet Squad' program aimed at recruiting, supporting and mentoring female shipboard talent, and growing opportunities to access leadership roles in onboard areas such as marine, technical and hotel management, that statistically show low numbers of female leadership. Virgin Voyages will release more details on the program in the company's sustainability and social impact report later this year.
While at the shipyard, Virgin Voyages also celebrated construction milestones. The day began with the flooding of the ship's drydock, a celebratory ritual done in preparation for the connection of two hull sections, signifying the first time the hull of the Scarlet Lady touches sea water. The day at the shipyard also featured a ceremony to cut the first pieces of steel for Virgin Voyages' second ship, which is due for delivery in 2021.
Future sailors and travel partners are invited to check out Virgin Voyages by visiting www.virginvoyages.com or following @virginvoyages on Instagram, Facebook or Twitter.


text:
Residents 'not worried' in China's pneumonia-stricken Wuhan
WUHAN: Wuhan, the Chinese city known as the home of a new virus that has sickened dozens, killed one man and sparked international concern, is not an obvious holiday destination.
But Tian, a tourist from another metropolis around three hours' drive away, decided to make the trip despite trepidation from his family over reports of a mysterious pneumonia outbreak.
"I said I should be fine, so I came," he told AFP after checking out of his hotel on Sunday, wearing a face mask as a precaution nonetheless.
Residents of the central city seem just as unconcerned about the disease, believed to be from the same family as SARS — an infectious coronavirus that killed hundreds of people in mainland China and Hong Kong in 2002-2003.
So far 41 people with pneumonia-like symptoms have been diagnosed with the new virus in Wuhan, with authorities disclosing on Saturday the death of a 61-year-old man two days earlier.
The outbreak began just weeks before China's busiest annual travel period, and national plane and rail authorities are closely watching developments as millions prepare to visit family at Lunar New Year.
No clear evidence of human-to-human transmission has yet been detected, according to the local health commission.
Huanan Seafood Wholesale Market in the city centre — where multiple pneumonia patients worked — is still cordoned off after being shut down on January 1.
But multiple restaurants sharing the same building were open and serving customers early Sunday morning.
Initial reports about the virus had raised fears that SARS was back, prompting authorities to punish eight people for posting false information online.
While the outbreak sparked a run on face masks at pharmacies in Hong Kong, where scientists urged people to stay vigilant, few on the streets of central Wuhan were sporting masks this weekend.
Most of the guards stationed around the seafood market were not wearing protective gear, although one group of security staff who had entered the market area wore masks and hats and were instructed at a morning briefing to stay covered at all times.
Multiple people without safety equipment were seen exiting and entering the market, however, while some guards appeared more concerned about the spread of unflattering images than contagion.
One of them threatened to track down AFP reporters for filming a confrontation between the guards and an elderly man who wanted to enter the market.
The same guard said merchants had been allowed to enter the facility to check on their stalls, accompanied by security staff.
'Nothing you can do'
Chinese scientists said last week they believe the pathogen is a previously unknown type of coronavirus — a broad family ranging from the common cold to more serious illnesses like SARS.
Hong Kong's Department of Health said Saturday that genetic sequencing of the virus found in one of the Wuhan patients indicated it was 80 percent similar to SARS found in bats.
But they said it was too soon to conclude that it was a SARS strain.
Outside the medical centre in Wuhan where the infected are being treated, patients discharged after being seen for other illnesses waited for buses and taxis, some without face masks.
Visitors were free to enter and exit the hospital compound, although a guard physically blocked AFP from filming a group of patients moving between buildings, saying it was a "sensitive" scene.
Two women surnamed Yan and Shu who had been discharged said on Sunday that hospital authorities had pushed overnight for as many patients unrelated to the pneumonia outbreak to be sent home as possible.
"Most of the building is empty," Shu said, adding that she believed more pneumonia patients would soon be transferred there.
Another woman surnamed Yan, waiting for a bus near the hospital with her husband and three-year-old daughter, said she was concerned about the virus but felt there was little point in worrying.
"If the illness looks for us, there's nothing we can do," she said.
Her husband Cao said most of their neighbours in the Wuchang district across the river from Huanan market were "not worried", as they rarely crossed over to the other side of the city.
'Hundreds' likely affected by mystery SARS-like virus: researchers
Second person dies in mystery pneumonia outbreak

redpajama_set_name: RedPajamaCommonCrawl


text:
Oz Fritz on David Bowie
[Promoted from the comments in yesterday's blog post. Please see the other comments in yesterday's post, too. Oz is a recording engineer and knows a lot about Robert Anton Wilson. If reading this post makes you want to read more of his writing, please see his excellent blog. -- The Management]
I recall someone in the online Crowley course RAW gave posting a rumor or anecdote that David Bowie had been seen at a RAW talk in the LA area in the early to mid '70's. I never did discover the actuality of that, but it seems plausible. Bowie lived in LA at that time and traversed similar experimental territory with RAW. They both practiced qabala and magick and both used it in their artistic expression.
Bowie also appeared completely dialed in to the space migration, extra-terrestrial intelligence, Starseed Transmissions gestalt that RAW and Leary were promoting in the '70s. Staring with his first popular single, "Space Oddity," which under the right circumstances really does give the feeling of being way out in Space, then especially on the album "Ziggy Stardust and the Spiders from Mars." "Space Oddity" was released in the summer of 1969 to coincide with the launch of Apollo 11 while Ziggy Stardust was released in 1972 so it seems unlikely that Bowie picked up the E.T. Intelligence subject from RAW and Leary who were undergoing their own experiences around that time and had yet to publish their findings. I don't know how or where Bowie picked up on that meme. He could have, through his experiences with experimental theater and magick, gotten himself hardwired to the source — whatever transmission it was that gave RAW the impression he was in communication with some kind of Intelligence from the Sirius star system. Through his studies of Crowley, Bowie could have been in touch with the ideas put forth by Kenneth Grant who also had theories and inferences regarding extraterrestrials and Sirius. In 1975 Bowie filmed The "Man Who Fell To Earth" his first major role and he played an extraterrestrial. I felt there was much useful information, mood and atmosphere related to E.T. contact in there I remember leaving the theater elated to see the film end with an allusion to an occult symbol when Bowie tips his hat.
Bowie's music became the primary soundtrack and inspiration to whatever Sirius contact experiences I had in the early 80's. One of the weirdest synchronicities involved the song "Starman." It was the first song on side B of a Ziggy Stardust cassette I had. One day I rewound the tape, turned up the volume and began a yoga practice. The next song was surprisingly not from Ziggy Stardust, not David Bowie at all. I went to check the music machine and saw that I hadn't been playing the cassette at all. When I turned up the volume I was turning up the radio which just happened to start that song at exactly the same time.
Bowie was the lead musical figure and guiding inspiration, particularly his Berlin albums with Fripp, Belew, and Eno, to the punk/post punk art scene circles I moved in. A friend was in love with him so in 1980 she flew to New York and got tickets to see him on Broadway in "The Elephant Man." She told the theater manager her story and asked if there was any way she could see him only to be rewarded with a 40 minute private meeting in his dressing room after the show. She said he was very polite; they casually chatted about ordinary things.
In 1983 Bowie hit town with his Serious Moonlight tour. One of my top concert experiences, he definitely fulfilled the role of cosmic prophet/musical hierophant, a disseminator of Higher Intelligence. Through the set design, costumes and, of course, the music he projected a vision of global awareness and peaceful, tolerant, cooperative, diversity. One of the props was a large blue beach ball of planet Earth that they bounced around playing like they were gods. Truly a genius.
Eno/Roxy/Fripp/Belew/Bowie was always something Other in the way I perceived rock; my adolescence was consumed by swaggering metal guitar virtuosos. Bowie/Eno et.al injected whole other aesthetic level of theatricality, using the studio as an instrument (Eno), and taking in the history of pop music and reconstituting it.
I agree with Oz Fritz about Bowie and the feeling of "outer space." When the news came that he'd died I immediately picked up my guitar and strummed the Fmaj7--->Eminor chords that open "Space Oddity" and cried a bit. I LOVE that song. Genius!
So: I had friends in junior high who were sexually maturing more quickly than I was, and all the sudden they're consumed with Bowie, and I didn't "get" the theatricality/gender bending thing at all. I tried to get it, but I guess I was bewildered. Later I realized how important Bowie's high form of PLAY made a psychological difference for my friends who were 14 and stuck in conformist-crazed suburbia. They felt alienated and Bowie was saying it's okay. I get that now, and this aspect shouldn't be underestimated in Bowie's impact. Todd Haynes's film Velvet Goldmine gave a wonderful reading to this whole milieu.
Like Miles Davis and a few other artists, Bowie was one of those guys who kept coming up with new guitar players who really opened my eyes. He had an amazing flair for picking up the perfect guitar player for the ever-changing sounds he was going for. Every guitar player for Bowie knocked me out. I think I first became aware of Stevie Ray Vaughan via Bowie. Someone puts on the new record and it's "Let's Dance" or "China Doll" "Who the HELL is that guy? Holy shit!"
I guess the thing that makes Bowie a genius for me: constant changing and creativity and openness to novelty and staying true to his own vision. It's not just music, but fashion, provocation, imagination, vision, and knowledge. And he never seemed like a dick, no matter how large his star shined. He was funny, self-deprecating, witty, and even shy.
First Lemmy? Then Boulez? Now Bowie? We're DOOMED!
Oz Fritz said...
Thanks Tom for the promotion and the righteous plug!
Thank-you Michael for the comments. I agree about DB discovering great guitar players. Mick Ronson, Carlos Alomar, and Earl Slick were also quite excellent sidemen for him.
I'm going to expand these notes on my blog.
https://nevalalee.wordpress.com/2016/01/11/forever-and-ever/
I've used [the cut-up method] only on a couple of actual songs, but I've used it—more than anything else—as igniting anything that might be in my imagination, and you can often come up with very interesting attitudes to look into…It seemed that it would predict things about the future and would tell me a lot about the past. It's really quite an astonishing thing.
—David Bowie, in the documentary Cracked Actor
"Strickland — who admits he took Monday off work after hearing the news — first got into Bowie's music as a teenager in high school, and he remembers picking up a copy of his "The Rise and Fall of Ziggy Stardust" album at Music World in the Avalon Mall. A budding songwriter at the time, the CD changed the way Strickland wrote music, as well as his onstage persona: he took to wearing more flamboyant stage outfits, he said, including gold suits and makeup."
http://www.thetelegram.com/News/Local/2016-01-11/article-4400716/Baby-Bowie/1
Bodhi alive or Bowie dead. Grind his grist to make our bed. Amen.
I will lie within it. Tell fibs about aliens and stuff. Sure.
(eat your peas, or Bowie will zap you from the sky)
It would be nice if you and Oz did an essay for us, Michael. Thanks for this.
On a lighter note (notice the 'troll' comments on the Baby Bowie story...
Here is a tribute to RAW, some apt quotes:
"Ewige Blumenkraft und ewige Schlangenkraft"
- Father Dagon, North Carolina
"The functions of the High Priest are twofold: one is to provide a common ground of Symbolism & Ideals around which communities can join together and identify themselves as communities. The other is to be a representative to the community of the Way of Truth- that which is contained in the Symbols and Ideals devised for a particular community. And this latter function is the test of a true High Priest. A fishing village will understand a different set of symbols than will the people living in a mountainside forest. But these different sets of symbols will contain the same message- the Way of Truth...It is the role of the High Priest to render ancient, eternal truths into symbolic forms which can be embraced by groups and communitites in a specific time & place, with particular needs and conditions. Thus, the community is given symbols with which they can identify, and with which they can find identity. However, the danger is obvious: contention arises abut the symbols, not their actual content."
- H. P. Lovercraft, Dunwich MA
Rye Donoghue said...
It occurred to me last night that Bowie died of cancer, whose sigil is a 6&9, at 69 -- that's some mystical shit. There were references to "dark stars" in season 1 of True Detective; what's the significance of Bowie's album title, "Blackstar"? Love the blog, thanks
cartier glasses
Sunday links
The structure of Finnegans Wake, fractal and other...
RAW in Mendocino County
More on the new Cosmic Trigger book
RAW role-playing game
New Cosmic Trigger ebook published
Wilhelm Reich in Hell show still planned in Leeds,...
L. Neil Smith wins lifetime achievement Prometheus...
More synchronicities
Cosmic Trigger reading group update
David Hartwell (1941-2016)
Five nominated for Prometheus Award Hall of Fame
Eight circuit model pops up in Grant Morrison comic
Two views of 'Stranger Than We Can Imagine'
A new edition of Waywords and Meansigns
Did Joyce write the modernist 'Bible'?
Michael Johnson posts again — twice!
Lovecraft site in Providence
Daisy and company still headed for California
Adam Gorightly on his "lost" RAW book
Cat Vincent and Gordon White talk RAW (and much el...
PQ's year in review
Nick Herbert's review of 2015
Michael Johnson on his favorite books of 2015
Three libertarian SF novels
Cosmic Trigger ebook out soon


Interior looks and environment of a place matters a lot, not only to the visitors but to the family and members as well. A well designed home with best interior decoration make the place lovable and praised by all. There are people who decorate the interior of their place by their own but that mostly happen in case of small space or area. If you have a big home and need every wall to look unique it is important that you take the help of the professionals that are highly learned and skilled when it comes to design the interior of a place.
In this concern it is best to take the help of the professionals working in the field of architectural fabrications, as they are very creative in making the place exceptionally beautiful. After searching internet for a few days I came across 'Extravega', an Italian-based fabricator with office in New York NY, the leading center specialized in manufacturing and installation artworks, interiors design and architectural projects at the rate that is very reasonable.
Dealing with many national and international projects, they are the best center that provides custom stair interior, furniture, coverings without any hassle. Their professionals, expert in dealing with all the complex and complicated cases takes care that you get the finest of what you desire for your place. They also take care of the exhibition spaces that are exclusively bespoke in the industry.
Their instant architectural metal fabrication, from Italy, NY to a worldwide installation service will change the style and fashion of your place and will make it more attractive than ever. Their instant help and turnkey service made our place most desirable for the visitors and increase our status. We are very thankful to them and would love to recommend their service to all. If you wish to get their contact detail and would like to approach you can log on to their site now.


As smartphones become more technologically advanced and cheaper, more and more young professionals are using them worldwide. Business information, social media accounts, email, images and all sorts of data are stored on these mobile devices. But this data is often sensitive business or personal information, and while it is useful to have so much information at your fingertips, it also leaves the user open to mobile security threats.
That means smartphone antivirus protection is now vital for young professionals. Mobile threats target data such as credit card numbers, secondary authentication information — a safety measure used in online banking, Gmail and Facebook, especially if the device is logging in from a new device or location — private information, or personal media such as images and video.
They may not seem like it, but contemporary smartphones are effectively small computers, and are equally vulnerable to malware attacks. The malware aims to exploit weaknesses in mobile communication through wifi networks, text messaging and also through browsers or operating systems.
A Kapersky Labs survey noted that only 43 percent of Apple iPhone users have security applications, while more — 53 percent — of Android and Symbian users had protection.
But it's Android users with the most to worry about, as Kaspersky research shows that 99 percent of all mobile malware detected was designed for the Android platform.
As Google's Android system is open-source software, meaning it is free for anyone to download and develop apps, it is more vulnerable to the threats of malware. In contrast, Apple requires developers to get a license and go through an application to use the iOS software, so its apps are less susceptible to malware. However, that is not to say they are completely secure from mobile threats; because of those strict app development rules, developers are never able to create comprehensive protection for iOS devices. Regardless, whether you are in need of security for an Android device or Windows phone security, every mobile device needs some sort of threat protection.
Users can create a password on their smartphone. If a password attempt fails a certain number of times, the phone will lock, disable, and in some cases even erase all data.
Text messages are an easy target for mobile malware, so it's advisable for users not to send sensitive data such as credit card details or important private information by text.
The lock icon in the browser's address bar indicates that you are on a secure and reputable connection. Check for this when entering personal data such as your address or payment information or sending emails from your mobile browser.
Popular shopping sites such as Amazon or eBay have their own mobile applications. If you seek to use these apps, check to see they are the official apps from the company before you initiate a download. This can be done by checking the developer information and user ratings on the download page.


text:
Q: Where can I find regional SO toppers?
Possible Duplicate:
Is there a way to find Stack Overflow users based on an area?

Where can I find the list of top 10 users by region or country category?

A: Create a Data Explorer query.

A: Location field at user profile is a freetext field, so I think it's difficult to get a clear result.

A: careers.stackoverflow.com if you're looking to hire.

redpajama_set_name: RedPajamaStackExchange


The annual EECS publication is now available! Read or download the PDF version or browse the content using the links on this page .
The new dean of the MIT School of Engineering reflects on his final year as EECS department head.
Engineering undergrads showcase their research after one semester of year-long SuperUROP projects.
This student group provides first-hand feedback on Course 6 issues ranging from class sizes to curriculum changes.
EECS graduate student Keertan Kini is working to strengthen the intersection between the two fields.
This 2017 graduate engineered a rich MIT experience that included coursework, research, music, and more.
EECS seniors Chandani Doshi and Tania Yu were on a six-woman team that invented a braille translator, while PhD candidate Apoorva Murarka developed technology to better produce high-fidelity sound.
Chin takes the $100,000 grand prize, surpassing 14 on-air contestants and thousands of applicants from colleges around the U.S.
StartMIT, a boot camp on entrepreneurship, gives students an intimate look into what it takes to build a company.
Women entrepreneurs from a range of fields discuss their pioneering work and what they learned along the way.
StartMit participants see innovation up close during a whirlwind tour of the Bay Area business ecosystem.
With funding secured and leadership in place, MIT's new startup accelerator is now focusing on selecting investments.
April 18, 2017, was a day to talk, think, and learn about student research.
Expanded offerings for one of MIT's hottest topics reach a broad cross-section of the student population.
In two popular courses, students learn how to program mobile sensors — and savor the connections they make.
Peer coaches provide guidance on papers, posters, presentations, and more.
Jana Care, co-founded by EECS alumnus Michal Depa, focuses on high-quality, low-cost solutions for improving diagnostics in emerging markets.
At IBM, EECS alumnus Dario Gil directs a global research team with an ambitious science agenda.
Computer science alum Philip Guo aims to lower the barriers to learning programming and data science.
This EECS alumnus balances two different worlds: teaching computer science and writing business bestsellers.
A five-time MIT alumnus reflects on his transition from academia to industry — and what it's like to leave a tenured EECS professorship to become a high-tech entrepreneur.
Margaret Guo, NCAA's 2016 "Woman of the Year," describes how she balances her passions for learning, leadership, and competitive athletics.


text:
Bob and Karen Online | Bob Foote Online | Karen Knight Online | Who is Bob | Instruction | Tips | Kayak Building | Contact Us
Who is Bob Foote?
Bob Foote is one of the premiere open boaters in this country. Perhaps one of a very select few, Bob has realized his life-long goal, and spends his days traveling around the United States, Canada, and South America, teaching paddling and leading trips down some of the world's most challenging rivers. Not bad for the former Emergency Room Nurse and Nurse Practitioner.
Bob is truly "one with the water," whether he is sharing the thrill of paddling through the Grand Canyon, descending a 40 ft. waterfall in Chile, enjoying Freestyle paddling on a quiet pond or sea kayaking off the Honduran Island of Roatan. He has several first open canoe descents including the North Fork of the American River, Burnt Ranch Gorge, and the Simms Run on the Sacramento River.
Bob is the Chairperson for the American Canoe Association (ACA) River Canoeing Committee and a member of the ACA Coastal Kayaking Committee. He is an ACA Instructor Trainer Educator in Whitewater Canoeing, an Instructor Trainer in Basic Coastal Kayaking and instructor in Freestyle Canoeing. He is a BCU 4 Star. He is a past Men's Freestyle National Champion. He has designed three whitewater canoes for Dagger, the Genesis , Rival, and his latest — the Phantom. Bob has also designed four tripping canoes for Navarro Canoe Company, the 16' and 17' Loon, Pursuit, and the Egret and a Freestyle boat called the Whisper: and for Bell he has co-designed the Prodigy, Prodigy X, and Nextus with Dave Yost. He co-designed the Stingray paddle with Harold Deal for Sawyer Paddle and has developed and marketed his own line of accessories. He also has produced three videos: Open Canoe Roll , Open Canoeing the Grand Canyon , Volumes 1 & 2, and is featured in Kent Ford's Drill Time.
Articles about Bob or written by him have been published in magazines such as Canoe & Kayak (cover reproduced with permission of Canoe & Kayak),Paddler and Backpacker. In 2000, Bob was named as one of Paddler's "paddlers of the century." And, he has even been quoted in the Wall Street Journal! His expertise in canoeing is recognized around the world.
Bob has been offering whitewater expeditions for almost 25 years—ever since he made one of the first successful descents in an open canoe on the Colorado River in the Grand Canyon . (He was also the first to lead a group of female paddlers through the Canyon). Since that time, Bob has led hundreds of paddlers on an adventure of a lifetime. Recently he has expanded his paddling and teaching to include Freestyle canoeing and sea kayaking. He has also expanded in sharing his designer's knowledge in offering a Traditional Kayak building course.
Bob has created a unique, online resource for the whitewater canoeist, flatwater canoeist, and sea kayaker. Here you'll find a wide variety of outfitted trips, instruction, and tips for every level of interest and expertise. Whether you're an experienced paddler looking for wild, world-class whitewater adventure, or a novice ready to learn new skills, Bob's site can take you there.
Bob recently was featured in two articles.
This article was published in the July 2005 Edition of Canoe & Kayak Magazine
This article was published in the May/June 2005 Edition of Paddler Magazine
Learn more about Bob's relationship with Esquif
Learn more about Bob's relationship with Bell Canoe Works
Bob and Karen trust WebDesignByJason.com to create and maintain this site
To find out how to help your business succeed contact their Web Designer
© Web Design By Jason


text:
Gaza fighting takes toll on children
Palestinians carry the bodies of three toddlers during their funeral in Gaza City on Jan. 5. According to Palestinian medical sources, the children were killed in an Israeli strike. Hatem Moussa / AP
Jan. 8, 2009, 11:28 PM UTC / Source: The Associated Press
Tiny bodies lying side by side wrapped in white burial shrouds. The cherubic face of a dead preschooler sticking up from the rubble of her home. A man cradling a wounded boy in a chaotic emergency room after Israel shelled a U.N. school.
Children, who make up more than half of crowded Gaza's 1.4 million people, are the most defenseless victims of the war between Israel and Hamas. The Israeli army has unleashed unprecedented force in its campaign against Hamas militants, who have been taking cover among civilians.
A photo of 4-year-old Kaukab Al Dayah, just her bloodied head sticking out from the rubble of her home, covered many front pages in the Arab world Wednesday. "This is Israel," read the headline in the Egyptian daily Al-Masry Al-Youm. The preschooler was killed early Tuesday when an F-16 attacked her family's four-story home in Gaza City. Four adults also died.
As many as 257 children have been killed and 1,080 wounded — about a third of the total casualties since Dec. 27, according to U.N. figures released Thursday.
Hardest on the children is the sense that nowhere is safe and adults can't protect them, said Iyad Sarraj, a psychologist hunkering down in his Gaza City apartment with his four stepchildren, ages 3-17. His 10-year-old, Adam, is terrified during bombing raids and has developed asthma attacks, Sarraj said.
Israel says it is targeting Hamas in response to its repeated rocket attacks on southern Israel, and is doing its utmost to avoid civilian deaths. However, foreign aid officials note that civilians can't escape blockaded Gaza and that bombing crowded areas inevitably leads to civilian casualties. The Israeli military has used tank and artillery shells, as well as large aerial bombs.
'We have nothing to do but play'
In the Shati refugee camp on the Mediterranean, 10 boys were playing football in an alley Thursday when a shell from an Israeli gunboat hit a nearby Hamas prison.
At the sound of the explosion, one of the older boys whistled, a signal to interrupt the game. Several players took cover with their backs pressed against a wall. After a minute or two, the game resumed.
Samih Hilal, 14, said he sneaked out of his grandfather's house against the orders of his worried father. The house was crowded with relatives who fled more dangerous areas, he said, and he couldn't stand being cooped up for so many hours.
"Do you think we are not afraid? Yes, we are. But we have nothing to do but play," Samih said.
Another boy, 13-year-old Yasser, waved toward the unmanned Israeli drones in a defiant gesture, instead of seeking cover during the shelling. "There is nothing we can do. Even if we run away here or there, their shells are faster than us," he said.
Indeed, all of Gaza has become dangerous ground.
Children have been killed in strikes on their houses, while riding in cars with their parents, while playing in the streets, walking to a grocery and even at U.N. shelters.
'Mass killing'
Sayed, Mohammed and Raida Abu Aisheh — ages 12, 8 and 7 — were at home with their parents when they were all killed in an Israeli airstrike before dawn Monday. The family had remained in the ground floor apartment of their three-story building, while the rest of the extended clan sought refuge in the basement from heavy bombardment of nearby Hamas installations.
Those in the basement survived. The children's uncle, Saber Abu Aisheh, 49, searched Thursday through the rubble, a heap of cement blocks, mattresses, scorched furniture and smashed TVs.
He said Israel gave no warning, unlike two years earlier when he received repeated calls from the Israeli military, including on his cell phone, that a nearby house was going to get hit and that he should evacuate.
"What's going on is not a war, it's a mass killing," said Abu Aisheh, still wearing the blood-splattered olive-colored sweater he wore the night of the airstrike.
The Israeli military did not comment when asked why the Abu Aisheh house was targeted.
Too weak to stand
In the Zeitoun neighborhood of Gaza City, medics found four young children next to their dead mothers in a house, according to the Geneva-based International Committee of the Red Cross. "They were too weak to stand up on their own," the statement said.
The Red Cross did not say what happened to the children, but noted that the Israeli army refused rescuers permission to reach the neighborhood for four days. Israel said the delay was caused by fighting.
Medic Mohammed Azayzeh said he retrieved the bodies of a man and his two young sons from central Gaza on Wednesday. One of the boys, a 1-year-old, was cradled in his father's arms.
In the Jebaliya refugee camp, five sisters from the Balousha family, ages 4, 8, 11, 14 and 17, were buried together in white shrouds on Dec. 29. An Israeli airstrike on a mosque, presumably a Hamas target, had destroyed their adjacent house. Only their parents and a baby girl survived.
Israel accuses Hamas of cynically exploiting Gaza's civilians and using them as human shields. The military has released video footage showing militants firing mortars from the rooftops of homes and mosques.
"Israel wants to see no harm to the children of Gaza," said Israeli government spokesman Mark Regev. "On the contrary, we would like to see their children and our children grow up without the fear of violence. Until now, Hamas has deliberately prevented that from becoming reality."
Counting casualties
Rocket fire from Gaza has disrupted life in Israeli border communities, and with the latest intensified militant attacks, hundreds of thousands of Israelis are in rocket range. Schools are closed and fearful Israeli children rush into bomb shelters at the sound of air raid sirens.
In the ongoing chaos of Gaza, it's difficult to get exact casualty figures. Since Dec. 27, at least 750 Palestinians have been killed, according to Gaza Health Ministry official Dr. Moawiya Hassanain.
Of those, at least 169 were 17 and younger, according to the Palestinian Center for Human Rights, which posts staffers at hospitals to track casualties. UNICEF said at least 100 children and minors were killed in the first 10 days of fighting.
"We are talking about urban war," said Abdel-Rahman Ghandour, the Jordan-based spokesman for UNICEF in the Middle East and North Africa. "The density of the population is so high, it's bound to hurt children ... This is a unique conflict, where there is nowhere to go."
Searching for a safe place
Successive generations of Gaza children have grown up with violence, part of the accelerating conflict with Israel. In the late 1980s, many threw stones at Israeli soldiers in a revolt against occupation. In the second uprising, starting in 2000, some were recruited by Hamas as suicide bombers.
Sarraj, the psychologist, said he fears for this generation: Having experienced trauma and their parents' helplessness, they may be more vulnerable to recruitment by militants.
In his Gaza City apartment, Sarraj tries to reassure his own children.
His 14-year-old stepdaughter lost her school, the American International School, to a recent airstrike, and a girlfriend was killed in another attack. The family lives in the middle-class Rimal neighborhood and still has enough fuel to run a generator in the evenings, enabling the children to read.
Yet when the bombings start, he can't distract them. "They are scared," he said. "They run to find the safest place, in the hallway, away from the window."


2017 წლის 4 ოქტომბერს, ასოციაცია "მშვიდობიანმა და საქმიანმა კავკასია"-მ (ამსკ APBC) და მისმა პარტნიორმა ორგანიზაციამ თბილისში "საზოგადოება მომავალი თაობისათვის" (SFG) ევროკავშირისა და გაეროს განვითარების პროგრამის ერთობლივი ინიციატივა COBERM III-ის მხარდაჭერით 2016 წლის 15 აგვისტოს დაწყებული 14 თვიანი სამედიცინო ჰუმანიტარული პროექტის "დავძლიოთუნდობლობადავაშენოთმშვიდობა"-ს ფარგლებში ჩატარებული კვლევების პირველადი შედეგების პრეზენტაცია მოაწყვეს . იგი ჩატარდა საქართველოს პარლამენტის ილია ჭავჭავაძის სახელობის ეროვნული ბიბლიოთეკის საკონფერენციო დარბაზში.
ღონისძიებას პროექტის მენეჯმენტის გარდა ესწრებოდა 60 ადამიანი: შერიგების სამინისტროდან, საქართველოს პარლამენტიდან, საერთაშორისო ორგანიზაციებიდან, არასამთავრობო ორგანიზაციებიდან, ასევე პროექტის ბენეფიციარები აფხაზეთიდან და სამხრეთ ოსეთიდან .
ღონისძიების მიზანი იყო- აღნიშნული პროექტისა და მის ფარგლებში ჩატარებული კვლევის შესახებ საზოგადოების ინფორმირება და მიღწეული შედეგების შეფასება, ასევე პროექტის მიმდინარეობის პროცესში გამოვლენილი პრობლემების გადაჭრის გზებზე მსჯელობის ინიცირება. ეს მიზანი ძირითადად მღწეული იქნა. დამსწრე საზოგადოებას ეცნობა, რომ ბოლო 14 თვის განმავლობაში 555 აფხაზ და ოს პაციენტს, ქუთაისსა და თბილისში მიეწოდა კვალიფიციური სამედიცინო სერვისი. ამასთან, როგორც პაციენტებს, ასევე მათ თანმხლებ პირებს გაეწია ლოჯისტიკური და სხვა სახის საჭირო მომსახურება.
ღონისძიების მონაწილეების მიერ მაღალი შეფასება მიეცა პროექტის შედეგებს, მის დიდ გავლენას ნდობის და მშვიდობის მშენებლობაზე.
აქვე ხაზი გაესვა იმ პრობლემებს, რომელთა დროული გადაჭრა, კიდევ უფრო აამაღლებდა ამ პროექტისა და საერთოდ , საქართველოს მთავრობის რეფერალური პროგრამის ეფექტურობას.
პრეზენტაციას ესწრებოდა და იღებდა " სტუდია რე".
On 4 October, 2017 association "Peaceful and Business Caucasus" APBC and its partner organization in Tbilisi "Society for Future Generation" with the support of EU and UNDP joint development initiative COBERM III organized the presentation of primary results of the study conducted within the framework of medical humanitarian project "defeat mistrust and build peace". Presentation took place at Ilia Chavchavadze National Library Conference hall.
Apart from Project management, 60 people attended the event: from the ministry of reintegration, from Georgian parliament, international organizations, representatives from NGOs and beneficiaries from Abkhazia and South Ossetia.
The objective of the event was informing society about the results of the study, assessing already accomplished results, also initiating discussion about solving several problems. These objectives were achieved. Present society was informed, that 555 patients from Abkhazia and South Ossetia received qualified medical care, as well as logistic and other kinds of the services.
Event participants positively evaluated study results and admitted its role over peace and confidence building.
Problems were identified; solving them would further increase the efficiency of this project and generally the efficiency of Georgian government referral program.
Presentation was recorded by "Studio Re".
2017 წლის 15 ოქტომბერს ქ. თბილისში, ევროპის მოედანზე აფხაზეთის სავაჭრო -სამრეწველო პალატის ეგიდით ჩატარებულ გამოფენაზე მონაწილეობდა ქუთაისიდან სსიპ "აფხაზეთიდან იძულებით გადაადგილებულ პირთა სტაჟირების, კვალიფიკაციის ამაღლების და დასაქმების ხელშეწყობის ცენტრი "ბიზნესინკუბატორი". გამოფენაზე გატანილიყო "ბიზნესინკუბატორში" განლაგებული პარტნიორი კომპანიების პროდუქცია და ის ბიზნესპროექტები, რომელთა განხორციელება შესაძლებელია "ბიზნესინკუბატორში" არსებულ საწარმოო ფართებზე და მის მიმდებარე ტეტიტორიაზე.
ასევე, გამოფენაზე მონაწილეობა მიიღეს აფხაზმა მეწარმეებმაც. ისინი გამოფენის ვიზიტიორებს თავად აგემოვნებინებდნენ აფხაზეთში მათ მიერ წარმოებულ პროდუქციას.
On October 15, in Tbilisi, in the square of Europe, an exhibition was held under the aegis of the Chamber of Commerce and Industry of the Autonomous Republic of Abkhazia.
In this exhibition, the Center for Internship, Enhancement of Qualification and Employment for Persons Forcibly Displaced from Abkhazia (Business Incubator) took part.
At the exhibition, were presented products of partner companies which are located on the territory of the Business Incubator, and Business projects, implementation of which is possible on the industrial sites of the Business Incubator and in the nearby area.
Also, Abkhaz businessmen took part in the exhibition. They themselves acquainted visitors with their products.
– სპეციალისტი მარკეტინგისა და ექპსორტის საკითხებში.
ორგანიზაციის მისიის ფარგლებში, პროექტების წერა ქართულ, ინგლისურ ენებზე და ფონდების მოძიება!
შერჩევა და გადაწყვეტილების მიღება დასრულდება მე–3 კვირის ბოლოს.
შერჩეულ სპეციალისტებთან კონტრაქტი გაფორმდება 3 თვიანი სტაჟრებისა და გამოსაცდელი ვადის შემდეგ.
ევროკავშირისა და გაეროს განვითარების პროგრამის ერთობლივი ინიციატივა COBERM-III-ის მიერ მხარდაჭერილი სამედიცინო პროექტის - "დავძლიოთ უნდობლობა და ვაშენოთ მშვიდობა" მიმდინარეობასთან დაკავშირებით, მისი განხორციელების II ეტაპზე (2016 წლის 16 ნოემბრიდან 2017 წლის 15 მარტამდე) ამსკ-მ და თბილისში მისმა პარტნიორმა ორგანიზაციამ "საზოგადოება მომავალი თაობისათვის" (SFG) კვალიფიციური სამედიცინო მომსახურება (კონსულტაციები, გამოკვლევები და მკურნალობა) გაუწიეს აფხაზეთში და სამხრეთ ოსეთში მცხოვრებ, ძირითადად საქართველოს მოქალაქეობის არ მქონე 167 პაციენტს.
ამ პერიოდში, ქუთაისში აფხაზი პაციენტების მონაწილეობით ჩატარდა შეხვედრები, დიალოგი და მასტერ-კლასები ცხოვრების ჯანსაღი წესის დანერგვის, რაციონალური და სრულფასოვანი კვების საკითხებთან დაკავშირებით.
ასევე, ქუთაისში აფხაზ პაციენტებს ჩაუტარდათ გამოკვლევები უჯრედოვან დონეზე ფუნქციური კვლევის მეთოდით და მათ სამახსოვროდ გადაეცათ ბროშურები: "ჯანმრთელობის საიდუმლო" და 2017 წლის მთვარის ასტროლოგიური კალენდარი.
აფხაზ/ოს პაციენტებს ხელი ეწყობათ ქართულ მხარეს მყოფი მათი ნათესავების, ყოფილი თანამშრომლების, ძველი მეგობრების, მეზობლების გამოძებნა-დაკავშირებაში.
მათი სურვილის შემთხვევაში ეწყობა ექსკურსიები და კულტურული ძეგლების დათვალიერება.
დაწყებულია მუშაობა აფხაზი და ოსი პაციენტებისთვის ქართულ საზოგადოებაში სოციალური ფილანტროპიის განვითარებისა და სამედიცინო მომსახურების ალტერნატიული ფინანსური რესურსების მოძიება/მოზიდვაზე.
During the II stage (from 16 November 2016 to 15 March 2017) of Medical project "Defeat Mistrust and Build Peace" beingimplemented with support of European Union and UN Development program initiative COBERM, APBC (Association for the Peaceful and Business Caucasus) and its partner in Tbilisi SFG (Society for future Generations) provided qualified medical services (consultations, diagnostics and treatment) to 167 residents of Abkhazia and South Ossetia, who do not have Georgian citizenship.
During the mentioned period, we organized meetings, dialogues and master classes about healthy lifestyle, rational and balanced diet.
In addition, patients in Kutaisi received medical examination on cellular level, with function test method and they received brochures: "Secrets of Health" and 2017 astrological moon calendar.
Abkhazian/Ossetian patients receive our support if they try to find and revive relationships with their relatives, old colleagues, old friends, neighbors etc.
In case beneficiaries express their interest, we organize excursions to visit cultural heritage sites.
We have begun our work to develop social philanthropy in Georgian society for Abkhazian and Ossetian patients and to find alternative funding for medical services.