text:
Novak Djokovic news LIVE: World No 1 faces fresh hearing over Australian visa as deportation looms
January 14, 2022VR/AR
Martina Navratilova tells Djokovic to 'suck it up' and 'go home'
Novak Djokovic has launched another appeal after his visa was quashed on Friday by Australia's immigration minister Alex Hawke. The men's world No1, who is unvaccinated but has claimed an exemption from Australia's strict rules on visitors being vaccinated against Covid-19 due to having already had a bout of the disease, faces a race against time to have his visa reinstated with his first match of the Australian Open scheduled for Monday evening.
On Friday, Hawke announced that he had cancelled Djokovic's visa on "health and good order grounds". Djokovic's legal team immediately fought the decision and the case will now go to a federal court over the weekend, with Djokovic's lawyers pushing hard for a final decision on Sunday before he begins his bid for an historic 21st Grand Slam. The 34-year-old Serbian has been summoned to a meeting with border authorities on Saturday morning, and could then be detained in a state hotel while the case is heard.
Pressure has been building all week after Djokovic broke his silence over a number of accusations of breaking Covid protocol on Wednesday, and he conceded that he broke isolation and conducted an interview with French newspaper L'Equipe despite knowing that he was positive for the virus, such a transgression could result in up to five years in prison if proven that he lied about his positive test.
Follow all the latest news below as Djokovic fights deportation once more.
Novak Djokovic latest news
Show latest update
Why does Djokovic oppose the vaccine?
Djokovic has made a few controversial statements about vaccines over the past few years and admitted he does not have the Covid vaccine when he entered Australia.
Our reporter Tom Kershaw has written about how Djokovic has articulated his beliefs and what they are.
He wrote: "He is adamant that he can find "basic ways to survive" by tapping into the strength of his own body, be it when fighting a virus or an injury, without needing to resort to outside intervention.
"Sometimes, that belief has elicited comic moments, such as when Djokovic teamed up with Pepe Imaz, a coach-cum-spiritual guide, whose techniques included the power of extremely long hugs. Around that same time, Djokovic began extolling the virtues of telekinesis and telepathy and referred to "gifts from a higher order, the source, the god, whatever, that allows us to understand the higher power and higher order in ourselves".
Sarah Rendell14 January 2022 17:20
Talking points: Is it all about Djokovic?
Djokovic is the main talking point heading into this year's Australian Open, will the defending champion have the chance to compete or will he be deported? That is a matter for the courts with a decision thought to be coming on Sunday after a hearing.
But that isn't the only situation at play ahead of the first slam of the year.
Emma Raducanu, reigning US Open champion, will play in her first slam since and will look to continue her success on the world stage. Meanwhile, Andy Murray was handed a wildcard for the event and has had a winning start to his time in Australia.
He is through to the ATP final for the first time in three years and so he is one to watch at the event.
There are many things to keep on top of before the Open begins on Monday, have a read of the talking points:
Murray: Djokovic situation isn't good for anyone
Andy Murray's time in Australia has been great so far and he added to his winning start as he defeated Reilly Opelka 6-7 6-4 6-4 on Monday.
In the presser after the match, the Scottish star re-iterated his point that the visa situation isn't good for anyone.
"It's not a good situation. I'm not going to sit here and start kicking Novak whilst he's down," Murray said. "I mean, I said it the other day, it's not a good situation for anyone.
"It's unfortunate that it's ended up in this sort of situation, and who knows? I don't know what the process is from now. I don't know what route he goes down, if he can appeal that and how long that takes, and can he still be out practising whilst that process is going on or still competing in the tournament?
"I just want it obviously to get resolved. I think it could be good for everyone if that was the case. It just seems like it's dragged on for quite a long time now and it's not great for tennis, not great for the Australian Open, not great for Novak.
"Obviously a lot of people have criticised the government here, as well. It's not been good."
What has happened so far?
Djokovic's visa has been cancelled for a second time just ten days after he arrived in Australia.
The first cancellation saw Djokovic win an appeal. However, immigration minister Alex Hawke has cancelled it again on "health and good order grounds" and it has been welcomed by prime minister Scott Morrison.
Djokovic's representatives have submitted an injunction to block his deportation and Judge Kelly has ruled the government cannot take any action in removing Djokovic until proceedings have finished.
Those proceedings will now take place at the Federal Court of Australia on Sunday, just a day before the Australian Open. Here's a timeline of what has happened so far:
Courts consider Australian Open timeline
Djokovic's case was heard at a directions hearing earlier today and the player's lawyers asked for proceedings to be accelerated in order to be done in time for the Australian Open.
These were granted with Djokovic's team submitting an injunction on Friday rather than Saturday as Judge Kelly first proposed.
But journalist Ben Rothenberg has questioned whether the courts should be taking the timing of the Australian Open into this case. Djokovic will be pleased with the faster actions as he wants to compete in the event on Monday.
But with the case moved to the Federal Court of Australia, the case could potentially be delayed.
What's coming up in the next few hours?
After the hearing today we know the star will be detained over the weekend and a hearing will proceed on Sunday.
We also know he has another interview with immigration issues Saturday morning at 8am AEDT.
But what happens at those events and what could the outcomes be? Here's a look at what lies ahead for the world no. 1:
Clarification on Saturday hearing
The hearing on Saturday morning at 10.15am AEDT will be a directions hearing like the one that took place earlier today.
This time is will be heard in the Federal Court of Australia before another hearing on Sunday which it thought to decide the case.
That will give Djokovic just 24 hours to prepare for his opening match of the Australian Open, if he wins the case.
Serbia react to Djokovic visa cancellation
Nemanja Starovic, a senior official in the foreign ministry of Serbia, has said Djokovic is being "treated like a criminal" in Australia.
Djokovic has his visa cancelled for a second time with the case now being moved to the Federal Court of Australia.
Starovic told BBC: "We have seen other tennis players who didn't respect their mandatory isolation but they haven't received the same treatment as Novak."
He added Serbia are asking Australia not to hold Djokovic in a detainment centre again despite it being agreed amongst both parties in a hearing earlier today.
He said: "He doesn't deserve that. He's not an illegal migrant. Relations between our two countries have always been friendly and public opinion about Australia was always strong here in Serbia.
"Unfortunately he was treated like a criminal, so this could potentially damaged the relations between two countries."
What about Raducanu?
Djokovic is stealing most headlines at the moment but Emma Raducanu is at the first slam sine her US Open win.
Our reporter Tom Kershaw has written about the pressure she is facing, writing: "Raducanu might have already scaled the mountain, but those players still feel like forbidding giants in front of her.
"What is a realistic goal – if such a thing can even be applied anymore? Raducanu's opening match, against America's Sloane Stephens, is an unforgiving test in which victory alone would qualify as a considerable marker. It's a daunting task that raises some intriguing parallels too. Few had expected an unseeded Stephens to clinch glory at the US Open in 2017 and, amid the swirl of attention and unwanted comparisons to Serena Williams, she failed to win a single match for the remainder of the season.
"By the time she was knocked out in the first round at the Australian Open the following year, her losing streak had extended to eight matches. "Just relax, everybody. It'll be OK, don't worry," she said with a smile and a laugh to a roomful of solemn reporters afterwards. Sure enough, at the French Open a few months later, she reached the final."
How did it unfold?
Djokovic has been in Australia for almost 10 days and his visa has been cancelled twice.
The first time he was detained at a Melbourne airport as he was viewed as a health risk as he hadn't had the Covid vaccine. He won an appeal to remain in Australia but immigration minister Alex Hawke had the power to cancel it again.
He exercised his right to do so on Friday but Djokovic and his team are hitting back with the case now heading for the Federal Court of Australia.
But how did he get to this point and why? Here's all you need to know:
Aero Likely the First in a Series of Enthusiast Headsets from Varjo
Josh Sargent double lifts Norwich as lights go out on Watford and Claudio Ranieri
Justice Department charges Texas man over threat to 'put a bullet' in Georgia election officials
Brian Laundrie sent text messages to try and make police think Gabby Petito was still alive, says FBI
Windows 10 21H2 is now widely available, Windows 11 remains optional
Southern California still 295,700 jobs short of pre-pandemic employment – Press-Enterprise


