text:
Ivan Willig - Cognicast Episode 107
posted by Craig Andera on August 16, 2016
In this episode we talk to Ivan Willig about using Clojure and Datomic at Clubhouse.io.
All right, well, I would like to mention to you Operability.io. Now this is a conference held in London September 19th and 20th, 2016. It's going to be about dev ops. This is brought to our attention by our friend Marco Abis, who is one of the people who was initially responsible for EuroClojure, so you know he does good work.
This is a conference that he's helping to run, and he gave us a heads up. Took a look at it. I'm like, yeah, it looks like a thing that our listeners might want to be aware of. You can check that out at Operability.io if you're going to be in or around or can get yourself to London in mid September. Check that out.
I want to mention there's a ClojureBridge happening in Pittsburgh September 9th and 10th. As you're well aware, if you've listened to the show a bunch of times, ClojureBridge is a great organization. Its aim is to increase diversity within the Clojure community by offering free, beginner friendly, Clojure programming workshops for women. Check that out at ClojureBridge.org. You can see the list of their events there and take a look at the one that's happening in Pittsburgh September 9th and 10th.
Finally, I want to mention Clojure NYC. This is a user group in New York City. They are having a meet-up on Wednesday, August 24th, and Nathan Marz will be speaking. Nathan is a good guy. He's been a guest on the show. He's going to be talking about an optimization technique called Inline Caching. It looks pretty cool based on the description. You can read more about that at www.meetup.com/clojure-nyc or search for Clojure NYC. It looks like cool stuff. I wish I was going to be able to attend that one.
That's all I've got for you today, though, so we will go ahead and go on to Episode 107 of The Cognicast.
CRAIG: Perfect. Well then let's begin. Yeah?
IVAN: Yeah.
CRAIG: All right. All right, everybody. Welcome. Today is Thursday, June 23rd, 2016, and this is The Cognicast.
I am very pleased today to welcome as our guest a developer at Clubhouse.io, Ivan Willig. Welcome to the show, Ivan.
IVAN: Thanks for having me on.
CRAIG: I should ask. I hope I pronounced your name correctly. I forgot to ask before the show if that's right.
IVAN: You did. Yeah, you got it - Ivan.
CRAIG: Okay, great. Well, we are excited to have you on the show today, Ivan. You are a Clojurist. You have interesting things to say about it and about your company's use of that technology, as well as a couple others that people here have heard us talk about before.
But before we do that, we always ask the guest the question to open the show. That question is: Would you please relate to us some experience of art for whatever that means to you. People have talked about concerts they've been to. They talk about all sorts of things. We're going to just throw it wide open just for you to share some artistic experience that you've had and share it with our audience, so what have you got for us?
IVAN: An artistic experience I've had. I guess when I was in school, I kind of had a hard time. I was one of those people that didn't do so well in school, I guess. I think art was always, for me – I actually did art as an outlet because, I don't know. I guess I'm not a person who follows rules very well. Well, sometimes. I do follow rules, but I'm not very good at them, so I felt art was – always felt, in school, art was a space where you kind of do what you want, it was a little bit of freedom, and it was creative. That to me was kind of like an outlet for many years.
I don't do it any more, which is kind of weird, but definitely that was probably the biggest influence it's had on my life as kind of the act of doing it and a way of getting away because there's not really any right and wrong answers in art. You can kind of just do stuff and try it out. It often will not work, and you'll have to do it over again, but I found that kind of interesting.
CRAIG: Did you have a particular medium that you liked to work in?
IVAN: I moved around a little bit. I used to do kind of like painting, watercolors, oils. I also did colored pencils for a little while, and also my dad was really big into photography, and I got into photography a little bit in high school. It's kind of strange, and I don't really know why, but I do none of that now and I don't know why. Maybe it's because I have a job, a life, and stuff.
CRAIG: Well, that was actually one of the things I was thinking was when you were saying it was an outlet. I'm personally really interested in the idea of programming as a creative enterprise, much like, say, painting or working with colored pencils, as you said. First of all, do you see it that way as well? And do you think, perhaps, that the reason you don't do it any more is because programming is your creative outlet? Does that make any sense to you?
IVAN: Yeah, totally. I think that's true. I think, yeah, there's some truth there. Yeah, it's definitely. I remember when I was learning how to program, one of my professors taught me or told me, like, people think that programming is not creative, people who don't program, I'd say. I find it one of the most – it's similar in art in some ways where you basically get to start with not very much and it's a lot of creativity. You get to create again without a lot of restrictions. There are more restrictions than art, obviously, but I think that's true.
Although, I will say that it can be more frustrating than art because you've got to think about what you're doing. You've got to set up. You've got to make sure what you're doing is actually correct by the compiler. You've got to get the database set up, depending on what kind of programming you're doing. Yeah, I think that's maybe true.
Also, I have a family now, so I just have less free time in general, so maybe that's it.
CRAIG: Sure. Yeah, I can sympathize on that one.
IVAN: Yep.
CRAIG: I think that's a really cool introduction to you personally, but let's maybe shift over to the professional side of it. I mentioned that you are a developer at Clubhouse.io. I wonder if you wouldn't mind, by way of introducing us to you and your company.
IVAN: Sure. Yeah, I'm Ivan, and I'm one of the backend engineers at Clubhouse. Clubhouse is a project management software tool that we are trying to kind of achieve a balance between sophistication and ease of use. I believe Clubhouse kind of came out of a frustration. Well, I think we've all experienced, at the company, a frustration with current project management tools, but it definitely came out of a frustration that was experienced by our two founders, Andrew and Kurt.
There was an ease of use. Some of the tools out there are very easy to use, but they don't scale very well for large companies or even small companies necessarily. And then a lot of the other tools are very sophisticated. You can configure them. They have a lot of knobs and levers, but they become unwieldy in a different way where you have so many options that it just doesn't scale in large teams very well. Clubhouse is our attempt to try to strike a balance between that.
CRAIG: Yeah, so I was looking at your website, Clubhouse.io, and I have not used the product myself, but one of the things I noticed is that clearly somebody is paying attention. At the very minimum floor of usability is: Does it look like something you would want to use? I know that's not the same as usability, but it looks like a product where somebody is like, yes, we're definitely paying attention to that kind of human aspect of software. But I wonder, since you said you were a backend engineer, if you could talk to us a little bit about the suite of technologies that you're using to implement your product.
IVAN: Yeah, sure. I work on the backend, which is a REST API, so we use Clojure, and we also use Datomic. Datomic is our primary data store. Everything goes into Datomic, essentially.
We use a bunch of other tools that build the REST API. We are pretty heavy users of Liberator, which allows us to define kind of restful controllers. We have some kind of homegrown wrappers around Liberator, and we've also adopted a couple patterns about how we use Datomic in a kind of specific way that allows us to do certain things.
One of the things that we kind of focused on–this goes back a little bit to when we were talking about usability–is often when you have a large number of people working on a bunch of different stories. You have a bunch of different projects going on in your tool. It becomes hard to see what's going on, so we spent a lot of time building this activity feed, which the goal was to try to make people be aware of and keep track of what stories they care about, and that actually was an interesting use case of Datomic as well because we had that transactional history there.
IVAN: Definitely it's been an interesting experience. I think I mentioned that earlier, which is, I've been programming for a while now, but this is my first job where I was using Clojure on a day-to-day experience, my day-to-day professionally, I guess, so that was definitely kind of a little bit of a learning curve there, and it was interesting. It was a challenge for the last year, I guess.
CRAIG: Yeah. Let's actually go down that rabbit hole because I am always interested in people's kind of origin stories around Clojure. You and I were talking a little bit before the show. You started out in, I think you said, JavaScript was one of the languages, and so I'd love to hear your arch. Where did you start out? What's been hard? What's been easy? What's been surprising? Those are all interesting aspects of your story to me.
IVAN: Yeah. I guess it started out I did Python and JavaScript, although at the very beginning I wasn't very good at JavaScript, to be honest. I didn't really understand it. I was working at a company that no longer exists, but the primary application was running in Java. And I was like, I'm never going to get into this. This is just too much.
My friend and I, he was kind of a guy that was not super wild about Java as well, and he was also a Python developer. We were thinking about, like, how are we going to build stuff. He's like, I want to do everything in Common Lisp. I'm like, what is Common Lisp? What are you talking about? I've never heard of this before.
Then I looked it up and I started learning a little about Lisp. Then I was like, oh, I googled, basically, Lisp for Java, and Clojure was the first thing that came up, and that's kind of how I came to it. This was like in 2008. Then we kind of, he and I kind of, started learning about it. We realized, well, this is really cool. There are a lot of interesting ideas here. It exposed me to a lot of things that I hadn't been exposed to before.
Then eventually I moved on, and we never really used Clojure at that company, which was kind of funny. It is still a Java shop to this day. Eventually, I became a JavaScript programmer, and then finally, at this point, when I started working at Clubhouse, I started using Clojure day-to-day, so that was kind of my arch, I guess.
CRAIG: Okay. I'm always interested in what people have found to be good and bad, like what has been difficult for you, what has proven to be beneficial, especially the surprising things on both of those. For instance, when I came to Clojure, and maybe this is similar to your experience, I was surprised by how much the functional mindset took to shift to. That was the big challenge. I wasn't expecting that. What were your surprises and pluses and minuses?
IVAN: That's kind of an interesting question. I do remember one thing, which was when I was learning. I don't actually have a CS background. I came from more of a liberal arts background, and I've slowly learned. Well, I guess I've learned some of CS, but there were definitely some things when I was learning about, like, JavaScript and Python, that were unexpected to me and that the functional mindset was actually a little more expected. This was many moons ago when I think I was trying to see if two dictionaries were equal. I called equals on them and it wasn't equal. I'm like, wait a second. These values are the same. This is comparing by value or comparing by a point of reference type issue.
IVAN: Actually, some things about that when you kind of learn the functional mindset were actually easier. Yeah, you're definitely right. There are some things you have to get used to.
I think one of the biggest things, well, I don't know. There are a bunch of things. The first was syntax because I had mostly a background in Python. I was kind of like, oh, what are all these parentheses here. I think that goes away pretty quickly if you're actually interested in learning about it because, like everyone says, you don't really see those any more. You don't really care about those, and you learn Emacs, and the problem just goes away.
There are definitely some things I think I remember learning, which is like you don't really have a for-loop, and a lot of algorithms, a lot of solutions in the world are kind of driven by these kind of complicated for-loops. I remember I was really interested. My background was kind of in mapping and chorographic stuff, and I'm very interested in computational geometry.
If you tried to take a code, some piece of code, some algorithm that's written in Java that's kind of very specific about how we're going through this array or whatever and–I don't know if I'm making complete sense–translating it to a Clojure reduce, loop, or recur is not always the easiest thing. One of the things, I guess, that's so much of the world has this kind of not even object oriented, but procedural, like you mutate things all the time world view that when you try to take that to functional programming, there's just not as much even examples, really, or literature, I guess, about that. I don't know if that makes sense.
CRAIG: Yeah. Totally. People on the show have talked before about impedance mismatch between the imperative mindset and the more functional, if you will, approach, and the higher level of abstraction. I hope you won't mind if I tell a brief story. I'll keep it quick.
IVAN: No, of course.
CRAIG: We used to have this thing that we would do internally that we called – I forget what it was called exactly – something cross-training. But the idea was that we would pair up somebody from the technical side of the house, one of the developers, with somebody whose day-to-day job wasn't writing code, so maybe a project manager or whomever, and just have them talk about whatever. Just have that kind of professional contact.
One day I was paired up with our CFO, who is awesome. She does not have a technical background. She's managing our money, which she does a very good job of. But her very first question to me was, "What is programming?" and I love that question - love that question. Just a really smart question, I think, even though it seems so basic.
One of the things I said to her was that it's about abstraction. What is abstraction? Abstraction is, if you're talking to a two-year-old – you said you have a family, right? If you were talking to a two-year-old–maybe you're familiar with this–and you want to go to the store, you say, "Okay. Stand up. Come over here. Grab your shoes. Bring them to me. Now sit down. Now give me this foot. Now give me that foot." Right? It's very directive. You're not really talking about the goal. You're talking about the steps to achieve the goal.
CRAIG: Versus a more abstract conversation where, if I was talking to you, I'd say, "Hey. Ivan, meet me at Safeway in half an hour."
IVAN: Yep. Yeah.
CRAIG: Right? That we would just go, okay, I know how to accomplish that. It's really about the goal. And so I think that there is a higher level of abstraction, which I believe is what you're referring to when you talk about having for-loops, which is, okay, do this, then this, then this, and then there's the aspect of mutation thrown in as well, which is kind of orthogonal, but versus do this operation to every element of this collection. I find that to be a higher level of abstraction.
IVAN: Yeah, totally, and I think it's a much nicer world to work in. Definitely.
CRAIG: Yes. Anyone that has a two-year-old knows that they are exhausting, and that's one of the reasons, right?
IVAN: You've got to bargain with them so much.
CRAIG: Well, there's that too.
IVAN: Yeah. Yeah, you do have to go through all these kind of mundane, like kind of just simple, little steps. You're like, okay, well, we've got to get your shoes on. Then we've got to get your hat on. And you're just like, no, I don't want to do this any more.
CRAIG: Yeah, maybe there's an analogy to error messages in there somewhere. Anyway, okay, great. Yeah, so you've been working with Clojure for a while now. I think you said it's been about a year.
IVAN: Well, I've been interested in Clojure, and I've been playing with Clojure since, like, 2007, 2008. But, yeah, doing Clojure every day has been, one, a great experience and, two, it's been about a year now.
CRAIG: A year in. You said it's been a great experience. Now that you have got a pretty good amount of code under your belt, if you had to go work in another language, what things would you want to take with you?
IVAN: Well, I think everyone knows the REPL is pretty awesome. I really like Emacs. I know some people in the community think that we should probably move beyond Emacs, and I agree with that, but I personally love it and I want to spend everything. I do RFC in Emacs. I want to do email. I haven't figured out a good way to do that yet. I really enjoy just working in Emacs and not ever having to leave it, and I actually find that as one of the nicest experiences, and you can do that in other languages, of course, but it works really well in Clojure.
I find one of the things I like about it is it's a smaller community and there are not as many libraries. Definitely Node has a huge library set, but I find that most of the time there's a library or there's some sort of kind of explanation on how to solve the problems that we have to solve at Clubhouse. And most of the time it works pretty well, so I like the ecosystem around the tools, the libraries, and the community. I think that's really nice and it's also nice that there are not, like, 500 different Web frameworks.
I really like the kind of focus on building out frameworks around kind of protocols, I guess, like the Ring protocol, which are an API, I mean. We don't have one monolithic framework, really. We have a bunch of libraries that interact with Ring, and so I actually really enjoy that. In the Python world, the kind of dominant Web framework has always been Django. Django is really cool, and there are a lot of smart people who work on it, and I really like it, but there are definitely some things where it's not quite as appropriate or you don't want to use it for various reasons. You can't just pull it apart and use pieces of it, and so one of the things I like about the Clojure world is you can pull things apart and use pieces here and there.
Definitely I've been following along Clojure, and sometimes there's been this break where I feel like we're doing something one way and then there's this new way, and we have to kind of move to that new way. I think that happens in all kind of programming languages and environments, so I'm not sure. I guess I don't know what I'm saying there.
CRAIG: I'm curious to get the same answer, but for a different technology. I think a lot of our listeners have got some experience with Clojure. I think many of them, but probably fewer have experience with Datomic. Obviously you've built a real commercial product on top of it, as have I, and so I'm curious to get your take on really the same thing.
A year in using this thing, what are your impressions? What have you found beneficial? If you had to go build something using some other technology, what would you miss?
IVAN: Yeah, totally.
CRAIG: Of all that type of stuff, what's your arch with Datomic been?
IVAN: I went through this experience. I had been interested in Clojure, and I saw Datomic was released a couple years ago. I was like, oh, I'm not sure if I understand what this is, so I really kind of took a fresh look at it a year ago. I kind of went through the stage of not really getting it.
I've always used Postgres, and I've used Postgres very heavily.  And in fact, I've used PostGIS, which is like a spacial extension to Postgres, so I kind of understood that world a little bit, and so there really is this kind of -- I don't know.  I don't want to use paradigm shift, but there is a paradigm shift you have to go through.
It started, which is like I was not really understanding how to correctly use it. Then we definitely got – my coworker Whit and I, we kind of really sat down and thought about a bunch of stuff about how we want to use it and tried to understand the Datomic way. With a piece of technology, I think you want to understand what is its opinion about the world and try to not fight it, I guess. I don't know if that makes complete sense.
IVAN: It's not that Datomic changes. It's like we had to change to Datomic a little bit. Once we started to get it, we were like, oh, wow, this is really cool. This allows us to do things that we could never hope to do.
Then there was a stage where we're like, oh, and here are some things that we wish it didn't do. Not necessarily, but it's more like the ramifications, like the immutable model enables you to do so much more than you could do with just a standard, like, SQL database, but we're starting to realize that there are some ramifications of that model that we hadn't quite thought about before that are definitely problems. It's like a higher level problem in some ways. It's problems you would never reach if you were using Postgres, but now that we have this complete history, we have to start to address them, which is kind of interesting. I don't know if we've really solved them. I think we understand some of them, but there's that.
The biggest thing is I really like – there's a bunch of stuff I like about Datomic. The biggest thing is that the transactions as a data model is really nice and it's really good. It's really nice to work with. It's really nice.
You know we get a bunch of data in the request, and it's from an endpoint that's creating some object in our system. Then we validate it, we process it, we generate this transaction, and then we insert it into the database. That has really worked really nicely for us. The code is very enjoyable to write to do that process. It's very easy to reason about, and I don't know. It just feels like we're doing something right. I don't know if that really makes sense. Intuitively it seems like, okay, this is straightforward and there's not much mystery going on here.
CRAIG: Just to be clear. You're referring specifically to the fact that the way that you put information into Datomic is via an API or entered around data and not around building some SQL string, right?
IVAN: Exactly.
CRAIG: That's what you mean?
IVAN: Yeah, exactly.
CRAIG: Okay. Gotcha.
IVAN: Yeah, yeah, exactly. It's just like a vector that gets transacted and, in each vector, there are little pieces. It ends up being like we have a bunch of optional. We have optional data and we have defaults. That ends up looking really nicely because you have a function that generates all those defaults or optional values for you. It's very straightforward in a way that I never found something like Django's ORM to be very straightforward. It doesn't look clear, I think. You can also just take that function and run it, and not actually transact anything, and look at what's being generated. It's very easy to see if that's correct or not.
The other thing we've really enjoyed working with is basically that transact and query are separate, separate things, which we found pretty nice. Query is obviously looking for stuff in the database and then transact is its own thing. That actually has worked out really nice for us, and I think that makes our system a lot easier to reason about in a lot of ways.
The other thing, which we started using, there was a talk that we saw about – I forget the bank in Brazil that they've built a pretty sophisticated system in Datomic.
CRAIG: Nubank.
IVAN: Nubank. Thank you. That talk was very influential about how we designed our system, so if people are looking, I think that was very helpful in myself's understanding about how we use Datomic because we started adding audit information into each transaction, which is really nice because we can now annotate transactions like who did it. Not just who did it, but was this generated from a user or some sort of Web hook or something happening, another system, or what organization they were a part of, and all these other pieces of metadata that then later helps us process it. Even like, is this transaction going to be of interest to a user later on and that type of stuff. It's like I'm not sure.
It's nice because we can store that directly in Datomic and it fits very well. We could, of course, do this in Postgres, I think, but it would be like an afterthought. I don't know if that makes complete sense, but it would be something that would be kind of more external like this is: You look at the transactions. You look at the audit information. Okay, this is what's happened in this transaction, essentially.
CRAIG: Mm-hmm. Yeah, it's part of the model as opposed to part of your model.
IVAN: Exactly. Yeah.
IVAN: Yeah, so that's been really nice. Datalog is not something I knew before using Datomic, and that took a little while to understand. There are a couple things that we've realized that maybe we were using wrong, we were doing wrong.
One of the interesting things is something that we did wrong originally is often in a Web framework you have, at the beginning of the request you open a transaction in whatever, say Postgres. At the end of the request's lifecycle you close the transaction. People do this different ways, but kind of like this is what happens in Django, perhaps. You can do multiple inserts into that throughout that lifecycle of the request, and that's going to be in a single transaction.
We were kind of originally doing multiple transacts in a single request, and I don't think that's how we were – I'm not sure, actually, if that's how you're supposed to do it. But we learned that that's kind of problematic. We changed our system to try to group all the transactions or as much as we can. We haven't been completely successful. It's like a single request kind of generates most of the time a single transaction that inserts into the database, so that was something that we definitely had to learn, and that was not something that was obvious. I think that comes from a traditional Postgres background or SQL background to moving to Datomic.
CRAIG: Yeah, I know exactly what you mean. You mentioned the separation of read and write as well, transact and query being separate. That's actually something that I also have learned from Datomic and from Clojure itself, frankly, also separates–
CRAIG: –updating things from reading things or, as Rich sometimes calls it, perception from permutation.
IVAN: Yeah, exactly. Yep.
CRAIG: I think it's a super, super powerful paradigm.
CRAIG: I wanted to call that out. That's actually great. You've mentioned a whole bunch of things that I also went through as I was learning various pieces of technology.
I just want to make sure we revisit this because you said something really interesting, and I think you touched on it, which is you had to learn a bunch of stuff. I'll paraphrase you as there were a bunch of ah-ha moments you had to go through.
CRAIG: I think you've mentioned a few of them. You mentioned learning the fact that transactions are data. That transactions are not a thing that spans a bunch of interactions with the database.
CRAIG: But are themselves kind of atomic interactions with the database.
IVAN: Yup.
CRAIG: Were there other things that you can think of that people that haven't worked with Datomic, you can warn them and say, oh, you're going to have to shift your brain in this specific way? You've mentioned a few, but I'm wondering if you can think of any others.
IVAN: Yeah, there are a couple more. One of the interesting things is because Datalog is based on logic programming. I'm probably going to say this incorrectly, but one of the interesting things that we discovered is that you build out these Datalog clauses in your query, and so you're looking for some piece of information, some record in your database, so to speak, and you're building out these clauses that are limiting. Let's say it's the user object, so you say give me the users with this email and bind it to a question, the logic variable entity ID or something like that.
What's interesting is if you miss, so we've discovered this a couple times in our queries that if you mistype entity ID on the left-hand side, if you accidentally type "EID" and you meant it to restrict your search, your query, what it's going to do is generate a new logic variable that's simple just not bound to anything. I believe this is correct, and maybe I'm wrong. That is kind of a subtle thing that it means that your query might actually return the correct results sometimes, but won't actually be correct.
That's kind of an interesting thing that we discovered. That's more about sloppiness on our part. You have to pay attention to your Datalog queries in a way that, like, if you reference. There's not a real good comparison in SQL, but if you try to select a field out of a table that doesn't exist, it will throw an error, for example.
IVAN: That was interesting. I think one of the things that we've struggled with, and I don't actually have a correct answer for this, and I don't know if we've solved this completely, but Datomic stores a history of everything, but sometimes you have a bug. Let's say, on your user object, you have updated that field. That update, for some reason in your application, an updated field, updated at is like a timestamp or something else. That doesn't get updated correctly for, like, three weeks.
What's interesting is that bug is now going to kind of live in the history of the database, which is fine. Most of the time you're not going to care about that. But once you start writing queries that go back and kind of are like auditing your information, you're going to have to take that into account, which is kind of like an interesting problem. Whit and I have talked about … Whit and I have talked about how we want to solve this, and there are a bunch of solutions out there. Well, I think there's one solution, which is, you could replay the transactions in Datomic, which would allow you to go back and basically fix the history.
The basic idea that I think we're trying to get at is sometimes you want to do a rebase, git rebase interactive and fix some of the transactions. That's something that you kind of have to think about. And the other thing, too, which we kind of didn't really consider as much because we weren't doing as must history stuff in the beginning is, as you add new properties to your entities, you need to take that into consideration as you're writing historical queries. As you go back in time, if you're looking for some field on an entity and that field no longer exists, you're not going to get the results that you necessarily expect.
I think that's something that's also kind of similar to the rewriting history thing. Kind of similar, but it's something that we haven't quite solved, but we've kind of learned to kind of work around, I guess. Yeah, I don't know.
CRAIG: Yeah. I think what you're pointing out is perfectly valid, which is that you're using a database, and one of the features of that database is immutable history.
CRAIG: One of the things that's true about a database with immutable history is that history is immutable.
IVAN: Yeah, exactly. I'm not complaining about this. I'm putting this out. This is not a problem you ever have in a normal database system because you can never do this, so this is something that because Datomic is really interesting and it has this really cool way of storing data that we've been exposed to this, essentially.
CRAIG: You can actually do this in a non-Datomic database, right? This is what we mentioned before where it's no longer part of the model. It's part of your model.
CRAIG: You would have the same problems. You actually mentioned, so we've run into this a bunch. We've had other customers, other teams that we've worked with have said, oh, yeah, we have "bad" history. I'm using air quotes around "bad."
CRAIG: We have things in our history that we wish–
IVAN: Weren't there.
IVAN: Yeah, yeah.
CRAIG: If only I'd known now what I know then.
CRAIG: We have a couple answers to that, right? One is, well, you did say it and, in fact, if you believe that one of the benefits is a record of what you actually said, well, that's what you actually said.
IVAN: Yep. Totally. You've made this mistake, guys.
CRAIG: Right. Remembering your mistakes is good. You mentioned, yourself, Git. When we fix a bug, we don't try to necessarily go back and to get history and erase the commit where the bug occurred, right?
IVAN: No, we replace it.
CRAIG: That's right. We override it. We say, well, I got smarter and here is the new smarter. But, you know, there certainly have been times where, for whatever reason, people have said we need to have a different history. As you mentioned, it is possible to address that. My colleague Stuart Sierra likes to call the process of taking all of the data out of the Datomic database and putting it into another database with an alternate history as decanting, which is a word that I kind of like.
IVAN: Like what you do with wine.
CRAIG: Exactly. Yeah. It's the same idea, right? We're going to leave the dregs behind. Now, when we have a conversation with people about this, we're always careful to say, "Be sure this is what you want and you're not going this direction because of what you're used to. Really consider whether the implications here are acceptable." But it is an option at least.
IVAN: Yeah, yeah. No. Sometimes it's for small things that don't really matter, and we don't want to do this for. But, yeah, it's not something we run into like the application because the application mostly uses the state of the world as of right now.
IVAN: But sometimes it's more of like when we write custom queries that go look back at what did this organization – like when was this organization created and how much did they do in their first week? We have to think about that more. Yeah.
CRAIG: Actually, I would love to talk a bit about specifics about how you're using Clojure, Datomic, whatever else you'd like to mention, in your product. I imagine, given that you're trying to solve a nontrivial, real world problem, project management–
CRAIG: –that you've had to come up with solutions to hard problems and that those solutions were interesting. So I'm wondering if you wouldn't mind sharing one or two examples of things you ran up against and how you decided to model them. Again, I think maybe the Datomic side of things is probably a little bit more interesting given the state of the world right now. But whatever you think is cool, I'd love to hear a bit about your app.
IVAN: Yeah. Like I mentioned, one of the decisions we made – this is another interesting thing about Datomic, I guess, which is, in Datomic, we have entities with attributes attached to them. But the entities themselves don't really have a type. In a normal SQL database – this is another one that kind of, I think, paradigm shifts you have to go through when you're using Datomic.
In your normal relational database you have a table called users, right? But there really isn't quite the same equivalent–this is my understanding. Correct me if I'm wrong, please–the equivalent of, like, a user's table. You have a bunch of entities that have a bunch of attributes that resemble a user entity, essentially. What's interesting is when we want to translate that to the front-end code, we have to kind of, in some ways, present that to them as if there is a user type. Not exactly that, and this gets back to specifically what we were working on with the activity feed.
What's interesting, we had to solve this problem, which is like there's a transaction and it's going to have a bunch of datoms. Those datoms are going to represent a new entity and a bunch of facts about that entity. But then we kind of want to say, okay, user Ivan created this story with this field. One of the things that we did is we annotated the transactions with kind of a field that would allow us to quickly query for those in real time later on and say, "Okay. In this transaction this object or objects were created," and that allowed us. It made it simpler to present these transactions to the front end in a processed way that would look like something that you would recognize.
Some could say, well, maybe you shouldn't have done that, which is maybe true. Maybe that wasn't the correct solution. The front end uses kind of more of a standard MVC model, model controller view, world view I guess you would say, so we kind of wanted to present them, like this story was created, this epic was created, or this project, whatever. That was one solution we did.
That actually had some interesting ramifications about analytics, about you can see very broadly, very quickly, what people are doing. One of the things we found was that looking, because you could go back, and you can say, for this time range, give me these transactions. But loading the actual transactional data is actually not super fast, so we can write faster queries that use this field that tells us what were created and deleted. It allows us to look at activity at a high level.
I don't know if we've solved hard problems. We've also solved some mundane problems like we're pretty heavy users of schema. And so we use Liberator to define our controllers, and we use Schema to validate our inputs. That was something because we had originally kind of we were doing validation in different places kind of like we were doing transactions in different places. I don't know if this is the right word for it, but we kind of moved our validation more to the edge and we did it more consistently, like if you give us an object that doesn't match what we expect you to–this is kind of normal stuff–we'll return a 400 and stuff.
One of the more interesting things, though, and maybe this is my ignorance of kind of how restful APIs work, but we always have this kind of strange problem that Whit and I have to solve, which is if you're creating this object and there's a bunch of relational data in it because that's one of the cool things about Datomic. It's relational. We have projects, which are kind of like high level buckets of stories. You try to create a story that's in a project that doesn't exist. What should be the response code?
One of the interesting things is we've really tried to leverage Liberator to have that decision graph model to return error codes that are useful and learning Liberator's kind of decision model. There's a lot in there, so we don't use all of it, of course, but it was kind of a big step that allowed us to build kind of a bunch of endpoints more quickly, essentially, and do it more consistently. I think that was a big part of what we were working on.
CRAIG: Now do you find that you are making use of those fine grained HTTP status codes on the client to make different decisions? In other words, are you distinguishing between a 401 and a 403 or whatever? Are you actually using that to make smart decisions in the client?
IVAN: Yes and no. Yeah, we are using them in some places. It's not complete, so I think the goal is one day we will use those to make smart decisions. But one of the things that we're trying to do at Clubhouse is more than just find that balance between ease of use. We also wanted to build a nice API that people could build stuff on top of our system without us having to ask.
Whit and I have spent a lot of time trying to build an API that would actually tell you what you did wrong and help you, provide sensible error codes, tell you you gave me an int, and I expected a string, and so this is the problem. This is the key that you screwed up on.
I don't know. I guess maybe we didn't have to do that, but that was something that we felt kind of strongly about. We were having to do those checks anyway for our own consistency. If you try to create a story with a project that doesn't exist, that's going to a null, and Datomic is going to explode or some other part is going to explode. So we kind of wanted to make sure that there wasn't – I don't know how to articulate exactly, but we wanted to make sure that all of that knowledge and those checks that we did were exposed to the front end or to any other client.
CRAIG: Mm-hmm. Yeah. If I can put words in your mouth a little bit, you need to have something that programs can act on and not just a string that a developer can look at and maybe understand.
CRAIG: Yeah. Makes sense. Cool. I want to actually circle around to a different topic because you said something that was, to me, just absolutely fascinating. I mentioned it briefly, this balance between usability and power. I want to come back to that because I want to make sure we get to it. I suspect it's something that you and your team have spent at least some time thinking about.
First of all, I will go so far as to say you probably do not believe that it is a straight up tradeoff, that things that are more usable are necessarily less powerful and vice versa. But I think that there is maybe something in there worth unpacking. I'm curious to get your thoughts on that whole idea of usability and the idea of power and how they interrelate, if at all.
IVAN: Uh-oh, now you've put me on the spot.
CRAIG: You know. It just seems like you've – yeah, I am. I'm curious to get your thoughts, so I am putting you on the spot, sir.
IVAN: Yeah, I think that's something that we struggle with a lot in tools and software, I think. Right? This is not an uncommon problem, and I don't know if I can answer this, so I get to duck out of the question a little bit.
IVAN: I think it's a question of for who or whom. I don't know how to speak English correctly. I think we have different people we're trying to build our product for. One of the things that we wanted to do was to make it, so most developers I know hate having to tell people what they've done and then put it into some system, right? One of the things that we worked on a lot is to try to drive and record what happens in GitHub in Clubhouse so our interface, your interface as an engineer of interacting with Clubhouse and saying, "I'm working on this story and it's in development, it's ready for review, and then I deployed it," is through GitHub and Git, actually.
That, we spent a bunch of work integrating with GitHub. We do it based on branch naming, so if you create a branch with a certain pattern, the branch will automatically show up in Clubhouse. Then actions you take with that branch will actually drive the story across the Kanban board or whatever.
I don't know if that answers partly one of your questions. For engineers, for example, I think that makes Clubhouse easier to use. I don't know.
The other thing is I think, with a lot of project management tools that I've observed that you can do a lot, it's hard because you can do a lot of different things with it, but it ends up being a little unwieldy. What we've tried – I don't know how to answer this exactly. What we tried to do is–
CRAIG: You've brought up this idea of introducing features that are aimed at smoothing a road, right? You know that a lot of people are going to choose to have branches. Those branches are going to be in GitHub. They're going to take certain avenues.
CRAIG: Or take certain actions on those branches. You're like, oh, well, let's use that knowledge and use it to do work that they are going to do anyway.
CRAIG: To move a story through a workflow. I guess the question I have for you is then, okay, given a feature like that where you've kind of decided to pave the cow path, is not quite the right analogy, but I think you see what I'm getting at. Do we give up anything by doing that? We'll go ahead and pick on the 800-pound gorilla, JIRA, right?
IVAN: Yeah. I wasn't going to say it.
CRAIG: Yeah, I know, and you rightly should not. I think it shows a great amount of taste and good behavior when people speak about facts rather than picking on their competitors. You haven't done it, but I will for you. I'll take JIRA as an example where you can get it to do anything. But as a result, I might have to do a bunch more dance steps. That's kind of the tradeoff I'm talking about.
IVAN: That's the idea with the GitHub integration. I guess this is just one example, our approach, I think.
IVAN: As you say, people are doing this anyway, and you are moving things into different states. The idea of having some tool outside of your version control system that manages these stories is that other people can have insight into what you're doing, like sales and product, and everyone can see. Okay, Ivan is doing this and working on that.
I think the nice part about this is that it still does that, but I don't really have to do anything different in my day-to-day life as an engineer to get those stories to move across and other people can see them move across, and everyone can see, like, oh, hey, look at this. This story, which was estimated at 2 points, was 5,000 lines of divs, so maybe it was more than a 2-point story. You know that type.
I think definitely I don't know if we're quite there, but essentially we can start doing some stuff with that information, like saying, hey, this story is huge and it's five branches. Maybe this needs to be broken into multiple stories. Obviously we're not there yet, but we're starting to get the information so we can kind of get insight into that at least.
CRAIG: Yeah, it's interesting. I think what I'm taking away from this is that, no surprise, once again we've discovered that by taking the problem apart and focusing on what are you really trying to do, that there's wind in that.
CRAIG: I'm hearing you say, well, looking at it, you're not actually trying to move a card from column A to column B. That's not the goal. The goal is to provide visibility into what's going on.
CRAIG: And so if we can find a way to do that, it doesn't really matter if it's a developer dragging a card between columns or committing to a branch. And if they're going to commit to the branch anyway, then let's not make them do other work that's equivalent given the goal that we've thought about underlying the real problem.
IVAN: Yeah, exactly. There's a whole bunch of other stuff we've done too. I think Andrew Childs is the front, kind of like the lead guy on the front end, and he's done other things, which work really hard to make a tool with a lot of knobs and levers where you can configure things, you know, like make it look nice and make it so it's easy to find all those different pieces. In some of these tools a huge problem is that there are places where stuff goes to hide, kind of. I don't know if that makes complete sense. That's a slightly different issue.
Yeah, that's part of the idea of building an API that's public that people can build more tools into. We haven't quite got to the deploy.
Oh, someone is at my door. I'm sorry.
CRAIG: All right, we're back. Had to take a quick break there for a second, but Ivan, you were saying – please continue.
IVAN: Yeah, I think that's one of the reasons why Whit and I focused on building an API where anyone could kind of build integrations to. Part of the story that we haven't completed yet is that when you finish a story, you open a pull request. You close the pull request. It gets moved into done, and then the story gets deployed. You want to have that happen automatically, so we're hoping that–and we're going to work on this at some point too–that story can travel across the Kanban board the whole way without having to have – you don't actually have to drag it there because you're already taking these actions. We just need to build the integrations to drive those. That's nice because then you have a record of that associated with the story. The story explains in written English what you're trying to accomplish.
Rather than, oh, I finished this and I forgot to move it into the done state for a week, you have a very accurate history of, like, okay, this is when we started it. These were the commits that started the story. This is when they merged that pull request, and then this is when they deployed it. I think that's one of many things we're trying to do.
CRAIG: That sounds very cool.
IVAN: I think it is.
CRAIG: No, like I say, I have not used the product. But after talking to you and, of course, I'm a big tech fan. I know that you're using neat technologies in the backend. It makes me want to use it more. I think, too, my take on things is that this sort of thing is really needed. Anyway, we could go there, but I think maybe we'll save that for some other time.
I want to make sure that, since you're a busy person, you're trying to develop this product, I don't want to keep you too long, but I want to make sure that we clear any space that we need to here to talk about anything else that you'd like to discuss today. If you don't have anything right now, then that's cool. I think we should have you back on again in a while, see how it's gone, see how your knowledge of Clojure and Datomic has continued to expand. I'm always fascinated to hear how people have come to understand these technologies better. But like I said, that's for another time.
This time, is there anything else you'd like to talk about today before we start to wrap it up?
IVAN: I guess not really. I guess maybe I have to say thank you to the Clojure community because I've been in it in various forms for a while now, and it's kind of like a nice group of intelligent people. And I've really enjoyed learning a lot. I mean I feel like my journey with Clojure has been kind of like understanding so much about even like computer science on some level, and so I think that's been really interesting and it's been nice. It's a nice language, and it's a nice group of people, it seems like, so I really appreciate that, actually.
CRAIG: I totally agree with you. I've had the same experience. It is really wonderful. I mean you know it's hard. It's sort of an amorphous Internet based thing.
IVAN: Which is true, yeah.
CRAIG: At the same time, there are an extremely large number of people who are just awesome, and I've learned a lot too. It's good stuff.
CRAIG: Well, cool. Well, Ivan, it's been really interesting to talk to you, just so fascinating to me to kind of see how things have gone. In the old days – gosh, this podcast has been going for five years now, and I don't think I've ever known everyone that was doing Clojure. I haven't been in it that long. I've been in it since roughly around the same time you were when it was a pretty small thing, but there was never a point where I knew absolutely everyone that was doing Clojure in the world.
But it is definitely the case that, over the five years we've been doing this podcast, the number of times where we say, "Oh, we should talk to that person," and they're doing something that I just hadn't been aware of, has gone way up. I think that's because there's just a lot of people now doing interesting work using these technologies, yourself included. Always super fun for me to hear about one more of them, and that was no exception today. I will thank you a ton for coming on.
But of course, before we really sign off, we're going to ask you one more question. This is the question about advice. We always ask our guest to share a little bit of advice. That advice could be technical. It could be non-technical, which it often is. It can really be anything. It's any kind of piece of advice you'd like to share with us. What would you like to share with our audience today?
IVAN: I'm not sure. I think, for me, Clojure has been, like I just mentioned, kind of down the rabbit hole, and I've kind of not held back, and that's been a really great experience for me. Definitely when I first started, there were so many foreign concepts, so many words I had to look up and just try to understand. I kind of never looked back, and I just kind of let it kind of take over what I was obsessed with. I don't know. It's been kind of fun. I don't know if that's really advice, to be honest.
CRAIG: Be like Ivan in that regard, I think, is good advice. No, I mean embrace it, really, like follow your obsession. Go ahead and see how far you can take it, I think is fantastic advice.
IVAN: Yeah, and that goes to what I think my friend Rob once told me, which is like, you know, we get in these arguments about what's best and what's the best way to program. Not in this community necessarily, but definitely on the Internet. My friend Rob was always like, "You know, just let people do what they want because they're going to get obsessed with it, and they're going to be, like, really into it and really kind of care about it. If you force them to do something, learn, use some language or some toolset that they don't like, they're kind of going to do it begrudgingly."
I don't know how to make programmers do that. I think programming is such a mentally intense thing that you really have to kind of embrace it. That's what I found, personally. I don't know.
CRAIG: Mm-hmm. Yeah, I think you're right. I mean I think one of the things that a lot of people talk about when they talk about hiring and when they talk about the teams they want to work on, the word that comes up over and over again is passion.
CRAIG: How do you make somebody passionate for something they can't stand?
IVAN: Yeah, you can't.
CRAIG: You can't do it.
IVAN: I don't know if that's a good thing, actually. I'm not sure. Is it great that we have to be passionate about it? But it feels like we do. I don't know.
CRAIG: Yeah, and I know what you mean, but it's certainly true, and so learning to work within that constraint is with wisdom, right?
IVAN: Yeah, I guess so.
IVAN: Yeah. All right.
CRAIG: Cool. Well, Ivan, thank you so much for taking the time to come on and talk to us today about your experience with Clojure and Datomic and about the interesting work you're doing at Clubhouse. I really wish you a ton of luck. I mean it looks like you've made a great start.
What I'm really looking forward to is a project where I get assigned to the project and they say, oh, our project management tool is Clubhouse. And I'll be like, oh, yeah, great. It hasn't happened yet, but I'm looking forward to the day sometime soon when that will happen, and I'll be like, I know that guy. This is good stuff.
But anyway, certainly thank you for coming on and talking to us today. It's been really fun having that conversation with you, so appreciate it.
IVAN: Yeah, thanks for having me on. I appreciate it.
CRAIG: No, not at all. We'll have you back some time before too terribly long. But for now, we will go ahead and sign off. This has been The Cognicast.
CRAIG: You have been listening to The Cognicast. The Cognicast is a production of Cognitect, Inc. Cognitect are the makers of Datomic, and we provide consulting services around it, Clojure, and a host of other technologies to businesses ranging from the smallest startups to the Fortune 50. You can find us on the Web at cognitect.com and on Twitter, @Cognitect. You can subscribe to The Cognicast, listen to past episodes, and view cover art, show notes, and episode transcripts at our home on the Web, cognitect.com/podcast. You can contact the show by tweeting @Cognicast or by emailing us at podcast@cognitect.com.
Our guest today was Ivan Willig, on Twitter @ControlCMetaP. Episode cover art is by Michael Parenteau, audio production by Russ Olsen and Daemian Mack. The Cognicast is produced by Kim Foster. Our theme music is Thumbs Up (for Rock N' Roll) by Kill the Noise with Feed Me. I'm your host, Craig Andera. Thanks for listening.
Alex Miller and Ben Vandgrift - Cognicast Episode 086...— Kurt Zimmer of Roomkey - Podcast Episode 033— Dragan Djuric - Cognicast Episode 154— Nicola Mometto - Cognicast Episode 134— Kovas Boguta - Cognicast Episode 055—


text:
God of War Sequel Delayed, Cross Gen Confirmed
0	June 2, 2021 3:11 PM	by	Bobby Pashalidis
When Sony revealed as part of their Future of Gaming Showcase sizzle reel that God of War's sequel was coming, the world went nuts. The 2018 reboot has done wonders for both fans and Kratos, delivering an emotional story in a strange new world. Speculation around the sequel was whether or not it would come to both PS4 and PS5, but it is only today we now have an official answer.
In an interview with PlayStation Studios Herman Hulst, the news of God of War would not only be coming to both PS4 and PS5 but that it was delayed out of 2021 and into 2022. A move that makes sense and one that is absolutely the right call. I never believed the sequel would launch in 2021 and it shouldn't. While the pandemic has set hundreds of games off their development cycles, it's also given studios the opportunity to be more transparent about the process.
Without that transparency, you'll have droves of angry 'fans' spouting hyperbole but also the support of people who care about the wellbeing of the developers. It's easier to be honest and upfront about a delay than vaguely hinting at the situation. The decision to delay God of War so that it can be "the amazing God of War game that we all want to play," is more than fine with me.
"So we have, currently, two very big, very narrative-driven games in development: Horizon Forbidden West and the next God of War. And for both of those, they're frankly affected by access to performance capture and talent," Hulst said. "For Horizon, we think we are on track to release this holiday season. But that isn't quite certain yet, and we're working as hard as we can to confirm that to you as soon as we can.
pic.twitter.com/LLXnEof2Lg
— Santa Monica Studio Is Hiring (@SonySantaMonica) June 2, 2021
Santa Monica Studio confirms the delay not long after the interview with the head of PlayStation Studios went live on the PlayStation Blog.
Hulst also iterated that Horizon Forbidden West is on track and development is going according to schedule with a holiday release window being assigned to the latest from Guerilla Games.
Furthermore, the interview also confirmed that the once thought exclusive Gran Turismo 7 would be a PlayStation 5 exclusive, that's not true and is coming to PlayStation 4 when it launches. "Where it makes sense to develop a title for both PS4 and PS5 — for Horizon Forbidden West, the next God of War, GT7 — we'll continue looking at that. And if PS4 owners want to play that game, then they can. If they want to go on and play the PS5 version, that game will be there for them." said Hulst.
With an active console base of 110 million, you can't simply walk away from them when a new console launches but you can't also not give new PS5 owners important showpieces for the new hardware like with Returnal, Demon's Souls, Ratchet & Clank: Rift Apart.
And if you were worried about PlayStation sticking to known franchises, of the 25 titles currently in development over at PlayStation Studios, half of those are entirely new IPs.
"New IP is incredibly important to us," Hulst said. "New IP is the lifeblood of gaming. But, new IP is just one aspect of our strategy. Ultimately, I want PlayStation Studios to be fiercely daring, to take risks. I want us to continue to embrace the legacy of PlayStation, pushing the boundaries of gaming, keep making games that matter. Games that, probably, wouldn't have been made anywhere else.
"And you know, Bend Studio is working on a very exciting new IP that they're very, very passionate about. They're building on the deep open-world systems that they developed with Days Gone. So I'm really happy for Bend Studio."
New School RPG from Shin Megami Tensei staff to be Revealed
by	Bobby Pashalidis	- Jun 2, 2021
Ghostrunner Is Coming to Current Gen This Fall
Weekly Video Game Releases: January 1st to 14th
God of War's PC Port Will Be Handled by an External Studio
God of War is Coming to PC
God of War Ragnarok's Delay Was Due to Christopher Judge's Injury

redpajama_set_name: RedPajamaCommonCrawl


text:
Archive > 1998 > July/August 1998
Download the July/August 1998 Issue in PDF format
Product Liability for Engineers
This textbook, written for college level engineering students, gives a basic grounding in the complexities of product liability law. It also provides useful information to those of us involved in the manufacturing of gears and gear systems in that the fundamental concepts apply to all types of manufacturers.
Plastic: The Not-So-Alternative Technology
"We're taking over," says Art Milano. It's a bold statement from the engineering manager of Seitz Corporation, one of the largest manufacturers of injection molded plastic gears, but Milano has reason for his optimism. Plastic gears are big business-probably bigger than most gear industry "insiders" realize.
Alternative Gear Manufacturing
the gear industry is awash in manufacturing technologies that promise to eliminate waste by producing gears in near-net shape, cut production and labor costs and permit gear designers greater freedom in materials. These methods can be broken down into the following categories: alternative ways to cut, alternative ways to form and new, exotic alternatives. Some are new, some are old and some are simply amazing.
Exhibitors Prepare for the Biggest IMTS Ever
IMTS Show Coverage for 1998.
Introduction to ISO 6336 What Gear Manufacturers Need to Know
ISO 6336 Calculation of Load Capacity of Spur and Helical Gears was published in 1997 after 50 years of effort by an international committee of experts whose work spanned three generations of gear technology development. It was a difficult compromise between the existing national standards to get a single standard published which will be the basis for future work. Many of the compromises added complication to the 1987 edition of DIN 3990, which was the basic document.
Effects of Planetary Gear Ratio on Mean Service Life
Planetary gear transmissions are compact, high-power speed reducers that use parallel load paths. The range of possible reduction ratios is bounded from below and above by limits on the relative size of the planet gears. For a single-plane transmission, the planet gear has no size of the sun and ring. Which ratio is best for a planetary reduction can be resolved by studying a series of optimal designs. In this series, each design is obtained by maximizing the service life for a planetary transmission with a fixed size, gear ratio, input speed, power and materials. The planetary gear reduction service life is modeled as a function of the two-parameter Weibull distributed service lives of the bearings and gears in the reduction. Planet bearing life strongly influences the optimal reduction lives, which point to an optimal planetary reduction ratio in the neighborhood of four to five.
Politics of Manufacturing (Publishers Page)
In the approximately 15 years that I have been writing editorials for Gear Technology, I've purposely avoided certain topics. Sex, religion and my own used gear machinery business are among the subjects that have always been off limits. But with this issue, I'm going to break one of my long-standing taboos by talking politics.
Welcome to our Product News page. Here we feature new products of interest to the gear and gear products markets.
Technical Calendar (Events)
Complete Technical Calendar for July/August 1998.
What the Internet Means To Your Gear Business (Management Matters)
Let's face it. The Internet is still, to many of us, exciting, confusing, terrifying and frustrating by turns. The buzzwords change so fast that even the most high tech companies have a hard time keeping up. Cyberspace. Firewall, Java. E-commerce. The list goes on.
Industry News for July/August 1998.
The Music of the Gears (Addendum)
It should be obvious by now that gears are more than just mechanical components. We have brought you movies with gears and Shakespeare with gears, jewelry made out of gears and so on. Now we, the humble staff at Addendum, are proud to present gears in the world of music.


text:
Kudos to Mayor Kriseman and the Team
Anthony Holloway New Police Chief
There is not enough paint in Pinellas County to color the spectacle of Rick Kriseman and his dream team anointing Antony Holloway St. Petersburg's new Police Chief a pretty picture.
After all those campaign and inaugural promises of transparency and listening to the people, a national search, interviews, Council briefings and a public show, Kriseman and his inner circle decide on their own who the new police chief will be.
Kriseman is right, it is the Mayor's prerogative to appoint the Chief, but why promise one thing and do the opposite?
Rick Kriseman Mayor
Did they have a plan? Well actually yes kind of.....
You can find it an article in the Weekly Challenger by Goliath Davis. St. Pete's next police chief.
Notwithstanding the likely influence of former Chief Davis, Kriseman and his high paid inner circle screwed this up to a degree few can remember in St. Pete.
E-mailing the outside candidates, and calling in the local candidate 3 days before the proposed announcement to tell them they were not getting the job was serious lapse in judgment to say the least. They had to know there would be a leak and the media would go crazy.
And a side note to the Mayor, all of those police cars that drive by City Hall each day, they don't just look for homeless people.
In addition, it would appear that the Kriseman team has not learned in 6 months how porous the St. Pete City Government fabric really is. It is akin to sieve.
In the Baker administration, the staff would frequently find out what we were doing AT the press conference. It didn't take Baker long to learn there were few secrets or confidences kept at City Hall or anywhere else in the administration for that matter.
The political consultants, former and current candidates I have talked to are all shaking their heads.
Kevin King Chief of Staff
It is hard to tell who was the architect of the weekend disaster.
Kevin King, Kriseman's Chief of Staff, who views himself as political "operative", and Ben Kirby, Kriseman's long time communications expert and adviser, are likely at the center of the storm.
King and Kirby have been parked at City Hall in high paying jobs most likely until the Mayors' next campaign. Neither has been particularly affective and this weekend is a glowing example.
Ben Kirby Communications Director
Several phone calls and texts to Kirby as things began to unravel on Saturday were responded to by a simple text, "No comment over the weekend."
The objective all along has been to keep Assistant Chief Melanie Bevan out of the Chief's office; because Bevan in the Chief's seat spells the end of the Coalition.
It's not that Bevan is too close to the union that is dumbest excuse on the planet, it's because Bevan is one of the very few people that scares the hell out of Goliath Davis.
If Kriseman was going to follow the Goliath Davis plan as outlined in the Challenger piece, he should have followed it completely, including the "go outside for another search" recommendation. Why worry about time now. It's already been 8 months.
Now the whole police chief thing is Kriseman's and his alone.
The folks on the Pier Task Force should go into high alert because this is exactly what happened the last time. A lot of public effort was garnered then ignored by the administration.
In the Pier issue keep your eye on large campaign contributions.
Kriseman has burned a lot of political capital in just a few days.
The administration looks inexperienced, disorganized and confused. And in fact they are.
Kriseman may finally be learning that old friends, political hacks and former campaign workers really don't know much about running a City.
Antony Holloway may be a great guy and an outstanding police chief, but my guess is he is here for all the wrong reasons and he has no idea of how alone he is going to be at 1300 1st Avenue North.
Disclosures: Contributor to No Tax for Tracks
▼ Sep 2014 (20)
State Senator Latvala Jumps on the GreenLight Train
Sunday September 21, 2014 My GreenLight Obsession
Sunday September 14, 2014 - The New St. Pete Fisca...
Major League Sports - All in on GreenLight
The GreenLight Quid Pro Quo - Or Your Tax Dollars ...
Medical Marijuana and Law Enforcement
IS THIS LEGAL?


Amazing Image of Seashell Table Lamps is one of several design collections from 19 Photos Designs Impressive Design seashell table lamps StyleCraft Clam Shells Table Lamp Lighting Lamps Home Macys which is one of the very popular designs of the year.Seashell Table Lamps published on Monday, July 23, 2018 At 7: 18 pm.
We are have 19 beautiful pictures about Seashell Table Lamps. We hope you enjoyed it and if you want to see the high pictures, simply just click the images and you will be redirected to extra large page of Seashell Table Lamps.


text:
« Who is in charge?
Feeling Valuable in the Work Place »
Value in Life Style Choices
By Kathleen Maxwell, on October 4th, 2011
It is wonderful to be an individual, to really live as you want to live and love who you want to love. When you are being true to yourself, you are different. Sadly, for too long, different has been a code word for wrong. Different does not give anyone permission to hate. And yet, we all know that it is our differences that people call us out on.
What happens to you if you realize that you are gay, transgendered or bi-sexual? Now you are at risk of being excluded, not solely because of yourself, but because of who you love. Since love and acceptance are basic needs it sets up a horrible conflict. You can either love the people you are attracted to and risk being hated for that, or you can admire them from afar and forever be lonely and dissatisfied.
As the Military adjusts to the changes that the repeal of "Don't Ask, Don't Tell" which allows Gays and Lesbians to serve openly in the military. Society outside of the Military has to adjust too.
Lesbian tells her commanding officer she dated gay men to blend in during "Don't Ask Don't Tell."
How do we begin to find tolerance for one another? How do we erase years of being taught to hate anything that is different from ourselves? Can we learn to see what is?
Because bring LGBT was forbidden, anyone who felt those feelings was condemned. If anyone prayed on or abused LGBT the victim was regarded as deserving the pain inflicted on them. But if we see bullying, rape, and torture as always wrong then it is easy to see that punishing the perpetrators is always right. There has been a change in consciousness brought about by those who have loved and lost people to hate. In October 2009, President Obama signed into Law the Matthew Shepard and James Byrd Jr. Hate Crimes Prevention Act, the measure expands the 1969 United States federal hate-crime law to include crimes motivated by a victim's actual or perceived gender, sexual orientation, gender identity, or disability.
What can be done to turn hate into love? In December 1998, Judy and Dennis Shepard founded the Matthew Shepard Foundation, which supports diversity and tolerance in youth organizations. In 2001, The Point Foundation was created as the first and largest national foundation to support academic achievement in higher education among lesbian, gay, bisexual and transgender students by providing financial support, mentoring and hope to meritorious students who are marginalized due to sexual orientation, gender expression or gender identity.
As individuals, we need to make peace both within ourselves and with those around us. If you feel hate towards others because of their differences or if you feel hate toward yourself because you cannot be like others, consider working out your pain through the LifeLine Technique. You are worthy of love and valuable in all you bring to the world. Your unique gifts and talents will never be duplicated by anyone else. Let your light shine.
Stumble! for WP
Sphere: Related Content
anger, fear, Forgiveness, LifeLine Technique, low self-esteam Don't Ask Don't Tell, Heal Hate, LGBT, Matthew Shepard and James Byrd Jr. Hate Crimes Prevention Act, Matthew Shepard Foundation, Point Foundation
1 comment to Value in Life Style Choices
forex indicator
I don?t even know how I ended up here, however I believed this put up was once great. I do not understand who you might be however definitely you're going to a well-known blogger should you aren't already 😉 Cheers!


By 1969, six albums in, The Easybeats were beating the sounds of their own demise. Having relocated to the UK, they started releasing demos for other artists to record and that's how the album Friends was born. It would be their last album release.
One hit wonders! After recording Little Girl for a small regional label, Hush Records, Bell Records picked up the song and it reached the Billboard top ten. Because of that, Bell Records offered them an album deal. The album was recorded in three weeks and the band then embarked on a nationwide tour supporting among others, Paul Revere & the Raiders, the Young Rascals, and The Yardbirds.
Wednesday was formed in Oshawa in 1971 by high school mates Mike O'Neil and Paul Andrew Smith. They originally played the Ontario circuit playing covers of contemporary hits and 1950's standards. By the time they'd honed their live chops in 1973 they had remade the Wayne Cochran song "Last Kiss". This time Driscoll hand delivered the single to radio stations where CFTR-AM played it immediately and indefinitely. 1050 CHUM-AM jumped on the track and the song went to No.2, giving way to an avalanche of Canadian radio support.
This buzz spilled over into the US market and the record made Billboard's 'Hot 100'. The song would go on to sell well over 200,000 copies. The band was awarded a 'RPM Maple Leaf Award' for outstanding sales (1973), and were nominated for several Junos as well. "Fly Away" made it to a respectable No. 21 on the charts.
Originally called The Scoundrelz, they released one single before breaking up. Their last single was released after changing their name to Nobody. After this, Buddy Stanton joined local Ottawa band The Townsmen. Marc Corbin found himself in Heart.
Jane Stewart, 12 October 1955 in Toronto raised in Etobicoke which is probably why she was friends with the Rheostatics. Met John Switzer at university in Guelph & formed folk band Java Jive till 1979. No Borders Here was her first foray into avant gard folk pop. She's released 18 albums since.
Founded as a skiffle group in Liverpool in 1959 by John McNally and Mike Pender, the band took their name from the 1956 John Ford western film The Searchers. They've just celebrated their 56th year as a band and are currently on their last tour. They are calling it a day after their March 31, 2019 in Milton Keynes (which is totally sold out).
An unfortunatel name, The Spasstiks would got on to change into Cat. They got together in 1964 and began playing on the High School sock-hop circuit around Toronto. At one time Mainline drummer Tony Nolasco played drums for them.
I've been a David Celia fan since hearing his first CD. Every release since then has been a treat for my ears, music just the way that I like it. He's just sent me promo material for his latest project, an album recorded with his wife, Marla. While it's going to be released in August, the LPs won't be ready until the fall. I'll do a preview for it on the program in a few weeks. But for now, we'll just settle for his 2015 vinyl release of Double Mind.
Best known for his portrayal of Hank Williams Sr. in the play and film Hank Williams: The Show He Never Gave. The show toured throughout Canada and the United States, and was part of O Kanada, a Canadian cultural festival in Berlin. The film version was nominated for the best country motion picture in the 19th Annual Academy of Country Music Awards. The album has been re-released on CD by Borealis Records.
Recorded and mixed at Dadyeen Studios, St. John's by Don Walsh.
Ron Hynes (b. St. John's NL December 7, 1950 / d. St. John's, November 19, 2015) 64 yrs.
Three great Newfoundland and Labarador singers. This is an old song, most likely written around 1878 by G. W. Hunt (1839–1904), although it is often wrongly credited to Johnny Burke (1851–1930) as it was on this compilation album. The melody was rewritten by Ron Hynes who's version was covered by Great Big Sea on their 1999 album, Turn.
Although the album was released in Europe in 1970, there was no commercial North American release until 1972. This was an album of pop songs by one of the world's greatest jazz pianists. Songs included Yesterday, Sunny, Ode To Billy Joe, By The Time I Get To Phoenix etc.
The legendary Even Dozen Jug Band was founded in 1963 by Stefan Grossman & Pete Seigel. It cincluded David Grisman (Earth Opera, Old & In the Way w Jerry Garcia); Steve Katz (Blues Project / Blood, Sweat & Tears); John Sebastian (Lovin' Spoonful); Maria D'amato (Muldaur). The jug band only stayed together for about a year, releasing just one album.
This was produced when Hervey was only 15. She was called the "Brenda Lee" of Canada. Born in 1947, she died in 2016 after a long battle with cancer. She made her first recordings for Art Snider's Chateau Records in 1962 (as did Gordon Lightfoot two years earlier). As he did with Lightfoot, Snider took Hervey to Nashville, took her to meet Chet Atkins who was impressed enough to produce her. It was Atkins that got her the RCA recording contract. She won awards, like Top Country Female Artist, but couldn't keep pace with the changes in pop music and retired in 1968, moving to Vancouver and getting into acting on TV.
Bad Tractor got this song from fiddler Billy MacInnis who learned it from Cecil McEachern himself.
Known as 'The Loudest Band In The World'. "Blue Cheer" was the name of a variety of LSD made by chemist and Grateful Dead patron Owsley Stanley although the name existed earlier, as the name of a well known laundry detergent. Drummer Whaley was the band's drummer from 1967 when it was reduced from a 5 man band to a power trio. Summertime Blues was their only charted song. Rumor has it that they were so lound, they were forced to record outdoors. The band had a fortress of amps that could turn the air into cottage cheese! Some reports claimed that while recording their second album, outdoors on San Francisco's pier 57, they were so loud that people on boats 14 kms away were complaining about the sound.
The song has been recorded by Cyrkle, Anne Murray, Randy Bachman and Burton Cummings and The Smithereens. It was written by L&M specifically for George Harrison to sing at a time when he lacked the confidence to compose his own material. It was the first Beatle song recorded on a Sunday! It appeared on A Hard Day's Night as well as Something New.
Lomax was playing in The Undertakers who came to the attention of Beatles manager Brian Epstein. After Brian died, George Harrison stepped in to nurture Lomax. Sour Milk Sea is basically a George Harrison and The Beatles' record! Lomax was one of the first artists signed to the Beatles' new Apple records label.
Ollie Halsall: guitar, keyboards, vocals.
Ricky Fataar: guitar, bass, sitar, tabla, vocals.
This was originally a fictional band, created by Eric Idle and Neil Innes for 1970s television programming, but it became an actual group, doing parodies of the Beatles. The actual band toured and recorded, releasing many songs. Their 1978 mockumentary television film All You Need Is Cash was a huge hit.
Barry Wom, né Barrington Womble (styled after Ringo Starr) – played by John Halsey.
Formed as The Druids in NYC in 1965. They played the club scene and had a good following. In 1967 they decided to make the pilgrimage to California where they got more into phsychadelic sounds. There, they signed to Uni Records (Universal) and recorded their only album, Creation, and changed their name to The Druids of Stonehenge. They broke up the following year.
The Leonard Cohen Sweet: Ind / No label or serial no.
The Prunes came to be in 1965 and died three years later. However, due to a contract dispute with their management, they didn't control the use of their own name. Producer Dave Hassinger assembled another group of musicians in 1968 to continue recording as The Electric Prunes.
Songwriter Annette Tucker hired the band to play at a party she threw for her husband. This lead to the Prunes covering several of her songs.
Formed in Los Angeles in 1966, the were originally called The Young Swingers featuring future Jefferson Airplane drummer Spencer Dryden. They morphed into the Crossing Guards before finding the Peanut Butter Conspiracy name. They split up in 1970.
In 1942 the Pipers were working for Tommy Dorsey who got them to back up his newest singing sensation: Frank Sinatra. They recorded several hit songs with him, including "I'll Never Smile Again" which was Frank's first number one hit song. In 1944, The Pied Pipers were regulars on Johnny Mercer's radio program, "Chesterfield Music Shop" on NBC Monday through Friday nights. In both 1944 and 1945, The Pied Pipers won awards from Down Beat magazine as the best and most popular group of the year. The group was inducted into the Vocal Group Hall of Fame in 2001.
Mondays 12 noon - 2pm ET Tuesdays 10-12 pm NT Tuesdays at 8-10 pm NT Tues 21:30 - 23:30 GMT ..


We just published a new sample in our source code library - an extensive collection of useful samples. This sample shows how to process MS Word compatible page number fields using the new ApplicationFields of TX Text Control .NET for Windows Forms 14.0.
The sample shows how to insert the current page number and the total number of pages into a header or footer. These fields are compatible to MS Word and can be exported and imported from DOCX, DOC and RTF.


Consumers are facing problems in paying their credit card bills. The latest reports of the country's leading credit card companies have revealed this fact. The reports reveal that the credit card late payments have surged in the month of September 2011. This has happened for the first time since February 2009.
The leading credit card companies have reported that there has been a small rise in the number of people paying their credit bills 30 days late. There can be 2 possible reasons why the credit card late payments have increased in the month of September.
Consumers have started feeling less responsible for the credit cards.
Consumers are facing financial crunch.
The officials of the Capital One have reported that the credit card late payments rate has touched 3.65% in the month of September. The delinquency rates for the month of July and August were 3.37% and 3.43% respectively.
There was a steady decline in the delinquency rate throughout the year 2010. However, the delinquency rate has started to increase post May 2011. The only encouraging news is that the charge-off rate for the Capital One's international credit cards has dropped from 6.21% to 5.65% in the month of September.
On the other hand, the delinquency rate at American Express has only increased to 1.5% in September 2011. There has only been a 0.1% increase in the delinquency rate from the month of August 2011 to September 2011.
As far as the other credit card companies are concerned, the delinquency rate at Discover was 2.5% in the month of September. This figure is again 0.1% percent higher than that of the month August. The delinquency rate in the month of August 2011 was 2.49%.
Bank of America has seen the highest increase in the delinquency rate in the month of September. As per the reports, their delinquency rate has increased by 0.3%. The credit card late payment rate has increased from 3.96% in the month of August to 3.99% in the month of September.
Though there has been only a marginal increase in the credit card late payments, yet the financial experts are not taking this lightly. They are of the opinion that this can be an indicator of future potential defaults. There is a great probability that more people will get behind their payments in the coming months as the government has still not been able to bring down the unemployment rate from 9.1%. Moreover, with another recession looming in the country, the financial situation of the consumers is less likely to improve. So, this means that the delinquency rate may not decline in future.
Several consumers have stopped using credit cards after the country faced economic downturn in the year 2007. According to the 3 major credit reporting agencies, nearly 8 million people have left the credit card industry in the year 2010. Some have closed their credit accounts out of their own will. Others have been compelled by the credit card companies to terminate their accounts.
The number of credit card accounts opened by some of the major credit card companies has also reduced in the year 2011. The number of accounts issued by Master Card has dropped by 30% during the period between 2007 and 2011. The number of accounts issued in the year 2007 was 488 million as opposed to 343 million in 2011.
Another factor that would limit the impact is the fall in the credit card balance. The credit card balance in the month of August 2011 was $790.1 billion. This figure is $182 billion less than what it was in the year 2007.
Therefore, even if the consumers are able to make payments on their credit card bills, then also the banks and financial institutions don't have much to lose. Their financial health is less likely to deteriorate in such circumstances.


NEW YORK (AP) Nets coach Kenny Atkinson tinkered with his starting lineup, hoping to cure his young team's recent defensive lapses.
It paid off quickly in a St. Patrick's Day matchup between the fifth and sixth worst teams in the NBA.
Rondae Hollis-Jefferson scored 23 points in his second straight start at power forward, D'Angelo Russell had 22 points and Brooklyn recovered after blowing a double-digit lead to beat the Dallas Mavericks 114-106 on Saturday night.
The Nets, who struggled in the second half of their previous three losses, held Dallas to just 17 points in the last quarter, limiting the league's sixth-worst team to just 7 for 20 from the field.
DeMarre Carroll had 19 points and 12 rebounds, and Caris LeVert and Joe Harris each chipped in 11 points for the Nets, who snapped a three-game skid. Hollis-Jefferson added five rebounds.
Dallas rookie Dennis Smith Jr. scored 21 points but left with 3:30 remaining in the third quarter, spraining his left ankle after he stepped on Spencer Dinwiddie's left foot. X-rays were negative, though the 20-year-old had his left foot in a walking boot as a precaution.
Dwight Powell had 18 points and reserve Yogi Ferrell had 12 points and 12 assists for the Mavericks, who dressed only 10 players.
Dallas was also sluggish early after losing in overtime Friday night at Toronto. The Nets took advantage, jumping to an 11-0 lead in the first quarter.
After blowing leads of 14 and 13 in its previous two losses, Brooklyn led by 14 Saturday before the Mavericks recovered late in the second quarter, cutting the lead to 59-56 with 9-2 run to end the half.
Smith gave Dallas its first lead in the third quarter with 8:06 remaining, stripping the ball from Russell and dunking to cap an 8-2 run that put the Mavericks ahead 70-68. Dirk Nowitzki later hit a 3 and Smith followed with a pull-up jumper to put the Mavs up 80-70 with 5:36 left before Brooklyn charged back.
The Nets punched back with Carroll and Hollis-Jefferson combining for 10 straight points, capped by Hollis-Jefferson's jumper with 3:56 left in the third period that evened it at 80 before Smith exited the game.
The Nets wrestled the game away with their stifling defense in the fourth quarter a night after they gave up 34 points to the 76ers.
Nowitzki played in his 1,463rd game, moving past Kevin Garnett into fifth place in the NBA career list. The 39-year-old Nowitzki, who last summer signed on for two more years with the Mavericks, also played Friday night in Toronto and has played in 10 back-to-back sets this season.
"It just means that I've been around for a long time, been fortunate, some injuries, only missed a few games here and there every season," said Nowitzki, who scored 13 points.
Mavericks: Veteran guard J.J. Barea was inactive due to a left rib muscle strain. Forwards Nerlens Noel and Harrison Barnes were held out to rest.
Nets: Guard Allen Crabbe (illness) was ruled out. He was replaced in the starting five by reserve Joe Harris. … Have eclipsed 30 points in the first quarter of their last three games. … F Dante Cunningham was held out due to a concussion he suffered Friday night in Philadelphia.
Mavericks: Close out their four-game trip at New Orleans on Tuesday.
Nets: Host Memphis on Monday.


text:
Former chairman Carlos Ghosn 'shifted $15million of losses from personal investments onto Nissan'
Disgraced former Nissan chairman Carlos Ghosn has been accused of moving $15 million of personal losses to the car company's accounts.
The former chairman of Nissan and Mitsubishi is alleged to have shifted losses he made on his own investments to his employer in 2008.
His sacking as chairman of Nissan last week was over claims he allegedly swindled large sums of money from the company over several years.
Mitsubishi Motors executives ousted the 64-year-old as chairman yesterday following his arrest for alleged financial misconduct amid suggestions he under-reported his salary by as much as $71 million.
Prosecutors are looking into allegations he conspired with another executive, American Greg Kelly, to understate his income by around $44 million between June 2011 and June 2015.
Former Nissan chairman Carlos Ghosn allegedly moved $15 million of personal losses to the car company's accounts
Mitsubishi Motors Chairman and CEO Osamu Masuko announced yesterday the company was removing Ghosn as chairman
Brazilian-born Ghosn is believed to have had a flat in a Paris suburb bought for him by Nissan and spent £13.3 million ($17.8 million) on homes in Rio de Janeiro and Beirut, it was alleged.
One luxurious £2.7million penthouse apartment of Ghosn's was raided by police after the Nissan chairman was arrested for alleged financial misconduct last Wednesday.
But today it emerged the Securities and Exchange Surveillance Commission (SESC) was aware of Ghosn's alleged derivatives trading misconduct and notified the bank involved in the transaction.
Japanese media reported that Ghosn shifted personal investment losses incurred during the 2008 financial crisis to Nissan to avoid millions of dollars in losses for himself.
The SESC told the Japan Times there is a possibility that he committed an 'aggravated breach of trust' and that he admitted not including part of the total payment he was set to receive when he retires in securities reports.
Nissan took on losses during the global financial crisis in 2008 after Ghosn could not secure adequate collateral, a sources to the Japan Times.
Newspaper Asahi Shimbun said yesterday that authorities are planning to re-arrest Ghosn on charges of understating his income by a further three billion yen – for a total of $71 million – for the following three fiscal years.
It also emerged today Ghosn is suspected of using one of Nissan's business jets for private trips, allegedly travelling aboard one of Nissan's leased planes for personal journeys.
'Huge sums' were said to have been spent on homes for Ghosn in Rio de Janeiro, Beirut, Paris and Amsterdam. He is understood to have a penthouse in this apartment block in Tokyo
Carlos Ghosn is pictured, left, with his first wife, Rita, in 2008 and, right, with his second wife, Carole, in 2017
The jet was set aside for use solely by Ghosn, who flew to countries where the car-maker has no major offices or factories.
But these destinations included Beirut, where Ghosn had a bolt hole, said to have been paid for by the car giant.
This same Gulfstream jet was being used by Ghosn when he touched down in Tokyo from Lebanon yesterday afternoon, where he was met by an elite unit of prosecutors.
A white van pulled up onto the tarmac and a line of investigators from the Tokyo District Public Prosecutors Office in dark suits rushed up the steps to interrogate the businessman.
Chief Executive Hiroto Saikawa, who was known as one of 'Ghosn's children', described at a press conference last night his 'resentment and dismay' at the allegations and lashed out at what he called 'the dark side of the Ghosn era'.
Carlos Ghosn (left) and Mitsubishi Motors Corporation Chairman and CEO Osamu Masuko pictured together in October 2016
Carlos Ghosn, left, speaks as then Mitsubishi Motors Corp. President Osamu Masuko in 2014
The future of the 19-year alliance, one of the biggest automotive groups in the world, has been thrown into doubt after the arrest and subsequent ousting of Ghosn as chairman of both Nissan and Mitsubishi Motors.
Ghosn is the architect of the alliance and its chairman. He also remains CEO and chairman of Renault.
Senior executives at Mitsubishi Motors Corp said today its alliance with Nissan Motor and Renault SA can survive the management upheaval.
A seven-person Nissan board decided unanimously on Thursday to jettison the once-revered leader 'based on the copious amount and compelling nature of the evidence of misconduct presented', said a company spokesman.
Meanwhile, further claims continued to leak out in the Japanese media of Ghosn's alleged misconduct.
Under Japanese law, suspects can face additional arrest warrants, which can result in heavier penalties. The current allegations could see Ghosn facing 10 years behind bars and/or a 10-million-yen fine.
Separately, Kyodo has reported that Nissan paid $100,000 annually since 2002 to Ghosn's sister for a non-existent 'advisory' role.
And the Mainichi Shimbun reported on Monday that Ghosn used Nissan's corporate money to pay a donation to his daughter's university and also charged family trips to the company.
Both Ghosn and Kelly have reportedly denied the allegations.
Mitsubishi Motors Corp. Chairman Osamu Masuko reveals the decision to dismissed Carlos Ghosn as chairman on Monday
The firm's CEO Osamu Masuko told reporters it was 'heartbreaking' to propose ousting Ghosn but in the end it was a unanimous decision.
The 64-year-old Brazil-born Ghosn rode to Mitsubishi Motors' rescue in 2016 when the firm was battered by a fuel efficiency cheating scandal, tying it to his Nissan-Renault alliance and turning its fortunes around.
Together, the three-way alliance is the world's top-selling car group, with some 10.6 million vehicles rolling off the production line. It employs around 450,000 people worldwide.
But the future of the tie-up is now uncertain as the talismanic Ghosn was seen as the glue binding together a fractious Franco-Japanese alliance with headquarters 10,000 kilometres (6,000 miles) apart.
'We (have) had two years of the alliance and there were positive parts… and parts that needed to be revised a little from Mitsubishi Motors' point of view,' said Masuko.
A seven-person Nissan board, the parent company of Mitsubishi, decided unanimously on Thursday to jettison the once-revered leader
Nissan's current CEO Hiroto Saikawa told staff on Monday he was 'shocked' at his former mentor's alleged misconduct.
At a 45-minute meeting attended by hundreds of staff at the firm's Yokohama HQ and broadcast internally to other sites, Saikawa stressed that the scandal should not affect day-to-day operations.
Saikawa, who rose through the Nissan ranks under Ghosn's wing, has already spoken of his 'great resentment and dismay' at the allegations.
According to Japanese media, Nissan formed a 'secret' cell within the firm to look into the alleged financial misdeeds.
Executives accelerated the probe amid concerns Ghosn was working on a fully fledged merger between Nissan and Renault, Kyodo News said without naming its sources.
The 64-year-old Brazil-born Ghosn rode to Mitsubishi Motors' rescue in 2016 when the firm was battered by a fuel efficiency cheating scandal
Renault is the dominant partner in the alliance, holding 43 percent of the shares in Nissan, but the Japanese firm outsells its French counterpart – sparking concern in Tokyo about the balance of power.
Renault, which is 15-percent owned by the French state, has decided to stick by Ghosn for now, appointing Thierry Bollore as interim boss while the current CEO and chairman is 'incapacitated'.
France's economy minister Bruno Le Maire has urged the Japanese firm to share 'quickly' whatever evidence it has gathered and stressed Ghosn will stay at the helm of Renault 'until there are tangible charges.'
However, Le Maire has said he did not believe in a 'conspiracy theory' amid talk of a so-called 'palace coup' within Nissan to prevent Ghosn merging the firm with Renault.
The difficulty now will be to find a replacement to lead the three-way alliance, whose statutes require Renault to appoint the CEO and Nissan to choose the deputy.
A source close to the case in Paris told AFP: 'The reality is that they are already looking for a replacement. Not to do so would be irresponsible. It needs to be someone palatable to the Japanese and the French.'
Investors appeared to be recovering from the initial shock of the arrest, which sent shares in all three firms tumbling.
At the Tokyo close, Nissan was up nearly two percent and Mitsubishi Motors enjoyed an even sharper bump – up more than three percent just ahead of the board meeting.
Jurgen Klopp wants Simon Mignolet to stay at Liverpool
The Financial Benefits Of Consolidating Your Debt Into One


Layer yourself in seduction and femininity with the warm and velvety qualities of Narcisco Rodriquez's For Her Eau de Parfum hair mist.
A new way to wear Narcisco Rodriguez, For Her Eau de Parfum hair mist is a fragrance featuring musc is its heart. Expressing itself through three pulsations; pink floral, soft amber, and voluptuous woods, the scent develops gently, slowly rounding out into warm tones, dusted in a soft, velvety sensuality.
For Her Hair Mist is rated 5.0 out of 5 by 2.
Rated 5 out of 5 by deema from love it cant get over the smell, very nice i love it and i lasts a long time I will definitely buy another one later.