text:
GE 223: How OutSystems Went from Racking Up Sales by Going Door-to-Door to Hitting $100M in Sales (podcast) With Paulo Rosado
Hey, everyone! In today's episode I share the mic with Paulo Rosado, CEO of OutSystems, a low-code platform that lets you develop applications.
Tune in to discover how Paulo helped grow a struggling business into a company with 800 enterprise customers in 43 countries, what the big break was that increased their sales by 60% last year, and the strategies that have placed this enterprise player firmly on the path of high growth.
Download podcast transcript [PDF] here: How OutSystems Went from Racking Up Sales by Going Door-to-Door to Doing $100M in Sales Last Year TRANSCRIPT
00:33 – Please leave us a review and subscribe to the Growth Everywhere Podcast
00:52 – Eric introduces Paulo Rosado
01:18 – OutSystems started as a cloud-based, development platform to address the issues of speed, productivity and software change
01:53 – Compress by 4x the time it takes to provide apps; subsequently, reduces size of teams by 3-4x
02:19 – Analyzing the various use cases and benefits
2:19 – Logitech uses OutSystems for their portal, to manage their supply chain and for their dashboard
3:12 – Vopak, a Dutch company managing 80+ oil and gas terminals, also uses OutSystems
3:26 – A typical system that runs on Java or .Net would take 3 to 4 years; using OutSystems compresses this time to just 7 months
03:52 – Pricing and savings
3:52 – Makes money by renting the platform on cloud; non-premise offer for bigger companies who want to deploy their own cloud
04:10 – Pricing depends on the number of applications and the size of applications
04:41 – Pricing starts at $25K per year and can go up to $1 million per year; millions of dollars in savings due to implementation of larger systems
05:04 – Has 800 enterprise customers spread across 43 countries
05:16 – Sales grew 60% last year; hit $100 million in sales!
05:40 – Paulo talks about their long struggle before they gained traction
05:40 – Selling to enterprise clients is more complex; the fact that they were 11-13 years ahead of the market made the initial years more painful
06:15 – Initially, prospects believed that their product was "too good to be true"; had to water down productivity numbers
06:34 – Started in Europe and then moved to the U.S.; it was a mistake to concentrate on multiple regions in its initial years
07:19 – Racked up sales in the initial years by going door-to-door
07:33 – Introduced the concept of Devops (Development and Operations) in 2001; this concept has become popular only in the last 7 or 8 years
08:20 – Has gained traction since the last 3 years; took 13 long years to get there
08:46 – Paulo attributes their success to their patient European investor—European investors are typically more patient than American investors
09:18 – Since they started in 2001, just before the burst of the economic bubble, they had to sell web applications since people were not in the mood to switch to a cloud-based solution
09:41 – Rode the mobile wave that gripped enterprise clients; digital transformation entailed that all portals had to work on smartphones and tablets
10:20 – Mobile applications needed systems with extreme productivity, fast change and continuous integrations; traits that OutSystems was already known for
11:02 – Agile methods are the norm even in big organizations today; OutSystems works very well in an agile environment
11:37 – Got a lucky break when they managed to secure $1 million in funding in October 2001, a month before 9/11; funding dried up for 2 years after this
12:12 – Started off in 2001 by taking on telecom players as customers as well as partners; telecom pipeline dried up by 2002 leaving them no sales
12:42 – Had to switch back to enterprise which took 6 months; took a while to get back into the black
13:16 – Nuances of making an enterprise sale
13:16 – A sophisticated, transformational sale; a free version is available onsite where prospects can avail thousands of free trials
13:52 – 70% of sales are through partners who want to use OutSystems to build their own application; in the process, they end up pushing their product
14:07 – What's one big change that you have made in the last year that has impacted you? – Learned to delegate
15:50 – Manages to hire great people because they have removed the restriction of location; created processes around aligning people to a single, consistent culture
16:33 – Promotes culture through an organization booklet, "The small book of the few big rules"
17:09 – What's one new tool that you've added in the last year that's added a lot of value? – The iPad Pro with pencil and Evernote with Penultimate
18:36 – What's one must-read book you recommend to everyone? – The Culture Map: Breaking Through the Invisible Boundaries of Global Business
20:46 – Connect with Paulo via email
21:01 – Head to our website to access today's show notes
Any new, innovative technology that is ahead of the market will face the problem of being "too good to be true"; be prepared to wait it out, as you WILL gain traction.
Agile methods are the norm in small and big organizations alike; switching to mobile has necessitated the need for platforms to permit quick changes, faster productivity and continuous integration.
Making an enterprise sale is much more complex than a consumer sale; offer free trials, and PUSH your product in the process.
Evernote with Penultimate
Must-read book: The Culture Map: Breaking Through the Invisible Boundaries of Global Business by Erin Meyer
Paulo's e-mail
What should I talk about next? Who should I interview? Please let me know on Twitter or in the comments below.
Did you enjoy this episode? If so, leave a short review here.
Subscribe to Growth Everywhere on iTunes.
Brad Feld: The 3% rule is I only want 3% but I really want the 3% that I want. So one of the books that Amy and I wrote together, it's called Startup Life: Surviving and Thriving in a Relationship with an Entrepreneur. And we co-wrote it, it's not auto-biographical, but it has a fair amount of story-telling from us, and one of the stories was this 3% rule, which is basically Amy gets her way 97% of the time. She knows really clearly what 3% are important to me, and they tend to be things like I don't care at all about our furniture, so whatever furniture we have, we have. And she likes design and she likes furniture so she spends a lot of time on it, but it's super important to me that I have a couch that is long enough for me to lay down on after I go for a run when I'm sweaty. So, it has to be made out of a material that she doesn't care that I lay down on it after I get back from a run. That would be an example.
And, one of the neat things about that notion is ... another thing that we use and that is this idea of the Magic 8 Ball rule. And a lot of people know about Magic 8 Balls, remember the Magic 8 Ball where it says, you know, you shake and it says Yes, No, Maybe and then it has a couple other clever sayings. The vast majority of the 97%, I don't care what the answer is, I don't care what she wants to do. And many times she's doing things that benefit both of us, but I'm indifferent, I'm happy with whatever it is, I'm happy with what she wears tonight, I'm happy with what she bought, I'm happy with what car she drives, I'm happy with a whole bunch of things.
But, if she asks a question like, "Do you like these shoes or these shoes?" If I say, "I don't care," that's a bad answer. So, we use the Magic 8 Ball rule, which is I give her an answer, but we have to use the Magic 8 Ball rule like the Golden Retriever Rule. So, the Magic 8 Ball rule is I just basically say Yes, No, or Maybe, and I don't care what she does. Like, I say, "I like pair number two better." If she chooses pair number one, totally fine, but I have to say it with Golden Retriever eyes. And anybody that has a dog knows what those eyes are. It's the look the dog makes-
Eric Siu: The loving, caring eyes.
Brad Feld: Loving ... unconditional love, like you're holding a piece of hamburger in your hand and so you have to say Yes, No or Maybe with that look while you're giving your partner the Golden Retriever eyes. [crosstalk 00:04:37]
Eric Siu: So how does she feel when you're using these roles on her?
Brad Feld: Well, she made them up, so she's very happy with them. No, we made them up together. They're a good source of amusement for both of us because when she's asking me whether I like pair of shoes A or pair of shoes B, she's just looking for connection with me, she's not looking for my opinion on what shoes I like better. What she's basically saying is, "Hey, I'm making a decision, pay attention to me," or, "Will you talk to me instead of whatever you're doing." It's like a gentler way of saying, "Hey, pay attention!" And over a long period of time, you learn these little cues from each other as partners, and one of the things that I think we've worked hard at as a couple is having those cues be positive cues, and I think many couples that have been together for a long time ... you think about couples who bicker all the time or it's very predictable the negative dynamics that your parents are gonna be in after they've been together for a long time. What they're doing is they're letting all those cues be negative cues instead of positive ones.
Eric Siu: Right. You know what's interesting, it seems like you've been very deliberate about relationships, about who you invest in, and everything that you do in life in general, so I wonder if there's a story behind that?
Brad Feld: Well, I believe that we get one shot. I'd love to believe that I get reincarnated thousands of times, but I'm operating under this condition that that doesn't happen. I also believe that there's infinite numbers of parallel universes, and I happen to be stuck in this one versus some other one, so I just want to make the best of it. And I know that in the context of life, many, many things are difficult, right? I have a long time family friend whose son got cancer in his early 20's and died. The friend is a very successful CEO said, "Life is a fatal disease." There's a chemistry joke, which is, "Life is a process of continuous oxidation," but it's the same idea, like it has an end.
So, for me, I've learned over time, having made lots of mistakes along the way, that I want to spend as much of my time as possible with people that I'm interested in spending time with, that I want to be with. I know that many of those relationships are gonna have ups and downs, I'm gonna screw up, other people are gonna screw up, I'm gonna do things that disappoint people, I'm gonna make mistakes, there's gonna be things that are exogenous to me that go wrong, that I have to deal with, and that's just part of the experience of life, so why not try to set yourself up for as much positive joy, happiness as you can, against the backdrop of what is this very, very complicated and often very unsatisfying and unfriendly and unfun world?
Eric Siu: I love it. Yeah. And I think all of this starts to connect towards your work with the startup world and just investing in general. So, just so everyone gets a refresher on maybe kind of who you are, can you talk a little bit about companies that you've invested in and then lead that up to your Startup Opportunities?
Brad Feld: Sure. So, Foundry has been around since 2007. I've actually been investing since 1994, I sold my first company in 1993. I made 40 angel investments in the next three years with most of the money that I made from that sale. A company that many people will have heard of that I invested in from that time period, was a company called Harmonix, which made the games Guitar Hero and Rock Band, as well as Dance Central. So, a video game company that had huge success. I ended up co-founding a venture firm in 1997 that turned into Mobius Venture Capital. I then, in 2007, co-founded Foundry Group, which is the firm that I'm part of that my partners and I invest from. We've invested ... some companies that people may know, some consumery companies would include Zynga, we were an early investor there, so if you played way too much Mafia Wars or FarmVille, it's our fault. Or Words with Friends or KeepGoing ... I wouldn't say it's totally our fault, it's partially our fault. We were early investors in Fitbit, which just came out with a new product that I'm anxiously looking forward to getting. We're investors in a company called Sphero-
Eric Siu: Oh yeah, we had them.
Brad Feld: Okay, so BB-8, which was the product that they came out with two years ago around the Star Wars VII, on the movie that just came out, that's coming out in December, they just ... Force Friday's tomorrow. Sphero just announced two more robots, an R2-D2 and a BB-9E robot, which is the evil droid. And another company people may know a little bit also came out with something for a Star Wars product called the Droid Kit, so you can actually assemble droids [inaudible 00:09:21]. And then we've invested in a bunch of enterprise software companies, as well as some hardware related companies. MakerBot, which was one of the early 3D player companies is an investment of ours. So, that's the kind of stuff we do.
Eric Siu: So before we even talk about the book, one thing I want to touch upon ... So, you said you sold your company in '93 and then you basically took all of your money and started investing it?
Brad Feld: Yeah. I made a couple million bucks from the sale. Amy and I moved from Boston to Boulder in 1995 and we spent some of the money and bought a house, and I promised her that we'd never have less than $100,000 in the bank.
Eric Siu: Oh, the rest was all in.
Brad Feld: And I actually had to tell her, I remember very vividly having to tell her that we were under $100,000 cause I'd made an investment that put us under $100,000. But, yeah, yeah, I took ... basically, I made 40 investments, $25,000 and $50,000 at a time, and by 1996 there were starting to be some exits, so the money came back pretty quickly in '96, '97, '98 because it was a particularly good time to be investing in early stage tech companies. And that angel investing activity ended up being very, very successful for me. But from a personal perspective, I was 28 when I sold my first company and my view was if I invested all the money and it all went to zero, my worst case was that I'd just keep starting companies.
Eric Siu: Love it.
Brad Feld: I really wasn't terribly concerned with the specific outcome. The general outcome I cared about, I mean, I didn't want to lose all the money, but I was much more enthusiastic about this idea of learning how to be a good investor, investing quickly, getting involved in lots and lots of things that were new to me.
Eric Siu: Got it. Alright, well, I guess this all leads up to Startup Opportunities. You've worked with a lot of startups, you've invested in a ton, you've started your own, so what is Startup Opportunities about?
Brad Feld: Well, I wrote this book with a guy named Sean Wise, who's a professor at Ryerson in Canada and also an angel investor, with the idea that there's a lot of books that talk about what to do as you're starting to build up your company. Alright, so you've got an idea, you've locked down on what that ideas gonna be, and now you're essentially running the Lean Startup Drill, or you're doing Lean Launchpad, and these methodologies, by the way, didn't exist in 1994, so Steve Blank and Eric Reese, Bill Aulet from MIT who came up with this idea of disciplined entrepreneurship ... like, these methodologies are really, really powerful, and they're extremely helpful.
But, what would happen is I'd get emails from people who would say, "I'm thinking about doing this new business. What do you think of it?" And I'd say, "It sounds good, read one of these books, they'll help you." And somebody would come back with a note a month or two later, "Hey, I read the book and the books really interesting, but what do you think of the idea?" And the problem was that people were getting locked up in this notion of how important, to them, the idea was. And the idea itself is relatively unimportant, it's what you do with that idea. So, what we tried to do was write a book that didn't replace Eric Reese's Lean Startup, or Steve Blank's work or any of that, but instead was the thing you would read before it.
So, you're thinking about starting a company, you're still working or you're working with a co-founder and coming up with ideas and trying things, but you're really kind of stuck with what to do with that. And how to move from that idea into starting to implement on that idea, because you're struggling with is this idea a good one or not? Our view, and it's one of the very early chapters in the book, Tim Ferriss wrote a great essay that originally was in another book that I wrote that we published here called Trust Me Your Idea Is Stupid. And his assertion was it's not the idea, it's what you do with the idea, it's the execution of the idea. And so we tried to get, very quickly in this book, this notion of opportunity, like, take your idea and you say, "Okay, I'm gonna take this idea and build a business around it, is that a good opportunity to go create? What are the characteristics of what could be a really great business?"
Eric Siu: Love it. Okay, so I'm gonna put these books in chronological order. So, we got Startup Opportunities, that sounds like the book before Lean Startup, right, you're thinking of something. Then you got Lean Startup, and then somebody would go read Startup Life. Does that sound about right?
Brad Feld: Yeah, when you're ... or, read Startup Life early on too, it'll give you a good feeling for the ups and downs of the craziness of trying to create a company.
Eric Siu: Cool, great. Oh, so, Startup Life sounds like it could help with somebody dating an entrepreneur. What else do you cover in that book?
Brad Feld: Well, Startup Life is really a book aimed at both for the entrepreneur and for the partner of an entrepreneur. And it also works if both partners are entrepreneurs, because it really is a journey through the experience as a human being of either being a founder, being an entrepreneur and having an entrepreneur life but trying to, in the context of that, have an effective relationship. Or, at the same time, being in a relationship with an entrepreneur and understanding the pressures and the stresses and the dynamics that the entrepreneur is facing.
Now, an important part of this book when Amy and I wrote it was, we didn't want it to be what we started calling just another relationship book. So, it's not a "Here's Nine Ways to Have a Successful Relationship if You're an Entrepreneur." It also caused us, and the phrase work/life balance is in the book, but by the end of the book, we sort of got to this place where work/life balance is not the thing you're aspiring for. I actually don't like the word balance anymore, because balance has this implication that the scales of justice are in balance. And anybody who's an entrepreneur knows that nothing's in balance, it's just a complete freak show almost all the time, right? You're kind of hanging on by your fingernails just to have everything work. And so we shifted this idea from work/life balance to work/life harmony-
Eric Siu: Oh that was you that wrote that, I knew it.
Brad Feld: Yeah, it's more like improve jazz, right? Some days it's over here, some days it's over there, you start playing a different tune and if your partner plays along and it makes beautiful music that's great, and if it's totally discordant, hey, that's still okay because that could be interesting, you learn something from it. And this idea that there's so much complexity in it, we try to give people a sense that even with relationships like ours that are working really well, there are some moments where they're really not.
And we lead the book off, it's an essay that we liked and I'll give one more example in a sec, but an essay that we liked where ... the story of us almost breaking up. So Amy actually, in this opening essay, said to me after a whole series of things, I'll leave the preamble out, we're getting ready for bed, we're getting into bed and she says, kind of under her breath, "I'm done," and it was a Friday night and I kind of thought, you know, I said, "Yeah, a long week, I'm really tired, I'm looking forward to spending the weekend with you," and she turned to me, and she says, "You know what, I mean that I'm done, I don't want to have this relationship anymore. You're not even a good roommate anymore." And she said, "I love you, I think you're awesome, but this relationship isn't working." And that generated a long conversation for an hour because I believe you should never go to sleep ... if you go to bed with your partner and one of you is angry at the other, you should never call it quits, you should talk til you actually at least say, "I'm okay, let's talk some more tomorrow."
And as part of that, I then over the course of the weekend, I gave her my phone and my computer and we spent the whole weekend together and made a bunch of rules. And at first, she says, "I don't want to make rules, that's not romantic, I just want you to be more something else." I said, "Look, I'm an engineer, what we're doing isn't working so give me some rules. And don't think about it as rules, think about it as you're controlling me." And she said, "Oh that's interesting, I like that."
The very first thing she said to me was, "Alright, I want you to start tracking how much time you work each day and I want you to report that to me at the end of the week." And she knew this was a big red button in the middle of my forehead because in my first company we tracked every ... in five minute intervals all the time working, because we billed by the hour. And I said, "I don't want to do that, that sucks, I hate that, you know that that's not ... " She's like, "Hey, hey, I get to make the rules." And I'm like, "You know what? You're right. Fuck it, I'll keep track of my time."
Another story that we tell early on, just to give people a flavor for the book is that we believe only one partner can have a crisis at a time. So, if you want to have an effective relationship, especially in a world where one of the partners is an entrepreneur, only one can be having a crisis at the time, and that can't always be the entrepreneur. And, you think about a relationship that you're in where your partner melts down ... if you both melt down at the same time, it's a disaster, but if one of you melts down and the other doesn't, you can get back to a good place. You can support that person, and if the melt down moves back and forth and you're sort of out of sync in terms of that cadence, I'm doing fine, you're melting down. You're doing fine, I'm melting down, you'll get through kind of anything.
Eric Siu: Got it. Yeah. You know what, we could talk about this stuff forever and I know we're limited on time so I'm gonna make these last couple of minutes more efficient, or as efficient as possible. So, the Startup Life, part of being an entrepreneur, I hear about people who you read about Tim Ferriss talking about depression, you've talked about it before in the past, and I'm naïve, I don't really know what that feels like, so can you talk about that? What did you have to deal with, and how do you deal with it?
Brad Feld: So, depression feels different for everyone, and the best way for me to describe how it impacts me is it's the complete and total absence of color. Everything in my world just loses color, and it's not even that ... I still have black and white and gray, everything's just sort of this bland. That's the color, it's just bland.
For me, I've also learned over time that I can't just get out of a depressive episode, it eventually just goes away and I feel better. There's lots of things I can do in terms of self-care when I'm having a depressive episode, but one of the things that is important to realize if you have never felt depression, or you don't know what depression is because you haven't felt it, is that there isn't a single feeling. There are lots of different things that happen, and I like to lead people into it easily ... most people, most everybody has had moments of anxiety, and you have anxiety about different things. You're anxious about positive and negative things, you're anxious about a health issue, you're anxious about getting a client, you're anxious about taking a test, you're anxious about going out on a date, you're anxious as you're waiting for somebody to call you back or something. Imagine that anxiety level continuing to increase to a point where it's almost debilitating and where you're just incredibly uncomfortable because of the increase in anxiety, and that's one of the things that I struggle with, is I have what I would call anxiety spikes, but they'd be inappropriate anxiety spikes, so it's extreme anxiety that's disproportionate so the specific thing that's going on.
Like, a life or death like feeling of anxiety when I'm just having trouble making coffee, and it's usually because of other issues, right, it's not the specific thing that's going on that's causing the anxiety spike. And for me, personally, eventually, if there's too much of that activity it tips into, or it can tip into a depressive episode, and there's a bunch of other stuff wrapped up in that. One of the things that is the hardest thing for somebody that's struggling with depression to hear from somebody else is, "You'll be okay, it'll be alright, just get over it," because it's almost the complete understanding that the other person doesn't realize what you're struggling with. And, anyway, the loneliness of being depressed is part of the hard thing in it, you're in this place where nothing feels good, whatever your definition of good is, and some people are worried they're going to feel this way forever, and that's an incredibly difficult place to be.
Eric Siu: So how do you deal with it?
Brad Feld: Well, for me, and I've had a number of major depressive episodes, I used to talk about that I had three over the years, and I kinda realize that I probably had a two to eight week depressive episode pretty much every winter between October, November, December, and I used to just explain it as I don't like Christmas and I don't like the holidays and I'm a cranky Jewish kid, and I didn't have Christmas as a kid. But I was probably just exhausted, and I'd have this boom or bust where I'd get really exhausted from the intensity of the year and I just wasn't taking care of myself.
And what ended up happening is now I reflect on it, I focus primarily when I'm starting to feel depressed or tired, which, for me, a lot of times can lead to depression, I really focus On self-care. I do things very systematically that are better for me. I create time for myself, I do the things that I know that are good for me physiologically. I only drink one cup of coffee a day versus a bunch of coffee, so I cut back on caffeine. I don't drink alcohol. Alcohol's bad for me. Like, I don't have an alcohol problem, but it has a very big effect on my moods, even a glass of wine, so I just don't drink.
I used to be the guy that woke up at 5:00 in the morning, no matter where I am, with an alarm clock, every morning, no matter how much sleep I got. Now, I wake up when I wake up, I don't use an alarm clock anymore. I do a thing that Amy and I call digital sabbath, so from Friday night sundown to Saturday night sundown, no phone, no email, just disconnect and I have a life without phones and email. And that doesn't mean I don't do work, sometimes on Saturday's I'll do some work that doesn't require a phone and email. I'm a big runner and I often find that when I'm running less it has a pretty negative impact on how I feel in some kind. Even if I'm tired, I put the energy into making sure I have time and space for that for myself, because I need it. So, I come back to this phrase that I like to use now called self-care, which is different for everyone, but you have to discover it yourself.
Eric Siu: Love it. Okay, so, I have three rapid fire questions for you, you could probably answer them all in one word. So, first off, you strike me as a really efficient person, so what's one habit you can share with everyone, what's something unique that you do every day?
Brad Feld: Throw everything away. I don't keep any paper. I don't keep any emails, I archive everything. My inbox is empty all the time. If I have things that I need to do, I put them on a to-do list. I don't have drawers in my desk because drawers are basically places things go to die, folders are places things go to die. So, I just try to process everything and if I have something I need to work on longer, I make sure it's in a place where I systematically go back to it.
Eric Siu: I'm gonna steal that. Okay. What's one new tool that you've added in the last year that's added a lot of value to your life. Could be Evernote, could be a Fitbit.
Brad Feld: In the last year, probably Todoist, which I think I've done lots of different ways of managing, I have a very short to-do list and sort of manage through things. Again, I don't keep anything, so Evernote is a good place for me to send stuff to never see it again. It's not particularly helpful for me cause I don't keep notes like that. But Todoist has been really helpful because of the integration with GMail, it allows me to have a very tight to-do list, and it's also shareable so I can share individual things with other people without very much overhead.
Eric Siu: That's funny, how do you say that?
Brad Feld: T-O-D-O-I-S-T. And there's 97 different to-do lists, but it's the one I found that I like the best.
Eric Siu: Cool, we'll drop that in the show notes. Final question for you. What's one must-read book, aside from your own books, that you'd recommend to everyone?
Brad Feld: I think every entrepreneur or aspiring entrepreneur should read the book Zen and the Art of Motorcycle Maintenance. It was written in the 1970s by a guy named Robert Pirsig, P-I-R-S-I-G. It was his first book, it's kind of a hippie philosophy treatised journey. The word that sort of came out of it was chautauqua, he's like having a conversation with his son as they do a motorcycle trip across the country, and it's just this incredible treatise on philosophy, product, quality, accomplishing what your goal is, against the backdrop of the narrator, the author, going crazy and having a psychotic break. And so it's this very powerful mix of accessible philosophy, combined with this pretty captivating journey in a book that, again, anybody who builds anything, there's so much in it that's so worth reading and just soaking in, but it's not what you'd expect, it's not a here's how you do it, you have to read it slowly and think about it. So, it's one of my favorites.
Eric Siu: Love it. Well Brad, this has been incredible. What's the best way for our people to find you online?
Brad Feld: Email, [email protected], my Twitter's @BFeld, although President Trump ruined Twitter for me, so now I broadcast on Twitter but I rarely because it's just too toxic. And my blog, at Feld.com
Eric Siu: Great. Brad, thanks so much for doing this.
Brad Feld: Hey, my pleasure.
Speaker 2: Thanks for listening to this episode of Growth Everywhere. If you loved what you heard, be sure to head back to GrowthEverywhere.com for today's show notes and a ton of additional resources. But before you go, hit the subscribe button to avoid missing out on next weeks value packed interview. Enjoy the rest of your week, and remember to take action and continue growing.
Paulo Rosado OutSystems
GE 222: Brad Feld Shares the Struggles of Building a Startup without Compromising Your Personal Well-Being (podcast)
GE 225: Why David Henzel Sold His Business for $10M+ and Started a Podcast Called 'Managing Happiness' (podcast)
GE 178: How Adam Callinan Grew BottleKeeper to an 8-Figure Revenue with 0 Employees in 3.5 Years (podcast) Adam Callinan BottleKeeper
LU 336: How This SaaS Company Reversed-Engineered Themselves Into the Market (podcast) Nicolas Vandenberghe Chili Piper
GE 191: How RD Station Continues to Double Its Growth Rate Each Year (After Raising $19M) André Siqueira RD Station
GE 151: How Data Driven Marketing Can Provide Real-Time Insights 130x Faster (podcast) Nadim Hossain BrightFunnel
GE 313: How Matt Barrie Slowly & Steadily Grew Freelancer to $50M in Revenue and 35M Users Worldwide (podcast) Matt Barrie Freelancer
GE 315: How Four Sigmatic Makes 8 Figures Off of Healing Mushrooms (podcast) Tero Isokauppila Four Sigmatic
GE 301: How Former Apple Employee Guy Kawasaki Passed the 'Steve Jobs' Test and Later Became Chief Evangelist of Canva (podcast) Guy Kawasaki Canva
GE 174: SEO Expert Glen Allsopp Talks About How Your Brand Can Still Win at SEO Today (podcast) Glen Allsopp ViperChill
GE 228: How Dennis Fong Transitioned from Professional Gamer (Sponsored by Microsoft) to Business Owner with 10M+ Users (podcast) Dennis Fong Plays.tv
GE 134: How Former Amazon Employee Jörg Kundrath Made $4M Last Year Selling Only on Amazon [podcast] Jörg Kundrath Kavaj
GE 235: How Aaron Bird Turned Bizible into the Industry Leader in B2B Marketing Attribution (podcast) Aaron Bird Bizible
GE 161: How Content Marketing as a Growth Channel Propelled BuildFire into a 7-Figure ARR SaaS Company (podcast) Ian Blair BuildFire