At Design AI we pride ourselves on delivering high quality design, high quality drawings and delivering a high level of customer service and communications. We undertake a variety of design services... to cater to your needs and we are here to listen and take on board your design problems and create innovative design solutions.
At David Sage Architectural Consultant we specialise in providing a wide range of architectural services for domestic and light commercial clients in Solihull, Birmingham and the West Midlands. We... offer the service that you would expect from the leading architectural companies but also promise a personal approach to every one of our customers. If you are looking for architectural companies in the area, look no further than our excellent company.
Welcome to Lapworth Architects Birmingham, we are award winning architects in Birmingham that provide a quality service to commercial and residential clients across the whole of the UK. Established in... 1989 we are proud of our extensive history, delivering exceptional designs that have gained national recognition winning us many prestigious Birmingham architecture awards.
Make has received planning permission for The Bridge Centre, a new youth and community facility in Bideford, Devon, for the charity Wings South West. The Future Spaces Foundation, a think tank... established by Make Architects, launched their second report "Vital Cities not Garden Cities: the answer to the nation's housing crisis?".
Simms Davies are one of the most forward thinking diverse architectural design companies situated in the United Kingdom, using the latest Computer Aided Design packages, combined with exceptional... expertise, we can guarantee you will be delighted with your end product, whether it be a large commercial development or a small extension to a domestic building.
SD Studio has many years experience in the Architectural Services sector, and provides domestic and commercial designs to clients throughout the UK. With Offices in East Midlands (Leicester) and West... Midlands (Coventry), one of SD Studio's Consultants is never too far away.
AJA Architects have provided architectural and development consultancy services since 1979, combining demonstrable experience with a fresh, innovative approach to each project, in order to create... optimum solutions for our Clients. We have developed a reputation for expertise in a number of commercial sectors, notably office, retail and distribution, together with an extensive track record in large scale master planning schemes.
Vagdia and Holmes deliver high quality built environment solutions, through excellent client service and attention to detail. Our Practice has a history of working and serving Churches, community... groups, public and private sector clients, for over forty five years. We work hard to offer a professional architectural service, by listening and responding to the needs of our Clients, offering them project commitment and task enthusiasm.
MAINWOOD architects is a Birmingham practice based right at the heart of the UK, and established in 2010. We undertake a wide variety of commissions for both domestic and commercial clients, and have... developed particular expertise in Sustainable Construction techniques and Building Conservation.
Abacus Architects are very happy to announce that Planning Approval & Listed Building consents were granted. Abacus Architects LLP is an RIBA Chartered Practice based in the Jewellery Quarter of... Birmingham. The practice has been in existence for 19 years, and our people are our most important resource having been responsible for a wide range of projects across the UK. So, if you're looking for a Birmingham Architect, we're here to help.
Hampton Architecture is a well-established practice; with the two senior partners having over 35 years combined experience of the building industry. With a background in large-scale residential... development, Marcus Ham has been delivering sensitive and well-respected design solutions to the private sector since 1990.
We are a Chartered Architectural Practice, who can provide our clients with a full RIBA (Royal Institute of British Architects) Architectural Service from Client Inception and Feasibility to Project... Completion and Handover. We work with specialist consultants, commercial developers, private developers, local authorities and individual home owners.
We provide a high level of professionalism, combined with the personal attention you expect. We offer a unique mix of skills and strive to realise the potential of our client's property through the... whole development process from feasibility to implementation. Our focus is on achieving creative, contemporary, cost effective design solutions to meet our client's specific requirements.
We are a multi-disciplinary chartered professional practice, who specialise in planning and building regulations. Our architectural and planning roots can be traced back to the early 1990's, where... associates previously worked for several local planning authorities and as consultants for the private sector. Therefore, we have inside knowledge and experience which cannot be matched.
Working alongside a variety of Clients, including estate and property owners, developers and national organisations, Harper Sperring has developed a wealth of knowledge in many aspects of commercial... building types and designs. Education is an integral part of everyone's life. As Chartered Architects, Harper Sperring believes that good design is therefore essential in providing the right environment within which to work and learn.
PCPT Architects is an award winning architectural practice combining high quality, sustainable design values with commercial acumen to create enduring works of architecture and public realm for both... private and public sectors. One of our key differentiators is not just the range of specialist services but also the depth and experience of our people. This enables us to make the real difference to any client's business performance.
Priding ourselves on a quality, personal service at realistic and affordable prices, we are fast becoming renowned as an architectural company specialising in value for money Planning and Building... Regulation submissions. Here at Stoneleigh we have the experience, knowledge, and flexibility to take on projects of any description for developers, clients and private individuals alike.
I find Nick to be a breath of fresh air. His skills as an architect are unquestionable with a flair and an eye for excellent design. He is also commercially astute. Unlike some architects he is not... precious. He is approachable and a great team player. We focus on delivering design-led quality and inspiration on all our projects. We strive to provide the highest professional service with best practice and creativity at all times and ensure our clients remain at the heart of the process.


Organisations across Greater Birmingham are urged to take advantage of regional funds totalling more than £6 million before the deadline for applications closes on Friday 10th November.
Part of the programme, worth £2.8 million, aims to fund the low carbon economy across all industries. The low carbon industry in Greater Birmingham consists of 1,580 companies, employing nearly 29,000 people.* Companies can apply for grants worth at least £250,000.
A second funding package – valued at £3.4 million – aims to promote research and innovation across all sectors. Organisations can apply for grants of at least £250,000.
The funding makes up part of the region's European Regional Development Fund (ERDF) Operational Programme, which has been set up to stimulate economic development across Greater Birmingham.
"These funding packages will help local organisations to innovate, and also enable a wide range of providers to develop greater carbon efficiency.
ERDF offers financial support through match-funding for projects in the Greater Birmingham region that meet its objectives. Of the £6.2 million available in Priority Axes 1 and 4, £4.3 million is ring-fenced for organisations across Tamworth, Lichfield, Cannock and East Staffordshire, with the remaining £1.9 million on offer in Birmingham, Solihull, Redditch, Bromsgrove and Wyre Forest.
To register your interest, or for more information about funding, please email [email protected] or visit https://www.gov.uk/guidance/england-2014-to-2020-european-structural-and-investment-funds.


Asterisk Service, a unit of Ecosmob, global VoIP technology leaders, announced availability of SBC solutions for VoIP service providers that meet emerging trends and needs in 2019.
Speaking on the occasion, the company's VP said, "VoIP wired and wireless networks are evolving and follow different paths using H.248, MGC and SIGTRAN as well as H323 protocols. Further, the trend for 2019 is to go in for hosted services and, in both cases, Asterisk Service SBC development addresses these requirements with extreme customization as may be needed. Our SBC addresses all transport layers commonly used in VoIP next generation networks. We factor in various standards such as 3GPP, IP Multimedia Subsystem and Tispan that are gaining traction in this year and are likely to be the norm in the time to come. Since WebRTC is now a standard part of VoIP services such as call center solutions and IPPBX, our SBC development takes care of including this technology for secure and seamless global communications." Asterisk Service SBC solution provides seamless connectivity between devices using G711u, G711a, G723, G726, G729, GSM, ILBC and similar codes. Asterisk Service, he continued, can provide SBC development from the ground up for VoIP service providers or work to integrate and upgrade or install and fine tune existing open source SBCs based on Asterisk, FreeSwitch, OpenPBX, Yate and Open SER.
Asterisk service SBC development has inherent advantages for VoIP service providers. Customization means the SBC can be fine tuned to handle NAT, media transcoding and specific protocols resulting in a leaner and fast system. Another advantage VoIP service providers gain is in security. Asterisk Service gets the benefit of the AI team of Ecosmob, its parent company, to handle media transcoding intelligently and distribute loads as well as in least cost routing. In addition, AI refinements in security can help identify patterns and attempts at abuse or intrusions and raise a security flag. Custom SBC development by Asterisk also has benefits in accounting and billing aspect. Inclusion of these features in SBC leads to better integration of traffic monitoring as well as accounting. It is possible to set custom language options, rates, currency and taxes for different customers. All these and other standard features of SBC can be offers as an on-premise solution, or, as is the trend, on a hosted basis. This further frees VoIP services from the burden of maintenance, IT resources and upgrades. Asterisk Service keeps its SBCs updated on an ongoing basis backed by total support.
Interested VoIP services looking to streamline or upgrade existing SBCs or go in for SBC development may get in touch with Asterisk Service at 91 79 40054019, 1-303-997-3139 or chat on website https://www.asteriskservice.com.


trees that are under water!
bridge at a dizzying pace.
This is the same beach I played on as a child!
Knee high by the Fourth of July! All is well.
What about you? What state (or country) do you live in? What are some things you love about your setting? Have you ever been to Minnesota?
I once heard that a child's most vivid memories are the ones that have the strongest emotion attached to them. Whether that emotion is really good or really bad, those are the ones they tend to hold on to.
Often my children will ask Dave and I to share with them a memory from our childhoods and I'm always amazed that some of the first memories to surface are usually the ones that have bad emotions attached, like when I fell off a bike, or when I hit a tree sliding down a snow hill or even when my brother threw a baseball and hit my eye and it looked like I had been punched. Thankfully, I don't have to dig very deep to find the good memories of hugs and kisses from my mom and dad, curling up with my sister to watch an old movie, going to the library with my mom, family vacations, New Year's Eve parties with family and friends or softball games on Sunday afternoons, but those don't always surface first. Sometimes I have to be purposeful about finding the good memories and focusing on them.
The same can be said for my girls who will be eight and six this summer. When they talk about the things they remember, they often bring up events like the time our brand new puppy was lost and we were out searching for her into the wee hours of the morning, or when my oldest was camping with my parents and became separated from the group or when my younger daughter hurt her finger while playing with a neighbor's little red wagon. Those memories have strong negative emotions attached to them, so I'm careful to make sure the girls remember the good that came from those events, too.
I love watching my girls' faces as they follow up the bad memory with the happy ending. They love telling how our lost puppy was found by a nice woman who called the Humane Society, how my oldest has such a good memory that she was able to recall the campsite number and found her way back without any tears and how our neighbor (who is a doctor) took care of the wounded finger and made my daughter feel very special in the process.
As a parent, I can't prevent all the unhappy moments my children will experience, but I can be purposeful about helping them create a happy ending. Even when there seems to be nothing positive about a circumstance, I encourage my daughters to look for something good. Whether it's through showing them how God provides the answer to our prayers, like He did when the puppy was found, or praising them for keeping their cool under stressful circumstance or encouraging them to be grateful for the help of a kind neighbor, there are countless ways to turn a painful memory into a positive one.
What about you? What's the very first memory that comes to mind from your childhood? Is it good or bad? Does it have a happy ending? If you'd like to share it, I'd love to hear it!
On Friday I shared a cute story about my two-year-old son while we were at the Lake Superior Train Museum in Duluth, MN. At the museum we fully expected him to burst with excitement, eager to get on a real train and see it up close, but instead, he cried, his heart raced beneath my hand and he jumped off the train and ran back to his stroller, refusing to get out again.
No matter how much we reassured him it was safe, he wouldn't get on board. I was amazed that he didn't believe us, the people he can trust most. Even when we got on the train and smiled and waved for him to join us, he still wouldn't budge. He shook his head and said: "Nope!"
He loves trains, so I knew how much he was missing. When he hears a train crossing the trestle above the river behind our house, he shouts with excitement and runs to the window to watch it. When it has passed, he cries. He lives and breathes trains.
At the museum I wanted him to get over his fear and climb up those steps and take a look from the inside out. I wanted him to trust me when I reached out my hand. This was his chance to get on board and experience it firsthand. When would he get this opportunity again?
It occurred to me, when God brings me close to my dream and says: "Get on board!" I sometimes act like my two-year-old. I look right and left at the big, scary opportunity, I hear the wheels chugging and the steam blowing and my heart pounds within my chest. I feel that nasty panic rise up in my throat and I shake my head and say an emphatic "Nope!"
Then God reaches out His hand to me and says gently, "Come on. Trust me. This is your dream."
I shake my head, not willing to budge from my safety zone. The fear continues to whisper all the possibilities of failure, pain and trouble if I get on board.
But God doesn't give up. "You can trust me more than anyone else. I'll never leave your side. I want you to see this dream from the inside out. Come on board, I'm about to give you the ride of a lifetime, if you'll take that step and follow me."
I want to believe Him. I do. I want to get on board. I want to feel it and touch it and smell it. I want to see where it will take me. I want to see if it's everything I dreamed it would be. I've heard that whistle calling and I've watched it go by with joy and pleasure. I live and breathe my dream.
When I get up close, though, and fear strikes my heart, it seems so much easier to return to safety. The fear is shouting at me to walk away.
But I learned something a long time ago that my two-year-old has yet to learn: I can get on board, even when I'm afraid. I have a choice to make. Fear cannot force me to walk away, unless I let it. When I walk toward my dream and resist the fear, it begins to subsides.
And when I'm finally on board and I see the steam building up and feel the rumble of the engines going, my heart begins to pound with a different emotion: exhilaration. I'm living the dream and it's better than I ever imagined.
I look over and see God sitting next to me. He's watching my face as I experience this thing He created for me and me alone. He is smiling. So am I.
I thought I'd end the week by sharing some photos from a recent visit we took to the Lake Superior Railroad Museum in Duluth, Minnesota. We stumbled across the museum four years ago and it was a complete delight! I couldn't wait to get back. The Museum is housed in the historic Union Train Depot, which is a French Chateauesque building built in 1892. In 1910, seven railroads dispatched over 50 trains a day from there.
The depot served as a small Ellis Island to the immigrants who would arrive and wait for their connection. During times of war the soldiers would march down Superior Street and board the trains there. The last train left in 1969 and four years later the building was restored and turned into a museum.
Along with the historic trains, the museum houses Depot Square, which is a 3/4 scale recreation of Duluth's downtown in 1910. You can peek in the windows and see what a store or office looked like in that era. There is a doctor's office, a drug store, a millinery, a general store and many more. There is also a working soda fountain, where you can buy a treat.
One of our favorite exhibits is a model train and town that is easily 20x30 feet and enclosed in glass. I was impressed with the attention to details in the little city. We chased that train around and around.
The first one we came to had replicated train noises and the wheels chugged. His eyes became huge and I could feel his heart pumping beneath my hand. He started crying: "Choo-choo, bye, bye?!?!" I'm afraid he thought it was going to start moving and we'd all be run over. He didn't want to get out of his stroller for the remainder of the visit. I was able to persuade him to go on a caboose, but it didn't last long and he wanted off. He prefered to enjoy the trains from a distance.
The rest of us loved exploring the dining car, snow plow train and an assortment of others. It was fun imagining what it would have been like to travel by train a hundred and fifty years ago and I was filled with ideas for a book!
Hopefully someday we'll be able to go back when our youngest understands the trains aren't leaving the station.
What about you? Do you have any trips or visits planned this summer? What are some of your favorite museums or historic sites?
Graduations, Weddings and Birthdays, Oh My!
Our summer calendar is filling up with celebrations for our family and friends. We have seven weddings, a handful of graduation parties and many birthdays to attend and host.
That's a lot of gifts to buy! One way I save on the cost of birthday presents is shopping the clearance aisle right after Christmas. It's a great time to buy reduced priced toys. I have a general idea of who I need to buy for - all my nieces and nephews and a handful of close family friends. I know my girls will get invited to classmates parties, as well, and so I grab some age appropriate gifts for them. By stocking up on gifts when they are on sale, I'm able to save a little and I'm not as stressed out trying to get to the store at the last minute before a party.
I also save the good quality gift bags my kiddos get their presents in and reuse them when we give to others. Those bags can get spendy, so this is a great savings.
Today we celebrated my daughter's sixth birthday. There were thirteen little girls at my house and we had so much fun! We started our celebration with face painting. I picked up a kit at a craft store with a step by step guide. It was an easy activity that all the girls loved! Then we went outside and broke open a pinata and everyone filled their treat bags. Next we decorated cupcakes - this is another fun activity that the girls enjoyed. After that my little charmer opened her gifts and was in seventh heaven with all her friends circled around her. Before the moms came to pick up their kiddos, I had my daughter take a picture with each little girl, which we'll send out in the thank you cards.
What about you? Any celebrations planned this summer? Do you have good money saving tips for gift buying? What do you do for birthday parties in your home?
"Friendship is born at that moment when one person says to another: What! You too?
Nine years ago my husband and I moved back to our hometown after finishing college and discovered we had very few friends our age left! Almost everyone we'd graduated high school with had moved on.
I was hungry for new friendships. I remember being very specific when I brought my prayers before God. I wanted women of faith who were on fire for the Lord.
When our oldest daughter was eighteen months old I began attending an ECFE (Early Childhood Family Education) class and little did I know, my prayers were about to be answered and God was getting ready to pour out more of His blessings on my life.
The ECFE class was designed for children my daughter's age and the moms in the class were all in the same life stage as me. A couple of them had known each other for a while and they were just starting up a ministry called MOPS (Mothers of Preschooler). One of the moms, Beka, asked me if I'd be interested in giving it a try. I didn't even hesitate.
I was convinced MOPS was the best idea ever imagined even before I walked in the door. A room full of moms coming together twice a month to eat, fellowship and grow together - could it get any better? Between ECFE and MOPS, my tank was starting to fill up. For the first time in years I felt exactly like C.S. Lewis' quote: "What! You, too? I thought I was the only one."
I've been in MOPS and ECFE for seven years now and I've made more friendships than I ever dreamed possible. I'm honored to walk along side these phenomenal women as they mother their children and I'm always amazed when a woman reaches out in friendship to me. I'm even more blessed when I can reach out to someone else.
Not only did I make great friends, but it turns out these lovely ladies have fantastic husbands, too! Some of my hubby's best friendships have come from my involvement in MOPS. There's nothing better than to have friendships with couples when the husbands and the wives get along.
I'm convinced that life is much better when it's lived with friends.
These three ladies have become one of my life lines. We each have four children close in age (quick math: that's sixteen children under the age of eight when we're together!) which means we leave them at home with the daddies and get pedicures and go out for coffee and just refresh with one another whenever we can!
From left: Beka & Sarah (from that first ECFE Class!) and Lindsay, from an early MOPS year, and me.
What about you? Where have you made friends? Are you in a season of prayer for friendship?
I recently began following Author Katie Ganshert's blog, just weeks before her debut novel Wildflowers from Winter was released. It's been fun getting to know Katie and watching her launch this book. I had the opportunity to participate in her Wildflowers from Winter Blog Hop and was fortunate enough to win an Advanced Reader Copy!
1. I've never followed an author while they launched their first novel and that alone intrigued me to read it.
2. The story line is fascinating and I especially love that it's set in Iowa, my neighbor state to the south and a place I lived for over a year.
3. As I meet new authors I want to be open to read all sorts of genres so that I can support their work.
From the first sentence in Wildflowers from Winter, I was hooked. The opening scene starts in first person narrative and it brought me into the heart and mind of the heroine immediately. In an interesting twist, the novel transitions into third person narrative and then flips back and forth between first and third person periodically. I liked these different points of view and I thought it worked well.
Katie expertly captured the five senses and transported me into the story world through the smell of coffee, the taste of a cool Pepsi, the feel of the bitter cold, gazing upon the Iowa farmland and hearing the falling rain. I enjoyed the references to pop (a very Midwestern term) and the Boundary Waters, which is a canoeing area in the northern portion of Minnesota. These references helped bring the plot into the real world and made me feel like I was right there with the characters.
I was moved along with the story, waiting as bits of the puzzle were put together, feeling the heroine's pain and heartache and watching as she found peace and healing with her past. Every character felt real to me and jumped off the page. The hero was everything a hero should be and the love story was sweet.
Katie tackled some tough issues in this book. Really tough. And she brought you deep into the minds of the main characters. These issues could have pulled the story into a black hole, leaving the reader feeling heavy and discouraged, but Katie expertly balances these aspects of her book with carefully crafted scenes of hope and possibility. The heroine's spiritual journey is especially poignant and Katie handled it beautifully.
Wildflowers from Winter kept me up well past bedtime on several occasions! I would highly recommend it, and, as I said, I'm not a big fan of contemporary novels, but this one has me reconsidering. I look forward to reading Katie's next book, Wishing on Willows.
Katie Ganshert was born and raised in the Midwest, where she writes stories about finding faith and falling in love. When she's not busy plotting her next novel, she enjoys going on romantic dates with her husband, playing make-believe with her wild-child of a son, and chatting with her girlfriends over bagels and coffee.
What about you? Have you read Wildflowers from Winter? Do you prefer historical or contemporary fiction?
Before staying home full time I worked at a historic site where I led a team of ten people, managed a six figure budget, helped coordinate many events and activities and served on countless boards. I was a natural leader and I was confident in my skills and abilities.
The first year at home I became involved in leadership with the MOPS (Mothers of Preschoolers) ministry at my church. There were about a dozen women serving that year and I found them to be confident, skilled, talented, smart, funny, caring, wise, and just as experienced as I (if not more so) in operating an organization.
As I watched them lead effortlessly, I began to envy the gifts that each of them operated in.
The more I envied them, the more inadequate I felt.
For the first time in my life I felt insecure, but these women were so gracious and kind I adored them and they edified me and encouraged me every step of the way. Praising me for my contributions and effort, which made me wish I was even more like them!
As I struggled with this stumbling block God brought me to Romans 12:4-8: "For just as each of us has one body with many members, and these members do not all have the same function, so in Christ we, though many, form one body, and each member belongs to all the others. We have different gifts, according to the grace given to each of us. If your gift is prophesying, then prophesy in accordance with your faith; if it is serving, then serve; if it is teaching, then teach; if it is to encourage, then give encouragement; if it is giving, then give generously; if it is to lead, do it diligently; if it is to show mercy, do it cheerfully."
God had blessed each woman in MOPS with unique gifts and they were working in the area He had assigned to them. If God wanted me to have the gifts I envied in others, He would have given them to me. But He hadn't. I was created exactly the way I am, with the gifts God has given me, for a specific purpose.
When I felt insecure and jealous it robbed me of the power to operate in my gifts.
God challenged me to be thankful for what He had given to the others and to trust His plans for me. As I did this I found a new sense of confidence and peace and I became more effective in serving.
With that Truth buckled securely around my waist, I can now watch these women, my dear friends, operate in their gifts and marvel at how awesome our God is in giving each person exactly what they need - and I'm blown away when I'm on the receiving end of their gifts. I may not possess what they have, but I benefit from them every day - which is exactly how God designed it to work!
I'm grateful God taught me this lesson years ago, because as I walk into this amazing world of Spirit filled writers it's easy for me to envy what God is doing in other people's lives. But I've learned that God has a specific plan for my life and if I waste time envying others, I will miss the opportunity to do what He's called only me to do. Instead, I'm appreciating the blessings I receive from other writers and trusting God to use my unique gifts for His purpose.
What about you? Have you struggled with feelings of insecurity and inadequacy? Do you have a hard time being thankful for what God has given to others? Do you trust Him with your gifts?
Friday was our eleventh wedding anniversary and my mom had agreed to babysit, so Dave and I had an entire evening all to ourselves. Ahhh... Dave said he wanted to take me to my favorite Mexican restaurant and from there it was my choice. I thought it might be fun to see a movie, since we rarely go to the theater anymore, and he agreed to go, even though I know how much he hates being inside a movie theater in the summer time. He didn't complain, but he did hint that it was a beautiful evening to go golfing.
One thing I've known about Dave since we met in high school is his passion for the game of golf. He'd rather be on a golf course than almost anywhere. He used to golf five or six days a week and he worked on a golf course during high school and college. He majored in horticulture at Iowa State University, with an emphasis in turf management. The man loves to golf.
During this season of parenting both of us have had to sacrifice some of our hobbies and interests, and Dave has willingly given up golfing. He plays now and again, but it's nothing like before, especially since the twins were born.
When he mentioned playing golf on our anniversary date, I wasn't too crazy about the idea. I don't mind the game, I think it's relaxing and I occasionally watch some of the PGA Tour when I'm at my in-law's, but it didn't sound very romantic or exciting on Friday.
After giving it some thought, I realized that this was something I could do for my hubby as a way of honoring our marriage and thanking him for all that he does for our family. So we went golfing.
The evening was gorgeous and it was so much fun just walking with Dave from hole to hole, enjoying the quiet solitude and uninterrupted conversation. I was able to tease him when he made a bad shot and we laughed when I put two balls into a water hazard on hole number sixteen. It was exactly what we both needed and a wonderful way to spend our anniversary. It turns out that it was quite romantic, afterall.
What about you? If you had an evening all to yourself, what would you do? Any golfers out there?
Today my hubby and I celebrate eleven years of marriage and, as of this summer, we've officially known each other half our lives. We met when we were sixteen, before driver's licenses, wisdom teeth and graduation. When we still had a curfew, when our mothers would warn: "It's time to get off the phone now" and when we had to ask permission to go on a date.
I often marvel that at the age of sixteen I was able to see in him the man he would become and to recognize that he was the one I wanted to weave my life with. Even though we didn't know it then, each of us has been exactly who the other has needed. I'm so in awe of God for giving us that gift - because He knew.
Dave's uncle once asked me why I thought our marriage would last. I didn't even hesitate. I told him it would last because we'll be having a conversation for the rest of our lives. Whether it's good or bad, whether it's interesting or dull, we'll keep talking with each other until one of us is called home to Heaven. I want to know all I can about him - he fascinates me, challenges me, defends me, loves me, cares for me, cherishes me and holds me accountable. Who wouldn't want to spend the rest of their life getting to know a man like that? He has so much wisdom and I esteem him higher than any other person I know. He's always the first person I want to talk to and the one who I can be completely real with - and the crazy man loves me anyway!
weeks ago at a Twins game.
We have both grown in countless ways – but we continue to grow together. Our faith and relationship with Christ comes first and it's the foundation our marriage is built upon, without it we would be a weak structure, crumbling under the weight of life's storms.
Our children are a wonderful extension of our love for one another and they complete us in a way that nothing else ever could. I've told them that I searched the whole world to find the perfect man to be their daddy and I know I am blessed beyond reason, because I found him and married him.
What about you? Are you married? What anniversary will you be celebrating this year? If you're not married, what other celebrations do you have marked on your calendar?
I firmly believe that we must lead by example. If we want to get something done we need to do it ourselves. I get frustrated when I hear people complain, but never see them get involved to change anything.
This belief often overextends my schedule, and sometimes it drives my husband nuts, but I couldn't imagine living any other way.
I can't sit back and expect "them" to do it. I am "them" - we all are.
I was raised by two people who hold this same philosophy, so it comes as no surprise that I am bringing my own children along side me as I volunteer. I want to show them the great importance of investing in our community. I want them to continue the legacy of change and progress and my hope is that they fall in love with their home and take pride in it. I believe we need to aim our children at the targets we want them to hit and being a productive member of society is one of those targets. I also believe our children should learn how to interact with people from all walks of life and various age groups and volunteering is a great way to accomplish this.
We live in a modest sized community that is rich in character and charm. I love living here and I hope to make it a better place for my family and others who call it home. I'm an adult advisor on the Mayor's Youth Task Force and one area of need we've identified is a family friendly complex with a splash pad, skate park, walking trails, etc. Just last week we secured 20+ acres of land that we hope to develop for this purpose. Today we held one of many fundraisers and I think it was a great success with hundreds of people coming out to participate.
I had my girls by my side almost all day and I'm so proud of their hard work and diligence for the cause; they're excited for a splash pad, which makes it easier to volunteer! It would have been nice to sit at home on this beautiful June day, but I know how much this complex means for our town and, more importantly, how vital this lesson is for my children. I hope they continue giving back and making a difference for the rest of their lives.
After all their hard work they were able to enjoy some fun!