I'm so glad they had the perfect pair of wooden shoes to match my dress!
After traveling for about nine days in Iceland my bones were cold and my mind was overwhelmed. It hadn't quite sunk in yet that our lives were more than a quick two-week vacation but now a full-time adventure. The pace in Iceland, moving from place to place every night was exhausting but I will affirm made me an expert packer! We saw so many lovely things in Iceland but it was time to relax and sit still, even if only for a week in Amsterdam. We rented a perfect little apartment just outside of the heart of the city. It was a quiet yet still bustling street and we had access to a lovely balcony overlooking the neighborhood. I loved the freedom of waking up sluggishly in the mornings and enjoying a cup of coffee in our first semi-permanent little home.
First bite of a stroopwafel at the local market. Warm, gooey, and delicious. I only needed one during my stay though!
Tulips in the park. My absolute favorite flower in the whole world... at least as far as I know. Maybe I'll discover a new flower on this journey.
It was so funny to me that we had heard from everyone how crazy and party-filled Amsterdam is yet this is where I found a great sense of rest and reprieve. Just as Vegas many times served as a strangely relaxing place for Brent and I, where we could draw the heavy curtains and fall into a heavy undisturbed sleep each night, we did the same here. With no pressure to wake early because everything stays open most all day and all night it allows for a very open schedule; it was this same rhythm that had offered me peace in Vegas that Amsterdam fulfilled my great need.
Not to say we didn't have a few fun nights here as well though. Of course we strolled through the red light district, which also similar to Vegas felt very touristy and like a sort of street-side burlesque show. We walked through the areas with "coffeeshops" which are the pot bars, not to be confused with "koffee shops," which serve actual coffee. We meandered through all the touristy and lovely sights that the city had to offer as well, including the Van Gogh museum.
Proudly wearing my dad's "U.S.S. Narwal" Navy shirt. It's has the most wonderful worn holes in it and is the most comfiest shirt; makes me feel wrapped in one of his great hugs.
Oh wait.. is that homemade caramel and chocolate sauce.. why yes, yest it is! Doh... realizing Brent snapped a photo of my deep affection for this confection!
Unable to hide from his probing camera. Hmpf.
The city itself offered some truly fantastic architecture. I'm not sure I will ever see another city like this! It was a distinctive mixture of modern and medieval. Much of the town had been destroyed during WWII and so many parts of the city were rebuilt in a completely new style. We were in the city on May 14th, which was the anniversary of the bombing of the city back in 1940. It was a strange feeling of celebration and sadness; at least that's how I felt as we walked amongst the town seeing the planned activities commemorating this day.
The room we stayed in was one of the most fun places ever! The husband is an artist (you can see his art at Marindejong.com). The house mirrored the eccentricity I felt was part of this great city and with permission, I took photos of one of the most charming places I think we may stay in.
As the life of a nomad goes it was once again time for us to move on.
Holland was very good to us, even if it was still a bit chilly for our taste. My only regret his missing seeing the great tulip fields and gardens and Kukenhoff. But if this is my only loss then I'm certain it has been a great start!
What a wonderful adventure you 2 are having! Love you sweet girl and be safe!
Glad to see you two are enjoying life. Sarge and I just had a baby girl and our life has changed. So we're living vicariously through your adventures. Be safe, and continue to smile! Glad you two are doing this. Symantec is still the same. Not missing much.
Jenny- Hi! Thank you for the kind words. I'll try to keep the blog more up-to-date so you can "feel it" more real time. Ha!
How exciting to hear about the addition to your new family, congratulations!