The NHL announced the fine Wednesday, saying it was the maximum amount allowed for the offense under the collective bargaining agreement.
Eakin and Krieder got into a fight early in the second period Tuesday. They became entangled along the boards, and the gloves came off. At one point, Kreider yanked off Eakin's helmet and whacked him in the head with it.
Each player received a five-minute fighting major. Both had a goal and an assist in the game, which the Stars won 7-6.


text:
Q: How to make a proper selection of an element's value from a BsonDocument So i explain, i have a controller that saves two informations in database. And the id is taken from one document to another one. I achieve this but my id is saved that way :
_id=57629cb900a09432b8b3ada4

But i want it like this :
57629cb900a09432b8b3ada4

I can't see how to do it because i'm taking the fist element of the bson document with the first() method.
If someone can help i put my controller just here :
EDIT : ADDED THE CODE PROVIDED BY @P57 (thanks to him) :
var id = objDocument[_id];

Becomes
string id = objDocument.GetElement("_id").Value.ToString();

So we have now :
public ActionResult LancerComparaison(ResultViewModel resultViewModel)
{
    if (resultViewModel!= null)
    {
        UserInformationViewModel info = resultViewModel.UserInformationViewModel;
        var client = new MongoClient("mongodb://localhost:27017");
        var objDatabase = client.GetDatabase("Test");
        var collection = objDatabase.GetCollection<BsonDocument>("UsersInformations");
        BsonDocument objDocument = new BsonDocument {
        {"Nom",info.NomUser},
        {"Prenom",info.PrenomUser},
        {"Email",info.EmailUser},
        };
        collection.InsertOne(objDocument);
        string id = objDocument.GetElement("_id").Value.ToString();
        Session["IdentifiantUserInformation"] = id;

        List<ObjetTransfert> listePrestationsObjetsTransferts = new List<ObjetTransfert>();
        ResultatComparaison resultatComparaison;
        ConvertGViewModelToGBd(resultViewModel, listePrestationsObjetsTransferts);
        _compaSBT.ComparerP(listePrestationsObjetsTransferts, out resultatComparaison,
            Enums.E.T);

        //Enregistrer d'abord le resultat en Bd
        resultatComparaison.IdentifiantResultatComparaison = new Guid().ToString();
        resultatComparaison.IdentifiantUserInformation = id.ToString();
        _resultatComparaisonService.Create(resultatComparaison);

        Session["IdentifiantResultatComparaison"] = resultatComparaison.Id;

        return View();
    }
    return null;
}

A: Use Split method.It will split the string into the array. The splitting character is given as the first parameter.
string[] tokens = "_id=57629cb900a09432b8b3ada4".Split('=');
tokens[0]; // _id
tokens[1]; // 57629cb900a09432b8b3ada4

In your code you can write instead of this
var id = objDocument.First()

this
var id = objDocument.First().Split('=')[1];

A: What about this?
string id = objDocument.GetElement("_id").Value

Instead of this...
var id = objDocument.First()

redpajama_set_name: RedPajamaStackExchange


text:
SPLASH 2014 (series) / Onward! 2014 (series) / Tao Xie
* ICSE 2018 * profile
ASE 2019 profile
ICSE 2019 profile
ICST 2020 profile
ISSTA 2017 profile
PLDI 2015 profile
Registered user since Mon 9 Mar 2015
Name: Tao Xie
Bio: Tao Xie is an Associate Professor in the Department of Computer Science at University of Illinois at Urbana-Champaign, USA since July 2013. Before then, he was an Associate Professor in the Department of Computer Science at North Carolina State University. He received his Ph.D. in Computer Science from the University of Washington in 2005, advised by David Notkin. Before that, he received an M.S. in Computer Science from the University of Washington in 2002, an M.S. in Computer Science from Peking University in 2000, advised by Hong Mei, and a B.S. in Computer Science from Fudan University in 1997. He has worked as a visiting researcher at Microsoft Research Redmond and Microsoft Research Asia. His research interests are in Software Engineering, with a focus on Software Testing, Debugging, and Analysis, Software Analytics, Software Security, Software Engineering for Mobile/Internet Computing, and Educational Software Engineering. He leads the Automated Software Engineering Research Group at Illinois, and is a member of the Programming Languages, Formal Methods, and Software Engineering (PL-FM-SE) area at Illinois.
He has contributed to broad software engineering and computing research communities with extensive professional services. He has served as the ACM SIGSOFT History Liaison in the SIGSOFT Executive Committee as well as a member and the SGB Liaison of the ACM History Committee. He is an ACM Distinguished Speaker and an IEEE Computer Society Distinguished Visitor. He received a National Science Foundation Faculty Early Career Development (CAREER) Award in 2009. He received a 2011 Microsoft Research Software Engineering Innovation Foundation (SEIF) Award, 2007 and 2013 Microsoft Research Awards, 2008, 2009, and 2010 IBM Faculty Awards, and a 2008 IBM Jazz Innovation Award. He received 2010 North Carolina State University Sigma Xi Faculty Research Award. He received the IEEE Software Best Software Engineering in Practice (SEIP) Paper Award at ICSE 2013, the ASE 2009 Best Paper Award, and an ACM SIGSOFT Distinguished Paper Award. His research has been supported by NSF, NIST, ARO, IBM, Microsoft Research, Fujitsu Lab, and ABB Research. He was Program Co-Chair of 2009 IEEE International Conference on Software Maintenance (ICSM) and Program Co-Chair of 2011 and 2012 International Working Conference on Mining Software Repositories (MSR). He is the Program Chair of 2015 International Symposium on Software Testing and Analysis (ISSTA). He has served on program committees of various conferences, including ICSE, ASE, ISSTA, and WWW.
Affiliation: University of Illinois at Urbana-Champaign
Personal website: http://web.engr.illinois.edu/~taoxie/
Onward! 2014 Committee Member in Program Committee within the Onward! Papers-track
SPLASH 2014 Committee Member in Program Committee within the OOPSLA-track

redpajama_set_name: RedPajamaCommonCrawl