text:
Pantami Applauds FG Support On Digital Economy
… As President Targets Positioning Nigeria As Digital Talent Hub
President Muhammadu Buhari has disclosed that through the Executive Bill that was initiated by the Minister of Communications and Digital Economy, Prof. Isa Ali Pantami, the federal government aims to make Nigeria a global hub for digital talent. It was an executive bill that was."
President Buhari, who spoke in Abuja on Tuesday at the commissioning of the National Shared Services Centre, a one-stop-shop for Ministries, Departments and Agencies to (MDAs) to interface with citizens, which also houses a Cyber Security Operations Centre, Network Centre and Call Centre, noted that the federal government has further partnered with leading global ICT companies to train Nigerians in cutting edge and high demand digital skills, in a bid to achieve its aim.
"This includes the training of five million Nigerians as part of a partnership with Microsoft Corporation. It also includes the training of an additional one million Nigerians in skills in areas such as block chain technologies, cyber security and data analytics, among others," he stated.
He commended the giant strides made by the digital economy sector under the Minister of Communications and Digital Economy and other stakeholders, describing it as impressive.
While noting that the Information and Communication Technology Sector (ICT) had accelerated diversification of the economy, the president said the National Shared Services Centre will provide services that are swift, secure and seamless,
In his remark, Pantami appreciated the President for his support for the digital economy, pointing to the fact that the economy had witnessed turnovers in broadband/Internet penetration, skills acquisition for global competitiveness and infrastructure development, like the fiber optic cable, which was about 15,000kms in 2015, and increased to more than 60,000kms.
Pantami said there had been 2,255 interventions and programmes in the higher institutions of learning, secondary schools, and some private schools, and the quarterly revenue from ICT rose from N51 billion to N418 billion.
He added that some prominent institutions like the Massachusetts Institute of Technology, U.S., had shown interest in researching the pace of growth in the sector.
The minister listed many policy interventions that had directly impacted on governance, institutions, markets and citizens, assuring that the ICT would enhance the process of diversifying the economy.
Also speaking at the event, the Managing Director/Chief Executive Officer of Galaxy Backbone, Prof. Muhammed Abubakar said 400 MDAs Agencies were already connected to the National Shared Services Centre.
At the close of the event, two young Nigerians, Kalim Haruna, who developed a system called "Sharp-Sharp'' and Bashir Abubakar, founder of "Africa First'', were honoured by the president for their creativity and ingenuity, and showcasing the nation's talent in a global ICT conference.