'P $ Q' means 'P is not smaller than Q'.
'P @ Q' means 'P is neilher smaller than nor equal to Q'.
'P # Q' means 'P is neither greater than nor equal to Q'.
'P 8 Q' means 'P is neither greater than nor smaller than Q'.
'P ⋆ Q' means 'P is not greater than Q'.
Now in each of the following questions assuming the given statements to be true, find which of the four conclusions I, II, III and IV given below them is/are definitely true and give your answer accordingly.
W is either smaller than or equal to N. Therefore either III or IV is true.
(i) be a graduate in any discipline with atleast 60 percent marks.
(ii) have post qualification work experience of at least ten years in the Advances Section of a bank.
(iii) be at least 30 years and not more than 40 years as on 01.04.2010.
(iv) have secured at least 40 percent marks in the group discussion.
(A) at (i) above but has secured at least 50 percent marks in graduation and at least 60 percent marks in post graduation in any discipline the case is to be referred to the General Manager- Advances.
(B) at (ii) above but has total post qualification work experience of at least seven years out of which at least three years as Manager- Credit in a bank, the case is to be referred to Executive Director.
In each question below details of one candidate is given. You have to take one of the following courses of action based on the information provided and the conditions and sub-conditions given above and mark the number of that course of action as your answer. You are not to assume anything other than the information provided in each question. All these cases are given to you as on 01.04.2010.
Shobha Gupta has secured 50 percent marks in the Interview and 40 percent marks in the Group Discussion. She has been working for the past eight years out of which four years as Manager-Credit in a bank after completing her B.A, degree with 60 percent marks. She was born on 12th September 1978.
B. if the case is to be referred to General Manager-Advances.
Shobha Gupta does satisfy conditions (i), (B), (iii), (iv) and (v). Therefore, her case would be referred to Executive Director.
Rohan Maskare was born on 8th March 1974. He has been working in a bank for the past twelve years after completing his B.Com. degree with 70 percent marks. He has secured 50 percent marks in both the .Group Discussion and the Interview.
It is not mentioned Rohan Maskare worked in which section.
Prakash Gokhale was born on 4th August 1977. He has secured 65 percent marks in post graduation and 58 percent marks in graduation. He has been working for the past ten years in the Advances Department of a bank after completing his post graduation. He has secured 45 percent marks in the Group Discussion and 50 percent marks in the Interview.
Prakash Gokhale does satisfy conditions (A), (ii), (iii), (iv) and (v). Therefore, his case would be referred to General Manager - Advances.
Sudha Mehrotra has been working in the Advances department of a bank for the past twelve years after completing her B.Com. degree with 60 percent marks. She has secured 50 percent marks in the Group Discussion and 40 percent marks in the Interview. She was born on 15th February 1972.
Sudha Mehrotra does not satisfy condition (v).
Amit Narayan was born on 28th May 1974. He has been working in the Advances department of a bank for the past eleven years after completing his B.Sc. degree with 65 percent marks. He has secured 55 percent marks in the Group discussion and 50 percent marks in the interview.
Amit Narayan does satisfy all the conditions. Therefore, he can be selected.


text:
/**
 * Created with JetBrains WebStorm.
 * User: Jmarry
 * Date: 13-7-11
 * Time: 下午11:39
 * To change this template use File | Settings | File Templates.
 */
var media=require('../model/media'),
    uuid=require('node-uuid'),
    util=require('../../lib/utils'),
    qiniu=require('../../lib/qiniu');
exports.create=function(req,res,next){
    res.render('media/create',{title:'新建媒体',msg:req.flash('error'),current:3});
};
exports.index=function(req,res,next){
    res.render('media/list',{title:'媒体中心',current:3});
};
exports.add=function(req,res,next){
    var uploadfile=req.files.img,
        meta=req.body.meta,
        name=uuid.v4();
    if(uploadfile && /(jpg|png|jpeg|gif)$/i.test(uploadfile.type)){
        name+=(uploadfile.type.indexOf('jpg')>-1||uploadfile.type.indexOf('jpeg')>-1)
            ?'.jpg':uploadfile.type.indexOf('png')>-1
            ?'.png':uploadfile.type.indexOf('gif')>-1
            ?'.gif':'';
        qiniu.upload({file:uploadfile.path,meta:meta,fileName:name},function(resp){
            if(resp.code!=200){
                req.flash('error','上传cdn失败!');
                return res.redirect('/admin/medias/create');
            }
            media.create({name:uploadfile.name,link:name,meta:meta},function(err,rtn){
                if(err)return next(util.errors(err));
                res.redirect('admin/medias/');
            })
        });
    }else{
        req.flash('error','上传格式不正确');
        return res.redirect('/admin/medias/create');
    }
};
exports.list=function(req,res,next){
    var page=(req.query.page>0?req.query.page:1)- 1,
        query={
            prePage:10,
            page:page,
            criteria:{}
        };
    media.count(query.criteria,function(err,count){
        if(err)return next(err);
        media.list(query,function(err,docs){
            if(err)return next(err);
            res.locals.medias=docs;
            res.locals.pages=Math.ceil(count/query.prePage);
            res.locals.page=page+1;
            next();
        });
    });
};
exports.del=function(req,res,next){
    var mediaId=req.params.mid;
    media.findOne({_id:mediaId},function(err,doc){
        if(err){
            req.flash('error',util.errors(err));
            return res.redirect('/admin/medias/create/');
        }
        doc.remove(function(err,obj){
            if(err){
                req.flash('error',util.errors(err));
                return res.redirect('/admin/medias/create/');
            }
            res.redirect('/admin/medias/');
        });
    });
};

redpajama_set_name: RedPajamaGithub


Sony Ericsson planning to take on the iPhone with a gaming/phone combo?
Once again reports are surfacing about Sony challenging the iPhone with a combo gaming/phone device. Yahoo is reporting that as early as next month, the Japanese consumer electronics firm will put together a team that will try to merge the gaming functions of a PSP with the mobile phone capabilities of a Sony Ericsson cellphone. Software companies like Square Enix and Capcom are turning their attention to making games for the iPhone as the latter device attempts to make a wave in mobile gaming. The Japanese-Swedish joint venture might decide a gaming phone could blunt the iPhone's attack on the PSP's territory while pushing a Sony Ericsson cellphone into the highest level of the smartphone market, something that the Xperia X1 failed to do, and challenge models like the iPhone 3GS, Palm Pre and the BlackBerry Storm. Sony has so far declined to comment on the report.
that phone is like the size of a brick lol.(even tho ik of course it's not the final product) but i wouldn't buy it; i like my psp and sony ericsson w580i thee way it is; seperate. --just my opinion.
I think thats just the concept, if it is a little thinner than it looks that form factor will be a modest success.
so what b_adams is saying is that he loves to carry two devices if one of the devices is small.
why not make the psp go (the one with the slider) & add phone function. isnt wifi enable already?


text:
#import "ZipArchive.h"
#import "zlib.h"
#import "zconf.h"
#include "minizip/zip.h"
#include "minizip/unzip.h"

@interface NSFileManager(ZipArchive)
- (NSDictionary *)_attributesOfItemAtPath:(NSString *)path followingSymLinks:(BOOL)followingSymLinks error:(NSError **)error;
@end

@interface ZipArchive ()

-(void) OutputErrorMessage:(NSString*) msg;
-(BOOL) OverWrite:(NSString*) file;
-(NSDate*) Date1980;

@property (nonatomic,copy) NSString* password;
@end

@implementation ZipArchive
@synthesize delegate = _delegate;
@synthesize numFiles = _numFiles;
@synthesize password = _password;
@synthesize unzippedFiles = _unzippedFiles;
@synthesize progressBlock = _progressBlock;
@synthesize stringEncoding = _stringEncoding;

-(id) init
{
    return [self initWithFileManager:[NSFileManager defaultManager]];
}

-(id) initWithFileManager:(NSFileManager*) fileManager
{
	if( self=[super init] )
	{
		_zipFile = NULL;
        _fileManager = fileManager;
        self.stringEncoding = NSUTF8StringEncoding;
	}
	return self;
}

-(void) dealloc
{
    // close any open file operations
	[self CloseZipFile2];
    [self UnzipCloseFile];

    // release retained/copied properties.
    [_password release];
    [_delegate release];
    [_unzippedFiles release];

	[super dealloc];
}

/**
 * Create a new zip file at the specified path, ready for new files to be added.
 *
 * @param zipFile     the path of the zip file to create
 * @returns BOOL YES on success
 */

-(BOOL) CreateZipFile2:(NSString*) zipFile
{
	_zipFile = zipOpen( (const char*)[zipFile UTF8String], 0 );
	if( !_zipFile )
		return NO;
	return YES;
}

/**
 * Create a new zip file at the specified path, ready for new files to be added.
 *
 * @param zipFile     the path of the zip file to create
 * @param password    a password used to encrypt the zip file
 * @returns BOOL YES on success
 */

-(BOOL) CreateZipFile2:(NSString*) zipFile Password:(NSString*) password
{
	self.password = password;
	return [self CreateZipFile2:zipFile];
}

/**
 * add an existing file on disk to the zip archive, compressing it.
 *
 * @param file    the path to the file to compress
 * @param newname the name of the file in the zip archive, ie: path relative to the zip archive root.
 * @returns BOOL YES on success
 */

-(BOOL) addFileToZip:(NSString*) file newname:(NSString*) newname;
{
	if( !_zipFile )
		return NO;
//	tm_zip filetime;
	time_t current;
	time( &current );

	zip_fileinfo zipInfo = {{0}};
	zipInfo.dosDate = (unsigned long) current;

    NSError* error = nil;
	NSDictionary* attr = [_fileManager _attributesOfItemAtPath:file followingSymLinks:YES error:&error];
	if( attr )
	{
		NSDate* fileDate = (NSDate*)[attr objectForKey:NSFileModificationDate];
		if( fileDate )
		{
			zipInfo.dosDate = [fileDate timeIntervalSinceDate:[self Date1980] ];
		}
	}

	int ret ;
	NSData* data = nil;
	if( [_password length] == 0 )
	{
		ret = zipOpenNewFileInZip( _zipFile,
								  (const char*) [newname cStringUsingEncoding:self.stringEncoding],
								  &zipInfo,
								  NULL,0,
								  NULL,0,
								  NULL,//comment
								  Z_DEFLATED,
								  Z_DEFAULT_COMPRESSION );
	}
	else
	{
		data = [ NSData dataWithContentsOfFile:file];
		uLong crcValue = crc32( 0L,NULL, 0L );
		crcValue = crc32( crcValue, (const Bytef*)[data bytes], (unsigned int)[data length] );
		ret = zipOpenNewFileInZip3( _zipFile,
								  (const char*) [newname cStringUsingEncoding:self.stringEncoding],
								  &zipInfo,
								  NULL,0,
								  NULL,0,
								  NULL,//comment
								  Z_DEFLATED,
								  Z_DEFAULT_COMPRESSION,
								  0,
								  15,
								  8,
								  Z_DEFAULT_STRATEGY,
								  [_password cStringUsingEncoding:NSASCIIStringEncoding],
								  crcValue );
	}
	if( ret!=Z_OK )
	{
		return NO;
	}
	if( data==nil )
	{
		data = [ NSData dataWithContentsOfFile:file];
	}
	unsigned int dataLen = (unsigned int)[data length];
	ret = zipWriteInFileInZip( _zipFile, (const void*)[data bytes], dataLen);
	if( ret!=Z_OK )
	{
		return NO;
	}
	ret = zipCloseFileInZip( _zipFile );
	if( ret!=Z_OK )
		return NO;
	return YES;
}

/**
 * Close a zip file after creating and added files to it.
 *
 * @returns BOOL YES on success
 */

-(BOOL) CloseZipFile2
{
	self.password = nil;
	if( _zipFile==NULL )
		return NO;
	BOOL ret =  zipClose( _zipFile,NULL )==Z_OK?YES:NO;
	_zipFile = NULL;
	return ret;
}

/**
 * open an existing zip file ready for expanding.
 *
 * @param zipFile     the path to a zip file to be opened.
 * @returns BOOL YES on success
 */

-(BOOL) UnzipOpenFile:(NSString*) zipFile
{
    // create an array to receive the list of unzipped files.
    if (_unzippedFiles) [_unzippedFiles release];
    _unzippedFiles = [[NSMutableArray alloc] initWithCapacity:1];

	_unzFile = unzOpen( (const char*)[zipFile UTF8String] );
	if( _unzFile )
	{
		unz_global_info  globalInfo = {0};
		if( unzGetGlobalInfo(_unzFile, &globalInfo )==UNZ_OK )
		{
            _numFiles = globalInfo.number_entry;
			NSLog(@"%lu entries in the zip file", globalInfo.number_entry);
		}
	}
	return _unzFile!=NULL;
}

/**
 * open an existing zip file with a password ready for expanding.
 *
 * @param zipFile     the path to a zip file to be opened.
 * @param password    the password to use decrpyting the file.
 * @returns BOOL YES on success
 */

-(BOOL) UnzipOpenFile:(NSString*) zipFile Password:(NSString*) password
{
	self.password = password;
	return [self UnzipOpenFile:zipFile];
}

/**
 * Expand all files in the zip archive into the specified directory.
 *
 * If a delegate has been set and responds to OverWriteOperation: it can
 * return YES to overwrite a file, or NO to skip that file.
 *
 * On completion, the property `unzippedFiles` will be an array populated
 * with the full paths of each file that was successfully expanded.
 *
 * @param path    the directory where expanded files will be created
 * @param overwrite    should existing files be overwritten
 * @returns BOOL YES on success
 */

-(BOOL) UnzipFileTo:(NSString*) path overWrite:(BOOL) overwrite
{
	BOOL success = YES;
    int index = 0;
    int progress = -1;
	int ret = unzGoToFirstFile( _unzFile );
	unsigned char		buffer[4096] = {0};
	if( ret!=UNZ_OK )
	{
		[self OutputErrorMessage:@"Failed"];
	}

	const char* password = [_password cStringUsingEncoding:NSASCIIStringEncoding];

	do{
        @autoreleasepool {
            if( [_password length]==0 )
                ret = unzOpenCurrentFile( _unzFile );
            else
                ret = unzOpenCurrentFilePassword( _unzFile, password );
            if( ret!=UNZ_OK )
            {
                [self OutputErrorMessage:@"Error occurs"];
                success = NO;
                break;
            }
            // reading data and write to file
            int read ;
            unz_file_info	fileInfo ={0};
            ret = unzGetCurrentFileInfo(_unzFile, &fileInfo, NULL, 0, NULL, 0, NULL, 0);
            if( ret!=UNZ_OK )
            {
                [self OutputErrorMessage:@"Error occurs while getting file info"];
                success = NO;
                unzCloseCurrentFile( _unzFile );
                break;
            }
            char* filename = (char*) malloc( fileInfo.size_filename +1 );
            unzGetCurrentFileInfo(_unzFile, &fileInfo, filename, fileInfo.size_filename + 1, NULL, 0, NULL, 0);
            filename[fileInfo.size_filename] = '\0';

            // check if it contains directory
            NSString * strPath = [NSString stringWithCString:filename encoding:self.stringEncoding];
            BOOL isDirectory = NO;
            if( filename[fileInfo.size_filename-1]=='/' || filename[fileInfo.size_filename-1]=='\\')
                isDirectory = YES;
            free( filename );
            if( [strPath rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"/\\"]].location!=NSNotFound )
            {// contains a path
                strPath = [strPath stringByReplacingOccurrencesOfString:@"\\" withString:@"/"];
            }
            NSString* fullPath = [path stringByAppendingPathComponent:strPath];

            if( isDirectory )
                [_fileManager createDirectoryAtPath:fullPath withIntermediateDirectories:YES attributes:nil error:nil];
            else
                [_fileManager createDirectoryAtPath:[fullPath stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:nil];

            FILE* fp = NULL;
            do
            {
                read = unzReadCurrentFile(_unzFile, buffer, 4096);
                if (read >= 0)
                {
                    if (fp == NULL) {
                        if( [_fileManager fileExistsAtPath:fullPath] && !isDirectory && !overwrite )
                        {
                            if( ![self OverWrite:fullPath] )
                            {
                                // don't process any more of the file, but continue
                                break;
                            }
                        }
                        if (!isDirectory) {
                            fp = fopen( (const char*)[fullPath UTF8String], "wb");
                            if (fp == NULL) {
                                [self OutputErrorMessage:@"Failed to open output file for writing"];
                                break;
                            }
                        }
                    }
                    fwrite(buffer, read, 1, fp );
                }
                else // if (read < 0)
                {
                    ret = read; // result will be an error code
                    success = NO;
                    [self OutputErrorMessage:@"Failed to read zip file"];
                }
            } while (read > 0);

            if (fp)
            {
                fclose( fp );

                // add the full path of this file to the output array
                [(NSMutableArray*)_unzippedFiles addObject:fullPath];

                // set the orignal datetime property
                if( fileInfo.dosDate!=0 )
                {
                    NSDate* orgDate = [[NSDate alloc]
                                       initWithTimeInterval:(NSTimeInterval)fileInfo.dosDate
                                       sinceDate:[self Date1980] ];

                    NSDictionary* attr = [NSDictionary dictionaryWithObject:orgDate forKey:NSFileModificationDate]; //[_fileManager fileAttributesAtPath:fullPath traverseLink:YES];
                    if( attr )
                    {
                        //	[attr  setValue:orgDate forKey:NSFileCreationDate];
                        if( ![_fileManager setAttributes:attr ofItemAtPath:fullPath error:nil] )
                        {
                            // cann't set attributes
                            NSLog(@"Failed to set attributes");
                        }

                    }
                    [orgDate release];
                    orgDate = nil;
                }

            }

            if (ret == UNZ_OK) {
                ret = unzCloseCurrentFile( _unzFile );
                if (ret != UNZ_OK) {
                    [self OutputErrorMessage:@"file was unzipped but failed crc check"];
                    success = NO;
                }
            }

            if (ret == UNZ_OK) {
                ret = unzGoToNextFile( _unzFile );
            }

            if (_progressBlock && _numFiles) {
                index++;
                int p = index*100/_numFiles;
                progress = p;
                _progressBlock(progress, index, _numFiles);
            }
        }
	} while (ret==UNZ_OK && ret!=UNZ_END_OF_LIST_OF_FILE);
	return success;
}

/**
 * Close the zip file.
 *
 * @returns BOOL YES on success
 */

-(BOOL) UnzipCloseFile
{
	self.password = nil;
	if( _unzFile ) {
		int err = unzClose( _unzFile );
        _unzFile = nil;
        return err ==UNZ_OK;
    }
	return YES;
}

/**
 * Return a list of filenames that are in the zip archive.
 * No path information is available as this can be called before the zip is expanded.
 *
 * @returns NSArray list of filenames in the zip archive.
 */

-(NSArray*) getZipFileContents     // list the contents of the zip archive. must be called after UnzipOpenFile
{
    int ret = unzGoToFirstFile( _unzFile );
    NSMutableArray * allFilenames = [NSMutableArray arrayWithCapacity:40];

    if( ret!=UNZ_OK )
    {
        [self OutputErrorMessage:@"Failed"];
    }

    const char* password = [_password cStringUsingEncoding:NSASCIIStringEncoding];

    do{
        if( [_password length]==0 )
            ret = unzOpenCurrentFile( _unzFile );
        else
            ret = unzOpenCurrentFilePassword( _unzFile, password );
        if( ret!=UNZ_OK )
        {
            [self OutputErrorMessage:@"Error occured"];
            break;
        }

        // reading data and write to file
        unz_file_info   fileInfo ={0};
        ret = unzGetCurrentFileInfo(_unzFile, &fileInfo, NULL, 0, NULL, 0, NULL, 0);
        if( ret!=UNZ_OK )
        {
            [self OutputErrorMessage:@"Error occurs while getting file info"];
            unzCloseCurrentFile( _unzFile );
            break;
        }
        char* filename = (char*) malloc( fileInfo.size_filename +1 );
        unzGetCurrentFileInfo(_unzFile, &fileInfo, filename, fileInfo.size_filename + 1, NULL, 0, NULL, 0);
        filename[fileInfo.size_filename] = '\0';

        // check if it contains directory
        NSString * strPath = [NSString stringWithCString:filename encoding:NSASCIIStringEncoding];
        free( filename );
        if( [strPath rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"/\\"]].location!=NSNotFound )
        {// contains a path
            strPath = [strPath stringByReplacingOccurrencesOfString:@"\\" withString:@"/"];
        }

        // Copy name to array
        [allFilenames addObject:strPath];

        unzCloseCurrentFile( _unzFile );
        ret = unzGoToNextFile( _unzFile );
    }  while( ret==UNZ_OK && UNZ_OK!=UNZ_END_OF_LIST_OF_FILE );

    // return an immutable array.
    return [NSArray arrayWithArray:allFilenames];
}