redpajama_set_name: RedPajamaCommonCrawl


who will be responsible for establishing and maintaining a local OHS policies, guidelines and procedures. Who will also champion occupational health and safety covering the whole factory.
• Provide OHS advice and guidance to the employees to ensure compliance with Group OHS policy and local legal requirements.
• Ensure all OHS incidents are investigated and reported to Corporate OHS and local authorities as required.
• Maintain a record of accidents and incidents and monitor completion of follow up actions.
• Coordinate the factory related work of external safety consultant.
If you want to make a difference within international company that offers attractive employment conditions with global opportunities, send your application through our career site www.tetrapak.com where you can find all our open vacancies.
Please note that we accept only online applications submitted through www.tetrapak.com career site.


text:
describe('scroll when focus line is out of viewport', function () {
  before(function (done) {
    helper.newPad(function(){
      cleanPad(function(){
        forceUseMonospacedFont();
        scrollWhenPlaceCaretInTheLastLineOfViewport();
        createPadWithSeveralLines(function(){
          resizeEditorHeight();
          done();
        });
      });
    });
    this.timeout(20000);
  });

  context('when user presses any arrow keys on a line above the viewport', function(){
    context('and scroll percentage config is set to 0.2 on settings.json', function(){
      var lineCloseOfTopOfPad = 10;
      before(function (done) {
        setScrollPercentageWhenFocusLineIsOutOfViewport(0.2, true);
        scrollEditorToBottomOfPad();

        placeCaretInTheBeginningOfLine(lineCloseOfTopOfPad, function(){ // place caret in the 10th line
          // warning: even pressing right arrow, the caret does not change of position
          // the column where the caret is, it has not importance, only the line
          pressAndReleaseRightArrow();
          done();
        });
      });

      it('keeps the focus line scrolled 20% from the top of the viewport', function (done) {
        // default behavior is to put the line in the top of viewport, but as
        // scrollPercentageWhenFocusLineIsOutOfViewport is set to 0.2, we have an extra 20% of lines scrolled
        // (2 lines, which are the 20% of the 10 that are visible on viewport)
        var firstLineOfViewport = getFirstLineVisibileOfViewport();
        expect(lineCloseOfTopOfPad).to.be(firstLineOfViewport + 2);
        done();
      });
    });
  });

  context('when user presses any arrow keys on a line below the viewport', function(){
    context('and scroll percentage config is set to 0.7 on settings.json', function(){
      var lineCloseToBottomOfPad = 50;
      before(function (done) {
        setScrollPercentageWhenFocusLineIsOutOfViewport(0.7);

        // firstly, scroll to make the lineCloseToBottomOfPad visible. After that, scroll to make it out of viewport
        scrollEditorToTopOfPad();
        placeCaretAtTheEndOfLine(lineCloseToBottomOfPad); // place caret in the 50th line
        setTimeout(function() {
          // warning: even pressing right arrow, the caret does not change of position
          pressAndReleaseLeftArrow();
          done();
        }, 1000);
      });

      it('keeps the focus line scrolled 70% from the bottom of the viewport', function (done) {
        // default behavior is to put the line in the top of viewport, but as
        // scrollPercentageWhenFocusLineIsOutOfViewport is set to 0.7, we have an extra 70% of lines scrolled
        // (7 lines, which are the 70% of the 10 that are visible on viewport)
        var lastLineOfViewport = getLastLineVisibleOfViewport();
        expect(lineCloseToBottomOfPad).to.be(lastLineOfViewport - 7);
        done();
      });
    });
  });

  context('when user presses arrow up on the first line of the viewport', function(){
    context('and percentageToScrollWhenUserPressesArrowUp is set to 0.3', function () {
      var lineOnTopOfViewportWhenThePadIsScrolledDown;
      before(function (done) {
        setPercentageToScrollWhenUserPressesArrowUp(0.3);

        // we need some room to make the scroll up
        scrollEditorToBottomOfPad();
        lineOnTopOfViewportWhenThePadIsScrolledDown = 91;
        placeCaretAtTheEndOfLine(lineOnTopOfViewportWhenThePadIsScrolledDown);
        setTimeout(function() {
          // warning: even pressing up arrow, the caret does not change of position
          pressAndReleaseUpArrow();
          done();
        }, 1000);
      });

      it('keeps the focus line scrolled 30% of the top of the viewport', function (done) {
        // default behavior is to put the line in the top of viewport, but as
        // PercentageToScrollWhenUserPressesArrowUp is set to 0.3, we have an extra 30% of lines scrolled
        // (3 lines, which are the 30% of the 10 that are visible on viewport)
        var firstLineOfViewport = getFirstLineVisibileOfViewport();
        expect(firstLineOfViewport).to.be(lineOnTopOfViewportWhenThePadIsScrolledDown - 3);
        done();
      })
    });
  });

  context('when user edits the last line of viewport', function(){
    context('and scroll percentage config is set to 0 on settings.json', function(){
      var lastLineOfViewportBeforeEnter = 10;
      before(function () {
        // the default value
        resetScrollPercentageWhenFocusLineIsOutOfViewport();

        // make sure the last line on viewport is the 10th one
        scrollEditorToTopOfPad();
        placeCaretAtTheEndOfLine(lastLineOfViewportBeforeEnter);
        pressEnter();
      });

      it('keeps the focus line on the bottom of the viewport', function (done) {
        var lastLineOfViewportAfterEnter = getLastLineVisibleOfViewport();
        expect(lastLineOfViewportAfterEnter).to.be(lastLineOfViewportBeforeEnter + 1);
        done();
      });
    });

    context('and scrollPercentageWhenFocusLineIsOutOfViewport is set to 0.3', function(){ // this value is arbitrary
      var lastLineOfViewportBeforeEnter = 9;
      before(function () {
        setScrollPercentageWhenFocusLineIsOutOfViewport(0.3);

        // make sure the last line on viewport is the 10th one
        scrollEditorToTopOfPad();
        placeCaretAtTheEndOfLine(lastLineOfViewportBeforeEnter);
        pressBackspace();
      });

      it('scrolls 30% of viewport up', function (done) {
        var lastLineOfViewportAfterEnter = getLastLineVisibleOfViewport();
        // default behavior is to scroll one line at the bottom of viewport, but as
        // scrollPercentageWhenFocusLineIsOutOfViewport is set to 0.3, we have an extra 30% of lines scrolled
        // (3 lines, which are the 30% of the 10 that are visible on viewport)
        expect(lastLineOfViewportAfterEnter).to.be(lastLineOfViewportBeforeEnter + 3);
        done();
      });
    });

    context('and it is set to a value that overflow the interval [0, 1]', function(){
      var lastLineOfViewportBeforeEnter = 10;
      before(function(){
        var scrollPercentageWhenFocusLineIsOutOfViewport = 1.5;
        scrollEditorToTopOfPad();
        placeCaretAtTheEndOfLine(lastLineOfViewportBeforeEnter);
        setScrollPercentageWhenFocusLineIsOutOfViewport(scrollPercentageWhenFocusLineIsOutOfViewport);
        pressEnter();
      });

      it('keeps the default behavior of moving the focus line on the bottom of the viewport', function (done) {
        var lastLineOfViewportAfterEnter = getLastLineVisibleOfViewport();
        expect(lastLineOfViewportAfterEnter).to.be(lastLineOfViewportBeforeEnter + 1);
        done();
      });
    });
  });

  context('when user edits a line above the viewport', function(){
    context('and scroll percentage config is set to 0 on settings.json', function(){
      var lineCloseOfTopOfPad = 10;
      before(function () {
        // the default value
        setScrollPercentageWhenFocusLineIsOutOfViewport(0);

        // firstly, scroll to make the lineCloseOfTopOfPad visible. After that, scroll to make it out of viewport
        scrollEditorToTopOfPad();
        placeCaretAtTheEndOfLine(lineCloseOfTopOfPad); // place caret in the 10th line
        scrollEditorToBottomOfPad();
        pressBackspace(); // edit the line where the caret is, which is above the viewport
      });

      it('keeps the focus line on the top of the viewport', function (done) {
        var firstLineOfViewportAfterEnter = getFirstLineVisibileOfViewport();
        expect(firstLineOfViewportAfterEnter).to.be(lineCloseOfTopOfPad);
        done();
      });
    });

    context('and scrollPercentageWhenFocusLineIsOutOfViewport is set to 0.2', function(){ // this value is arbitrary
      var lineCloseToBottomOfPad = 50;
      before(function () {
        // we force the line edited to be above the top of the viewport
        setScrollPercentageWhenFocusLineIsOutOfViewport(0.2, true); // set scroll jump to 20%
        scrollEditorToTopOfPad();
        placeCaretAtTheEndOfLine(lineCloseToBottomOfPad);
        scrollEditorToBottomOfPad();
        pressBackspace(); // edit line
      });

      it('scrolls 20% of viewport down', function (done) {
        // default behavior is to scroll one line at the top of viewport, but as
        // scrollPercentageWhenFocusLineIsOutOfViewport is set to 0.2, we have an extra 20% of lines scrolled
        // (2 lines, which are the 20% of the 10 that are visible on viewport)
        var firstLineVisibileOfViewport = getFirstLineVisibileOfViewport();
        expect(lineCloseToBottomOfPad).to.be(firstLineVisibileOfViewport + 2);
        done();
      });
    });
  });

  context('when user places the caret at the last line visible of viewport', function(){
    var lastLineVisible;
    context('and scroll percentage config is set to 0 on settings.json', function(){
      before(function (done) {
        // reset to the default value
        resetScrollPercentageWhenFocusLineIsOutOfViewport();

        placeCaretInTheBeginningOfLine(0, function(){ // reset caret position
          scrollEditorToTopOfPad();
          lastLineVisible = getLastLineVisibleOfViewport();
          placeCaretInTheBeginningOfLine(lastLineVisible, done); // place caret in the 9th line
        });

      });

      it('does not scroll', function(done){
        setTimeout(function() {
          var lastLineOfViewport = getLastLineVisibleOfViewport();
          var lineDoesNotScroll = lastLineOfViewport === lastLineVisible;
          expect(lineDoesNotScroll).to.be(true);
          done();
        }, 1000);
      });
    });
    context('and scroll percentage config is set to 0.5 on settings.json', function(){
      before(function (done) {
        setScrollPercentageWhenFocusLineIsOutOfViewport(0.5);
        scrollEditorToTopOfPad();
        placeCaretInTheBeginningOfLine(0, function(){ // reset caret position
          // this timeout inside a callback is ugly but it necessary to give time to aceSelectionChange
          // realizes that the selection has been changed
          setTimeout(function() {
            lastLineVisible = getLastLineVisibleOfViewport();
            placeCaretInTheBeginningOfLine(lastLineVisible, done); // place caret in the 9th line
          }, 1000);
        });
      });

      it('scrolls line to 50% of the viewport', function(done){
        helper.waitFor(function(){
          var lastLineOfViewport = getLastLineVisibleOfViewport();
          var lastLinesScrolledFiveLinesUp = lastLineOfViewport - 5 === lastLineVisible;
          return lastLinesScrolledFiveLinesUp;
        }).done(done);
      });
    });
  });

  // This is a special case. When user is selecting a text with arrow down or arrow left we have
  // to keep the last line selected on focus
  context('when the first line selected is out of the viewport and user presses shift arrow down', function(){
    var lastLineOfPad = 99;
    before(function (done) {
      scrollEditorToTopOfPad();

      // make a selection bigger than the viewport height
      var $firstLineOfSelection = getLine(0);
      var $lastLineOfSelection = getLine(lastLineOfPad);
      var lengthOfLastLine = $lastLineOfSelection.text().length;
      helper.selectLines($firstLineOfSelection, $lastLineOfSelection, 0, lengthOfLastLine);

      // place the last line selected on the viewport
      scrollEditorToBottomOfPad();

      // press a key to make the selection goes down
      // although we can't simulate the extending of selection. It's possible to send a key event
      // which is captured on ace2_inner scroll function.
      pressAndReleaseLeftArrow(true);
      done();
    });

    it('keeps the last line selected on focus', function (done) {
      var lastLineOfSelectionIsVisible = isLineOnViewport(lastLineOfPad);
      expect(lastLineOfSelectionIsVisible).to.be(true);
      done();
    });
  });

  // In this scenario we avoid the bouncing scroll. E.g Let's suppose we have a big line that is
  // the size of the viewport, and its top is above the viewport. When user presses '<-', this line
  // will scroll down because the top is out of the viewport. When it scrolls down, the bottom of
  // line gets below the viewport so when user presses '<-' again it scrolls up to make the bottom
  // of line visible. If user presses arrow keys more than one time, the editor will keep scrolling up and down
  context('when the line height is bigger than the scroll amount percentage * viewport height', function(){
    var scrollOfEditorBeforePressKey;
    var BIG_LINE_NUMBER = 0;
    var MIDDLE_OF_BIG_LINE = 51;
    before(function (done) {
      createPadWithALineHigherThanViewportHeight(this, BIG_LINE_NUMBER, function(){
        setScrollPercentageWhenFocusLineIsOutOfViewport(0.5); // set any value to force scroll to outside to viewport
        var $bigLine = getLine(BIG_LINE_NUMBER);

        // each line has about 5 chars, we place the caret in the middle of the line
        helper.selectLines($bigLine, $bigLine, MIDDLE_OF_BIG_LINE, MIDDLE_OF_BIG_LINE);

        scrollEditorToLeaveTopAndBottomOfBigLineOutOfViewport($bigLine);
        scrollOfEditorBeforePressKey = getEditorScroll();

        // press a key to force to scroll
        pressAndReleaseRightArrow();
        done();
      });
    });

    // reset pad to the original text
    after(function (done) {
      this.timeout(5000);
      cleanPad(function(){
        createPadWithSeveralLines(function(){
          resetEditorWidth();
          done();
        });
      });
    });

    // as the editor.line is inside of the viewport, it should not scroll
    it('should not scroll', function (done) {
      var scrollOfEditorAfterPressKey = getEditorScroll();
      expect(scrollOfEditorAfterPressKey).to.be(scrollOfEditorBeforePressKey);
      done();
    });
  });

  // Some plugins, for example the ep_page_view, change the editor dimensions. This plugin, for example,
  // adds padding-top to the ace_outer, which changes the viewport height
  describe('integration with plugins which changes the margin of editor', function(){
    context('when editor dimensions changes', function(){
      before(function () {
        // reset the size of editor. Now we show more than 10 lines as in the other tests
        resetResizeOfEditorHeight();
        scrollEditorToTopOfPad();

        // height of the editor viewport
        var editorHeight = getEditorHeight();

        // add a big padding-top, 50% of the viewport
        var paddingTopOfAceOuter = editorHeight/2;
        var chrome$ = helper.padChrome$;
        var $outerIframe = chrome$('iframe');
        $outerIframe.css('padding-top', paddingTopOfAceOuter);

        // we set a big value to check if the scroll is made
        setScrollPercentageWhenFocusLineIsOutOfViewport(1);
      });

      context('and user places the caret in the last line visible of the pad', function(){
        var lastLineVisible;
        beforeEach(function (done) {
          lastLineVisible = getLastLineVisibleOfViewport();
          placeCaretInTheBeginningOfLine(lastLineVisible, done);
        });

        it('scrolls the line where caret is', function(done){
          helper.waitFor(function(){
            var firstLineVisibileOfViewport = getFirstLineVisibileOfViewport();
            var linesScrolled = firstLineVisibileOfViewport !== 0;
            return linesScrolled;
          }).done(done);
        });
      });
    });
  });

  /* ********************* Helper functions/constants ********************* */
  var TOP_OF_PAGE = 0;
  var BOTTOM_OF_PAGE = 5000; // we use a big value to force the page to be scrolled all the way down
  var LINES_OF_PAD = 100;
  var ENTER = 13;
  var BACKSPACE = 8;
  var LEFT_ARROW = 37;
  var UP_ARROW = 38;
  var RIGHT_ARROW = 39;
  var LINES_ON_VIEWPORT = 10;
  var WIDTH_OF_EDITOR_RESIZED = 100;
  var LONG_TEXT_CHARS = 100;

  var cleanPad = function(callback) {
    var inner$ = helper.padInner$;
    var $padContent = inner$('#innerdocbody');
    $padContent.html('');

    // wait for Etherpad to re-create first line
    helper.waitFor(function(){
      var lineNumber = inner$('div').length;
      return lineNumber === 1;
    }, 2000).done(callback);
  };

  var createPadWithSeveralLines = function(done) {
    var line = 'a
';
    var $firstLine = helper.padInner$('div').first();
    var lines = line.repeat(LINES_OF_PAD); //arbitrary number, we need to create lines that is over the viewport
    $firstLine.html(lines);

    helper.waitFor(function(){
      var linesCreated = helper.padInner$('div').length;
      return linesCreated === LINES_OF_PAD;
    }, 4000).done(done);
  };

  var createPadWithALineHigherThanViewportHeight = function(test, line, done) {
    var viewportHeight = 160; //10 lines * 16px (height of line)
    test.timeout(5000);
    cleanPad(function(){
      // make the editor smaller to make test easier
      // with that width the each line has about 5 chars
      resizeEditorWidth();

      // we create a line with 100 chars, which makes about 20 lines
      setLongTextOnLine(line);
      helper.waitFor(function () {
        var $firstLine = getLine(line);

        var heightOfLine = $firstLine.get(0).getBoundingClientRect().height;
        return heightOfLine >= viewportHeight;
      }, 4000).done(done);
    });
  };

  var setLongTextOnLine = function(line) {
    var $line = getLine(line);
    var longText = 'a'.repeat(LONG_TEXT_CHARS);
    $line.html(longText);
  };

  // resize the editor to make the tests easier
  var resizeEditorHeight = function() {
    var chrome$ = helper.padChrome$;
    chrome$('#editorcontainer').css('height', getSizeOfViewport());
  };

  // this makes about 5 chars per line
  var resizeEditorWidth = function() {
    var chrome$ = helper.padChrome$;
    chrome$('#editorcontainer').css('width', WIDTH_OF_EDITOR_RESIZED);
  };

  var resetResizeOfEditorHeight = function() {
    var chrome$ = helper.padChrome$;
    chrome$('#editorcontainer').css('height', '');
  };

  var resetEditorWidth = function () {
    var chrome$ = helper.padChrome$;
    chrome$('#editorcontainer').css('width', '');
  };

  var getEditorHeight = function() {
    var chrome$ = helper.padChrome$;
    var $editor = chrome$('#editorcontainer');
    var editorHeight = $editor.get(0).clientHeight;
    return editorHeight;
  };

  var getSizeOfViewport = function() {
    return getLinePositionOnViewport(LINES_ON_VIEWPORT) - getLinePositionOnViewport(0);
  };

  var scrollPageTo = function(value) {
    var outer$ = helper.padOuter$;
    var $ace_outer = outer$('#outerdocbody').parent();
    $ace_outer.parent().scrollTop(value);
  };

  var scrollEditorToTopOfPad = function() {
    scrollPageTo(TOP_OF_PAGE);
  };

  var scrollEditorToBottomOfPad = function() {
    scrollPageTo(BOTTOM_OF_PAGE);
  };

  var scrollEditorToLeaveTopAndBottomOfBigLineOutOfViewport = function ($bigLine) {
    var lineHeight = $bigLine.get(0).getBoundingClientRect().height;
    var middleOfLine = lineHeight/2;
    scrollPageTo(middleOfLine);
  };

  var getLine = function(lineNum) {
    var inner$ = helper.padInner$;
    var $line = inner$('div').eq(lineNum);
    return $line;
  };

  var placeCaretAtTheEndOfLine = function(lineNum) {
    var $targetLine = getLine(lineNum);
    var lineLength = $targetLine.text().length;
    helper.selectLines($targetLine, $targetLine, lineLength, lineLength);
  };

  var placeCaretInTheBeginningOfLine = function(lineNum, cb) {
    var $targetLine = getLine(lineNum);
    helper.selectLines($targetLine, $targetLine, 0, 0);
    helper.waitFor(function() {
      var $lineWhereCaretIs = getLineWhereCaretIs();
      return $targetLine.get(0) === $lineWhereCaretIs.get(0);
    }).done(cb);
  };

  var getLineWhereCaretIs = function() {
    var inner$ = helper.padInner$;
    var nodeWhereCaretIs = inner$.document.getSelection().anchorNode;
    var $lineWhereCaretIs = $(nodeWhereCaretIs).closest('div');
    return $lineWhereCaretIs;
  };

  var getFirstLineVisibileOfViewport = function() {
    return _.find(_.range(0, LINES_OF_PAD - 1), isLineOnViewport);
  };

  var getLastLineVisibleOfViewport = function() {
    return _.find(_.range(LINES_OF_PAD - 1, 0, -1), isLineOnViewport);
  };

  var pressKey = function(keyCode, shiftIsPressed){
    var inner$ = helper.padInner$;
    var evtType;
    if(inner$(window)[0].bowser.modernIE){ // if it's IE
      evtType = 'keypress';
    }else{
      evtType = 'keydown';
    }
    var e = inner$.Event(evtType);
    e.shiftKey = shiftIsPressed;
    e.keyCode = keyCode;
    e.which = keyCode; // etherpad listens to 'which'
    inner$('#innerdocbody').trigger(e);
  };

  var releaseKey = function(keyCode){
    var inner$ = helper.padInner$;
    var evtType = 'keyup';
    var e = inner$.Event(evtType);
    e.keyCode = keyCode;
    e.which = keyCode; // etherpad listens to 'which'
    inner$('#innerdocbody').trigger(e);
  };

  var pressEnter = function() {
    pressKey(ENTER);
  };

  var pressBackspace = function() {
    pressKey(BACKSPACE);
  };

  var pressAndReleaseUpArrow = function() {
    pressKey(UP_ARROW);
    releaseKey(UP_ARROW);
  };

  var pressAndReleaseRightArrow = function() {
    pressKey(RIGHT_ARROW);
    releaseKey(RIGHT_ARROW);
  };

  var pressAndReleaseLeftArrow = function(shiftIsPressed) {
    pressKey(LEFT_ARROW, shiftIsPressed);
    releaseKey(LEFT_ARROW);
  };

  var isLineOnViewport = function(lineNumber) {
    // in the function scrollNodeVerticallyIntoView from ace2_inner.js, iframePadTop is used to calculate
    // how much scroll is needed. Although the name refers to padding-top, this value is not set on the
    // padding-top.
    var iframePadTop = 8;
    var $line = getLine(lineNumber);
    var linePosition = $line.get(0).getBoundingClientRect();

    // position relative to the current viewport
    var linePositionTopOnViewport = linePosition.top - getEditorScroll() + iframePadTop;
    var linePositionBottomOnViewport = linePosition.bottom - getEditorScroll();

    var lineBellowTop = linePositionBottomOnViewport > 0;
    var lineAboveBottom = linePositionTopOnViewport < getClientHeightVisible();
    var isVisible = lineBellowTop && lineAboveBottom;

    return isVisible;
  };

  var getEditorScroll = function () {
    var outer$ = helper.padOuter$;
    var scrollTopFirefox = outer$('#outerdocbody').parent().scrollTop(); // works only on firefox
    var scrollTop = outer$('#outerdocbody').scrollTop() || scrollTopFirefox;
    return scrollTop;
  };

  // clientHeight includes padding, so we have to subtract it and consider only the visible viewport
  var getClientHeightVisible = function () {
    var outer$ = helper.padOuter$;
    var $ace_outer = outer$('#outerdocbody').parent();
    var ace_outerHeight = $ace_outer.get(0).clientHeight;
    var ace_outerPaddingTop = getIntValueOfCSSProperty($ace_outer, 'padding-top');
    var paddingAddedWhenPageViewIsEnable = getPaddingAddedWhenPageViewIsEnable();
    var clientHeight = ace_outerHeight - ( ace_outerPaddingTop + paddingAddedWhenPageViewIsEnable);

    return clientHeight;
  };

  // ep_page_view changes the dimensions of the editor. We have to guarantee
  // the viewport height is calculated right
  var getPaddingAddedWhenPageViewIsEnable = function () {
    var chrome$ = helper.padChrome$;
    var $outerIframe = chrome$('iframe');
    var paddingAddedWhenPageViewIsEnable = parseInt($outerIframe.css('padding-top'));
    return paddingAddedWhenPageViewIsEnable;
  };

  var getIntValueOfCSSProperty = function($element, property){
    var valueString = $element.css(property);
    return parseInt(valueString) || 0;
  };

  var forceUseMonospacedFont = function () {
    helper.padChrome$.window.clientVars.padOptions.useMonospaceFont = true;
  };

  var setScrollPercentageWhenFocusLineIsOutOfViewport = function(value, editionAboveViewport) {
    var scrollSettings = helper.padChrome$.window.clientVars.scrollWhenFocusLineIsOutOfViewport;
    if (editionAboveViewport) {
      scrollSettings.percentage.editionAboveViewport = value;
    }else{
      scrollSettings.percentage.editionBelowViewport = value;
    }
  };

  var resetScrollPercentageWhenFocusLineIsOutOfViewport = function() {
    var scrollSettings = helper.padChrome$.window.clientVars.scrollWhenFocusLineIsOutOfViewport;
    scrollSettings.percentage.editionAboveViewport = 0;
    scrollSettings.percentage.editionBelowViewport = 0;
  };

  var setPercentageToScrollWhenUserPressesArrowUp = function (value) {
    var scrollSettings = helper.padChrome$.window.clientVars.scrollWhenFocusLineIsOutOfViewport;
    scrollSettings.percentageToScrollWhenUserPressesArrowUp = value;
  };

  var scrollWhenPlaceCaretInTheLastLineOfViewport = function() {
    var scrollSettings = helper.padChrome$.window.clientVars.scrollWhenFocusLineIsOutOfViewport;
    scrollSettings.scrollWhenCaretIsInTheLastLineOfViewport = true;
  };

  var getLinePositionOnViewport = function(lineNumber) {
    var $line = getLine(lineNumber);
    var linePosition = $line.get(0).getBoundingClientRect();

    // position relative to the current viewport
    return linePosition.top - getEditorScroll();
  };
});

redpajama_set_name: RedPajamaGithub


I'm hoping I'm not jumping the gun as I haven't yet received my Grade 8 result, but I'm beginning to think about what to learn next. I have a few ideas, and will be having a lesson on Tuesday to get some suggestions from my teacher, but the piano repertoire is so vast it won't hurt to have other suggestions too.
I am interested in suggestions for technical pieces and etudes as well as for more lyrical pieces, sonatas etc. The pieces don't all have to be post-Grade 8 in difficulty, and I would be very interested in a collection of smaller pieces that make up a whole (like, for example, a suite) so that I can learn individual movements over time.
My taste is wide, but I am limited to pieces that can be played with small hands. I'm fine with covering big stretches between notes, but chords are a challenge if the interval is more than an octave.
Looking forward to your replies! Everything will be taken into consideration.
Four ideas off the top of my head!
Thanks, F#m. I have the Shostakovich op. 34 Preludes and they were exactly the sort of thing I was thinking of. The Schumann is an idea - I'll have a browse! I don't know the Bartok, but that sounds good too. The Prokofiev 'Visions Fugitifs' I have seen on past exam syllabuses have all been too stretchy for me, but I'll take another look.
I was wondering about the Poulenc Nocturnes, but maybe I need to have a re-check for stretchy chords first!
I have been working on Fasch'###### (did it on weekend course) and there are some awkward stretches in that.
Highlights from my big list of a few years ago..
Bartok 6 Dances in Bulgarian Rhythm (Mikrokosmos VI)? Quite technical, particularly at speed, and great fun to play.
How about some Scarlatti sonatas too? The two Schirmer volumes ed Kirkpatrick have a good selection.
Thanks for all your suggestions. I have quite a few of the items mentioned (Scarlatti, Brahms and Bartok Mikrokosmos) so will dig them out and have a play.
The Poulenc Nocturnes sound lovely, maggiemay. I'd appreciate it if you would give them the once-over for stretchiness, as I don't want to waste money (especially the amount you have to pay for French music!) if I find I can't play them.
Any suggestions for more technical pieces, etudes etc. ?
Chopin's 3 nouvelles etudes (usually printed at the back of the main set of Etudes) are lovely and not so daunting as the others. Hand size is not an issue for these.
You can't go wrong with a Bach prelude and fugue either.
Thanks, Clovis. Having just played a Bach P&F for Grade 8, I'd love to learn another but I think I'll tackle something different first. The Chopin sounds like an interesting idea, and I'll certainly have a look at those.
I've dug out my copy of Mikrokosmos and have been having fun with the Dances in Bulgarian Rhythm. I really like them and they are the sort of piece that I can get a feel for quite quickly.
Thanks, stork. Lots of ideas that are new to me there.
Id endorse the Songs without Words. There are 48 and go from a few easy ones (Grade 5) right into Dip territory. One you might like is the A flat one subtitled 'Duetto' (Op38 no6) It has been in Grade 8 recently. There are two in G Minor (Op53 No 3) and A Minor (Op38 No 5) which are fun also at that sort of level.