#pragma mark wrapper for delegate

/**
 * send the ErrorMessage: to the delegate if it responds to it.
 */
-(void) OutputErrorMessage:(NSString*) msg
{
	if( _delegate && [_delegate respondsToSelector:@selector(ErrorMessage:)] )
		[_delegate ErrorMessage:msg];
}

/**
 * send the OverWriteOperation: selector to the delegate if it responds to it,
 * returning the result, or YES by default.
 */

-(BOOL) OverWrite:(NSString*) file
{
	if( _delegate && [_delegate respondsToSelector:@selector(OverWriteOperation:)] )
		return [_delegate OverWriteOperation:file];
	return YES;
}

#pragma mark get NSDate object for 1980-01-01
-(NSDate*) Date1980
{
	NSDateComponents *comps = [[NSDateComponents alloc] init];
	[comps setDay:1];
	[comps setMonth:1];
	[comps setYear:1980];
	NSCalendar *gregorian = [[NSCalendar alloc]
							 initWithCalendarIdentifier:NSGregorianCalendar];
	NSDate *date = [gregorian dateFromComponents:comps];

	[comps release];
	[gregorian release];
	return date;
}

@end

@implementation NSFileManager(ZipArchive)

- (NSDictionary *)_attributesOfItemAtPath:(NSString *)path followingSymLinks:(BOOL)followingSymLinks error:(NSError **)error
{
    // call file manager default action, which is to not follow symlinks
    NSDictionary* results = [self attributesOfItemAtPath:path error:error];
    if (followingSymLinks && results && (error ? *error == nil : YES)) {
        if ([[results fileType] isEqualToString:NSFileTypeSymbolicLink]) {
            // follow the symlink
            NSString* realPath = [self destinationOfSymbolicLinkAtPath:path error:error];
            if (realPath && (error ? *error == nil : YES)) {
                return [self _attributesOfItemAtPath:realPath followingSymLinks:followingSymLinks error:error];
            } else {
                // failure to resolve symlink should be an error returning nil and error will already be set.
                return nil;
            }
        }
    }
    return results;
}

@end


At approximately 10:26 p.m. on July 26, 2016, a 22-year-old motorist named Tyler Tate Dahlin was involved in a single-vehicle rollover accident at mile marker 8 along Montana Highway 314 near Decker in Big Horn County. Also involved in this crash was Dahlin's passenger and girlfriend, 23-year-old Anna Rowland.
Tragically, Anna was pronounced dead at the scene and the county coroner later ruled her death as caused by blunt force trauma to the head. Trooper Dave Munson of the Montana Highway Patrol led the on scene investigation into the circumstances surrounding the wreck. He concluded as the vehicle (a 1999 Chevrolet Blazer sport utility vehicle) entered a long left-hand curve, it began to veer off the right side of the road momentarily, and an overcorrection to the left caused the vehicle to engage in a "broad side slide" across both lanes of the highway, eventually rolling two complete times.
The Highway Patrol investigation concluded that factors contributing to this accident included driving in an erratic, reckless, negligent or aggressive manner, impairment due to alcohol or drugs, failure to maintain proper lane travel, the passenger possibly distracting the driver, and over-steering. Tyler Dahlin claimed that Anna had leaned over to kiss him, leading to his loss of control.
Dahlin was charged in February 2017, initially pleading not guilty to vehicular homicide in the Big Horn County District Court. He eventually pleaded guilty to negligent endangerment and careless driving resulting in death at the Big Horn County Justice Court in July 2018.
Unfortunately, my office failed to provide any notification of the July 2018 change of plea and sentencing hearing in the County Justice Court to Randy Rowland, the surviving father of Anna Rowland.
Randy previously had expressed disappointment in the proposed resolution of the case and great interest in addressing the sentencing judge. The lack of notification to Randy Rowland was an unfortunate complication to the extraordinary grief and loss the family of Anna Rowland must live with the rest of their lives.
For the family of Anna Rowland, now is a time of great hardship and – God willing, in time – healing. As far too many Big Horn County citizens know, coping with the unexpected loss of a loved one due to tragedy on the roads is a lifelong process and not an easy one at that. Accordingly, we must give great latitude to the surviving family members of this tragic loss. The family of Anna Rowland and all those in our community who have experienced similar losses due to accidents on public roadways must be embraced with love and respect, more so now than ever.
Nothing can be said to defend the failure to notify Randy Rowland. What should be pointed out is that being a public prosecutor is often not an easy job – it is thankless and very stressful for anyone engaged in this daily grind that cares for the community; they are at duty to help protect.
In Big Horn County, the forces of injustice are constantly attacking the promise and hope of our ideals and wishes for a better community.
My office will get better in this fight for justice – we absolutely must. We all know in life that great challenges require great efforts in order to achieve success. With a foundation of prayer and faith driving an unrelenting commitment to justice, focused by clarity of vision and dynamic thinking, we can help lay the groundwork for a revitalized community and help restore a real sense of justice, public safety, and law and order.
We will continue the good fight, and get better each and every day.
Big Horn County truly deserves better.