text:
Mustelus norrisi är en hajart som beskrevs av Springer 1939. Mustelus norrisi ingår i släktet Mustelus och familjen hundhajar. IUCN kategoriserar arten globalt som otillräckligt studerad. Inga underarter finns listade i Catalogue of Life.

Källor

Externa länkar

Hundhajar
norrisi

redpajama_set_name: RedPajamaWikipedia


Shop with the excellent Good Night Inns promo codes & offers at a discount price.
TrixHub.com publishes and verifies up-to-the-minute voucher and deals from Good Night Inns to save you time and money. You are in the right place looking for real and verified Good Night Inns Voucher Codes for April 2019. We feature the best deals online including up to 70% off for you. Never spend more than you have to and use our Good Night Inns promotional code & sales. Simply click on one of the 20 available Good Night Inns Voucher Codes & enjoy shopping. Treat yourself for less and enjoy big savings at Good Night Inns today!
What is today's top offer for Good Night Inns?
Today's top offer is ' up to Half Off in The Clearance'. Find the offer, click on it and follow the link to the offer page at goodnightinns.co.uk.


text:
Smith & Wesson M&P45 M2.0 Co2 Air Pistol - .177
Umarex Smith & Wesson M&P45 M2.0 Co2 Air Pistol - .177 Black
Product Code: SWMP45M2
The Smith & Wesson M&P45 air pistol is a very accurate reproduction of the firearm used by Military & Police worldwide.
See Product Description
The double-action trigger is precise and easy to use, the fixed front and rear sights ensure fast target acquisition. An integral accessory rail is also form in the polymer action for the fitting of additional accessories.
Barrel length: 83mm
Magazine Capacity: 8
Approx Power: 2.4 ft/lbs
Ammo Type: .177 Pellet
UMAREX is the world's largest manufacturer of over-the-counter firearm replicas and the largest importer of air guns in Europe. Founded in 1972, the mid-sized company is now run by the second generation of the two founding families. It has approximately 1,000 employees worldwide. The key to the company's success has been the acquisition of licenses to build replicas of well-known weapons, which then can be sold without restrictions. Umarex currently holds licenses for the brands Beretta, Browning, Colt, Heckler & Koch, Ruger Smith & Wesson and IWI.
CO2 Cartridge - 12 Gram - Pack of 10


text:
Jack Dorsey Calls for 'End' to the Chinese Communist Party
Former Twitter CEO Jack Dorsey called for an "end" to The Chinese Communist Party as the international community increasingly distances itself from the regime.
"End the CCP," Dorsey wrote on Twitter earlier this week.
The short sharp message garnered over 2,200 shares and 12,400 likes.
End the CCP https://t.co/tFuxHOGXxX
— jack (@jack) August 6, 2022
The tweet from Jack Dorsey came in response to a video highlighting the harsh effects of China's "zero-COVID" policies on its citizens.
The message comes amid growing momentum for people to cut ties with the oppressive regime.
The movement, which has seen over 400 million Chinese people, including those overseas, saw people renouncing their membership with the CCP, data compiled by the New York-based Global Tuidang Center revealed.
But many of those who renounced affiliation with the regime did so using aliases to protect themselves from reprisal.
The Tuidang center's petition to "end CCP" garnered over 2.5 million signatures.
Earlier this year, Xi Jinping said there was no intention to relinquish China's zero-Covid commitment.
The country's senior officials also warned against any criticism of the policy.
"We have won the battle to defend Wuhan, and we will certainly be able to win the battle to defend Shanghai," he said, according to a translation by Sinocism's Bill Bishop.
Zero-tolerance approach to COVID-19
China's zero-tolerance approach to COVID-19 has led authorities to lock down entire cities, one of which was the world's largest wholesale hub in Yiwu city in East China.
As The Daily Fetched reported earlier:
Yiwu City, an important import and export center, went into lockdown despite it being crucial for small commodities worldwide for many years.
There are currently over 2 million small and medium-sized enterprises in mainland China with business connections to Yiwu. Concerns grow that the Chinese Communist Party's (CCP) restrictions will worsen China's economic downturn and disrupt global supply chains.
Last month, major technology hub Shenzhen ordered manufacturers into "closed loop" production, which barred workers from leaving the factories.
READ MORE: DeSantis Sends Illegal Migrants to Georgetown Via Biden's Beach Town
Meanwhile, central Henan Province, a city of 1.6 million residents, went into lockdown after one local was diagnosed with COVID-19.
All shops, except grocery stores, pharmacies, and hospitals, closed as public transportation halted.
The "quit the Party" movement took inspiration from the editorial series "Nine Commentaries on the Communist Party."
According to one Shandong man, living through the oppressive lockdown helped push him from being an ultra-nationalist to quitting the Party affiliates.
He was locked in his apartment after testing positive for the virus before losing his job, according to Bai Dexiong, a local coordinator.
"We had nothing to fill our stomach during the Shanghai outbreak, but what CCTV showed was always ample supplies and happy people," three Shanghai locals wrote, referring to the Chinese state-run broadcaster.
"'Shame' is not a word in the CCP's dictionary," the locals added.
Even the World Health Organization head said the country's zero-tolerance policy is "not sustainable."
As VoaNews reported:
Speaking at a media briefing in May, Tedros Adhanom Ghebreyesus noted the behavior of the disease caused by the coronavirus and what experts "anticipate in the future."
He added, "We have discussed this issue with Chinese experts… I think a shift would be very important."
Authorities in Shanghai have tightened restrictions on its 26 million residents, despite a steady decline in new COVID-19 infections.
Residents in some neighborhoods have been informed in writing that they are not allowed to leave their homes or receive deliveries as part of a "quiet period" that would last for at least three days. The new restrictions caught residents by surprise, coming after a brief period of being allowed to move about their neighborhoods.
Just go on vacation from China and don't go back.
Jerry Mander
Of course Dorsey wants an end to the CCP, he's a Globalist. China's CCP is the antithesis of that along with Putin's Russia and his dreams of recreating the USSR because both are nationalist. Global means global, world government. National borders have to go.


text:
James Ruppert: New cars that fall at the first hurdle
Here's a two-part story that I will deliver in reverse order. That's because every year, I get involved in a bit of real-life data-mining from various MOT testing centres around the UK. It shines an inspection lamp on which cars failed their first MOT test, just three years after they were originally registered. It's always great to see statistics that are based on real results and, in my experience, the MOT test doesn't lie.
The Renault Mégane isn't aspirational but a budget choice, and that partly explains its poor performance; and that's even more true of its distant cousin, the Dacia Sandero. With an eye-widening 23% failure rate putting the Mégane at the very bottom of the pile, is it worth buying a middle-order Renault?
Click here to buy your next used car from Autocar
Probably not, but I was still drawn to a 2000 Mégane 1.6 RT with 80,000 miles at £395 with a full MOT. Three previous owners, petrol power and a manual gearbox: perfect. I really should be looking at a more recent model, though, so how about a 2018 1.5 dCi Sport Tourer Dynamique? That's a diesel estate in English. At 35,000 miles with a full history and, most importantly, an MOT, it will cost you £9995 and officially deliver a whopping 76mpg combined. It's practical, smart and ready for work.
And that brings us to the Sandero, which is almost the epitome of the cheap and cheaply made cars that fail more often. It sounds like a cliché, but owners of cars built to a price expect them to go the extra mile. It's always better to shop at a dealer for one that has been fully checked and prepared.
With that in mind, I came across a 2018 Sandero 1.0 SCe with 15,000 miles and a pukka warranty from a main dealer at £6300. That's a petrol runabout that should exceed 50mpg.
Hard-used vehicles are the ones that can suffer at MOT time. This explains why medium and large people-carriers, such as the Seat Alhambra (with a 21% first-time failure rate) and the Ford Galaxy (19%) show up on the naughty list.
What surprised me was also seeing the Volkswagen Touran MPV (21.7%) and the Volkswagen Scirocco coupé (19.6%) listed. Indeed, the Touran was a miserable second-worst.
There does seem to have been a real dip in build quality from certain German manufacturers. Whereas it's almost expected to see Renaults (the Clio has an 18.5% failure rate) and Citroëns (the C4 Grand Picasso scored 19.9% and the C3 18.3%) in the bottom 10, most wouldn't expect to see any mainstream Volkswagens.
Question: With £7500, you might not have to compromise on either. The BMW 1 Series Convertible will provide a good ride, responsive handling and fulfilling acceleration for less than £7000. It's rear-wheel-drive and offers the choice of a manual or automatic gearbox, as well as several turbo petrol and diesel engines. Our pick is the 125i. If you would rather keep your hair out of those Scottish winds, the Mk6 Volkswagen Golf GTI could also provide your thrills. Hannah Shields, Fyfe
Answer: With £7500, you might not have to compromise on either. The BMW 1 Series Convertible will provide a good ride, responsive handling and fulfilling acceleration for less than £7000. It's rear-wheel-drive and offers the choice of a manual or automatic gearbox, as well as several turbo petrol and diesel engines. Our pick is the 125i. If you would rather keep your hair out of those Scottish winds, the Mk6 Volkswagen Golf GTI could also provide your thrills. JW
Previous Post:Land Rover to begin hydrogen Defender trials later this year
Next Post:Mercedes AMG GT 4-Door Coupe gains improved ride for 2021


WASHINGTON — Users of the Apple Watch on various social media websites have reported that the device loses connection and shows inaccurate heart rate results if worn on tattooed wrists.
According to the Verge, users on Reddit, Twitter and other social media channels reported the problems just days after Apple Watch was launched.
According to tests conducted by iMore, Apple Watch can run into significant problems if worn by inked customers.
The tests produced heart rate misreading on solid black and red colours.
Tattoos with lighter colors seemed to give Apple Watch less trouble, only leading to heart rate readings that were slightly off the mark.


text:
Генріетта Павлівна Пека (1 січня 1933, Київ) — український фізик, доктор фізико-математичних наук, професор, лауреатка Державної премії України в галузі науки і техніки.

Життєпис
Після закінчення у 1956 році Київського університету почала працювати на посадах спочатку асистента, потім доцента, а з 1978 — професора на кафедрі фізики напівпровідників радіофізичного факультету Київського університету.

У 1963 — захистила кандидатську дисертацію «». Науковий ступінь доктора фізико-математичних наук отримала у 1975 році.

Наукова та педагогічна діяльність
Брала участь у розвитку нового наукового напрямку — фізика варизонних твердих розчинів. Провела дослідження механізмів переносу носіїв заряду в цих фазах, що дозволило отримати низку фундаментальних результатів, зокрема, встановити існування вбудованих квазіелектричних полів нового типу в області різнодолинних переходів, теоретично і експериментально встановити неоднорідність розподілу інжектованої електрон-діркової плазми в структурах з різнодолинним переходом. На базі цих досліджень розвинувся принципово новий клас напівпровідникових приладів — варизонних інжекційних фотодіодів та комплекс нових методів дослідження варизонних структур, які були використані при розробці технології їх виготовлення на Світловодському заводі чистих металів.

Є автором курсів лекцій: «Фізика напівпровідників. II ч.», «Фізика поверхні напівпровідників», «Оптичні та фотоелектричні явища в напівпровідниках», «Основи оптоелектроніки» та ін, які читала в університеті. Була організатором і багаторічним керівником практикуму з оптичних та фотоелектричних явищ в напівпровідниках. Понад десятиліття була куратором спеціалізації «фізика напівпровідників». Під її керівництвом захистилось 13 кандатів та 1 доктор наук.

Була науковим керівником багатьох науково-дослідних бюджетних та госпдоговірних тем, брала участь у створенні базової виробничої лабораторії на ВО «Київський радіозавод» та була її науковим співкерівником.

Має 250 наукових та методичних праць, 20 винаходів, 2 монографій, 1 підручника, 3 учбових посібників.

Основні праці
 Варизонные полупроводники. К., 1989 ( у співарторстві).
 Люминесцентные методы контроля параметров полупроводниковых материалов и приборов. К., 1986 ( у співарторстві).
 Поверхневі та контактні явища в напівпровідниках. К., 1992 (у співарторстві).

Нагороди

 Державна премія УРСР в галузі науки і техніки (1988) — за роботу «Фізичне обґрунтування і промислове освоєння діагностики технології напівпровідникових матеріалів AIIIBV, їх твердих розчинів та розробка функціональних пристроїв на їх основі» (спільно з Мельником Павлом Вікентійовичем, Коваленком Віктором Федоровичем, Березовським Віктором Володимировичем, Ситенко Тамарою Миколаївною, Смертенком Петром Семеновичем, Тягульським Ігорем Петровичем, Смоляром Анатолієм Миколайовичем, Деревенком Анатолієм Павловичем і Іващуком Анатолієм Васильовичем).
 Соросівський професор (1997).

Примітки

Література

 Радіофізичний факультет. 50 років: Довідник. — К.: Видавничо-поліграфічний центр «Київський університет», 2002.

Джерела

Уродженці Києва
Українські фізики
Жінки-фізики
Випускники радіофізичного факультету Київського університету
Науковці Київського університету
Соросівські професори
Доктори фізико-математичних наук СРСР
Українські науковиці


Each year, thousands of children join gangs like MS-13 and Mara 18. Honduras has a 66% poverty rate and is currently the most unequal country in Latin America. Crime and violence remain rampant, as Honduras continues to have one of the highest homicide rates in the world. 37% of Honduran children of secondary school age (12-16) are out of school. Of the poorest quintile, 62% are out of school.
the Honduran people can fight back.


New Delhi: On the directions of the Prime Minister Shri Narendra Modi, the Union Minister of State for Home Affairs, Shri Kiren Rijiju ,accompanied by the Union Minister of State (Independent Charge) for Tourism, Shri K.J. Alphons and a high-level Central Team visited the flood affected districts of Alappuzha and Kottayam and reviewed the flood situation and relief measures undertaken by the Central and State Governments in the flood affected areas of Kerala.
The Ministers and the Central team visited a number of relief camps, food distribution centres and mobile medical camps and met the affected people living in the relief camps. Based on an aerial survey, field visit and interaction with the affected people, Shri Rijiju expressed satisfaction on the arrangements made by the State administration in managing the unprecedented floods in the State and in providing basic amenities, including food, water and medical service etc. in the rescue and relief camps. The Chief Secretary thanked the Central Government for deploying four teams of NDRF for search and rescue and assisting the administration in relief distribution. Shri Rijiju assured to send more teams of NDRF in case need arises. The State Administration handed over a memorandum seeking Central Assistance of Rs 831.10 crore to the Joint Secretary (Disaster Management), MHA, Shri Sanjeev Kumar Jindal.
Shri Rijiju announced that the Central Government has released an assistance of Rs 80.25 crore as Central share under the State Disaster Response Fund (SDRF). Based on the Memorandum now submitted, an Inter-Ministerial Centre Team (IMCT) would be deputed for detailed assessment and the Government of India will consider providing additional relief from NDRF as per norms on priority.
Briefing the media, Shri Rijiju expressed concern over the damage caused to the crop and loss of human lives. Later, reviewing the flood situation in district Kottayam, Shri Rijiju said that the Centre is very much concerned about the flood situation in Kerala and assured that the Central Government will continue to provide all possible assistance to the State Government to cope with the flood situation.
During the current South-West monsoon season, various parts of the state have been affected by heavy rains/rain-oriented calamities of varying degrees. Four teams of NDRF consisting of 166 rescuers with essential rescue equipment including 13 boats are deployed in Kerala to assist the State administration in rescue and relief operations as well as distribution of essential relief material and to provide medical support to affected people at the time of emergency.


text:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.nilhcem</groupId>
	<artifactId>markdown2html</artifactId>
	<version>1.0-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>markdown2html</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<!-- MIG Layout: layout for Swing -->
		<dependency>
			<groupId>com.miglayout</groupId>
			<artifactId>miglayout</artifactId>
			<version>3.7.4</version>
			<classifier>swing</classifier>
		</dependency>

		<!-- MarkdownJ -->
		<dependency>
			<groupId>org.markdownj</groupId>
			<artifactId>markdownj</artifactId>
			<version>0.3.0-1.0.2b4</version>
		</dependency>

		<!-- Commons IO: utilities to assist with developing IO functionality -->
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.0.1</version>
		</dependency>
	</dependencies>

	<build>
		<finalName>Markdown2HTML-${project.version}</finalName>

		<plugins>
			<!-- Use JDK 1.6 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.3.2</version>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
				</configuration>
			</plugin>

			<!-- Create an executable jar with dependencies -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-assembly-plugin</artifactId>
				<version>2.2.1</version>
				<configuration>
					<descriptorRefs>
						<descriptorRef>jar-with-dependencies</descriptorRef>
					</descriptorRefs>
					<archive>
						<manifest>
							<mainClass>com.nilhcem.md2html.App</mainClass>
						</manifest>
					</archive>
					<!-- Remove the "-jar-with-dependencies" at the end of the file -->
					<appendAssemblyId>false</appendAssemblyId>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>attached</goal>
						</goals>
						<phase>package</phase>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

	<!-- List the core committers -->
	<developers>
		<developer>
			<id>nilhcem</id>
			<name>Gautier MECHLING</name>
			<roles>
				<role>developer</role>
			</roles>
			<timezone>+8</timezone>
		</developer>
	</developers>

	<!-- License -->
	<licenses>
		<license>
			<name>BSD</name>
			<url>LICENSE.txt</url>
		</license>
	</licenses>

	<repositories>
		<!-- MarkdownJ repository -->
		<repository>
			<id>scala-tools</id>
			<url>http://scala-tools.org/repo-releases</url>
		</repository>
	</repositories>
</project>


Whether you're looking to secure a car loan or considering a Kia lease, McCafferty Kia of Langhorne is ready to help. To be more specific, our auto financing experts can present you with a healthy selection of options pertaining to the specific new Optima, Sorento, Forte, Sedona or Sportage you may be considering. In the market for a used car instead? Nothing changes. We're still quite happy to crunch numbers for you.
If you're ready to get started, simply fill out our easy-to-use contact form. It's the most relaxing way to get a hold of us (as you can do it on your own time), but it's not the only one. If you prefer to speak to us in person, be sure to stop by during regular business hours. Located in Langhorne PA, we're a quick drive away from the surrounding Levittown PA, Newtown PA, Philadelphia, Feasterville-Trevose PA and Trenton NJ areas.


text:
Q: how to get the User control Value which is nested inside the datagrid to String I need to access the Value of User control which is present inside the data Grid.as shown below

Actually what i want is once the data is bind to the grid it will check whether there is a value in the Expence column of the Datagrid if the value is null then the user control will be visible where user can select the value and will click save.
my aspx code:
<asp:UpdatePanel ID="UPChargesGrid" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:DataGrid ID="dgDestination" runat="server" BorderWidth="1px" BorderColor="#FE9B00"
        BorderStyle="Solid" BackColor="White" Font-Names="Verdana" Font-Size="XX-Small AutoGenerateColumns="False" ShowFooter="FALSE" CellPadding="3"       align="center" Width="700px" OnItemCommand="dgDestination_Select"
                     <Columns>
                         <asp:BoundColumn DataField="mCHR_NUPKId" HeaderText="mFDD_mFRD_NUPKId" Visible="False"></asp:BoundColumn>
                         <asp:BoundColumn DataField="Income" HeaderText="Income"></asp:BoundColumn>
                         <asp:TemplateColumn HeaderText="Expence">
                              <ItemTemplate>
                                   <asp:Label ID="LBLEXcepceValue" runat="server" Text='<%# Eval("Expence") %>' > </asp:Label>
                                    <CC5:Charge ID="ChargeExpence" runat="server" />
                              </ItemTemplate>
                        </asp:TemplateColumn>
                        <asp:TemplateColumn HeaderText="SAVE">
                             ItemTemplate>
                                   <asp:ImageButton runat="server" ID="IMGBTNSave" ImageUrl="~/AppImages/save.png"  CommandName="Save" />
                              </ItemTemplate>
                       </asp:TemplateColumn>
                    </Columns>
                    <PagerStyle HorizontalAlign="Left" ForeColor="#000066" BackColor="White" Mode="NumericPages"> </PagerStyle>
                 </asp:DataGrid>
         </contenttemplate>
</asp:UpdatePanel>

my CS code:
  protected void dgDestination_Select(Object sender, DataGridCommandEventArgs e)
{
    string expence = "";
    UPGridControls.Update();
    if (e.CommandName == "Save")
        {
           string FRDID = e.Item.Cells[0].Text;
           string income =  e.Item.Cells[1].Text;
            if (FRDID != "")
             {
        Label LBLEXcepceValue = (Label)dgDestination.Items[vLoop].FindControl("LBLEXcepceValue");

                  if (LBLEXcepceValue.Text != income)
                    expence = (dgDestination.FindControl("ChargeExpence") as UserControl).ToString();
         using (LQMasterChargesMappingDataContext DB = new LQMasterChargesMappingDataContext())
                 {
                    var newFRD = new TB_MasterChargesMapping
                    {
                         mCHM_mCHR_NUPKId_Income =mobjGenlib.ConvertLong( GetChargeID(e.Item.Cells[1].Text.ToString())),
                         mCHM_mCHR_NUPKId_Expences = mobjGenlib.ConvertLong(GetChargeID(expence)),
                         mCHM_mCMP_NUUniqueId = mobjGenlib.ConvertLong(TXTCompanyID.Text),
                         mCHM_NUIsActive = 1
                    };
                    DB.TB_MasterChargesMappings.InsertOnSubmit(newFRD);
                    DB.SubmitChanges();

                    B_MasterChargesMapping MASLEVPREMAP = DB.TB_MasterChargesMappings.OrderByDescending(C => C.mCHM_NUPKId).Where(A => A.mCHM_NUIsActive == 1 && A.mCHM_mCMP_NUUniqueId == mobjGenlib.ConvertLong(TXTCompanyID.Text)).FirstOrDefault();
                  //Insert In UserLog Report
                     mobjGenlib.InsertUserlog("mCHM", mobjGenlib.ConvertString(MASLEVPREMAP.mCHM_NUPKId), "I");
                    TB_MasterChargesMapping NewFRD = (from P in DB.TB_MasterChargesMappings where P.mCHM_mCHR_NUPKId_Income == mobjGenlib.ConvertLong(GetChargeID(e.Item.Cells[1].Text.ToString())) && P.mCHM_NUIsActive == 1 select P).FirstOrDefault();
                    if (NewFRD != null)
                    {
                      Session["ODDID"] = mobjGenlib.ConvertString(NewFRD.mCHM_NUPKId);
                }
                 }
             }
       }
}

please help me to et the value from user control to String.
Thanks in advance.

A: You can access your expense control like this
var expense= e.Item.FindControl("ChargeExpence") as yourUserControl;

You can define a public property in your user control, which actually gives you the value.
You can then access this property using expense object retrieved above.

A: You can access the control id which you want to access inside a user control.
Try this.
 if (expence != null){
      //access controls here that are within yout usercontrol for example
      TextBox tb = (TextBox)expence.FinControl("YourTextBoxID");
string requiredValue = tb.Text;

    }

redpajama_set_name: RedPajamaStackExchange