text:
Da Dao Ping is a poor, remote village in the Chinese Guangdong province. The 200 families find it difficult to grind the rice they grow, particularly during the rainy season, as the road to the nearest mill is long and impassable. The villagers' general living conditions would improve significantly if the village had its own rice mill.
An earmarked gift of money from the Chinese sales company has made the erection of a mill possible, and the mill will be put into service shortly. Grundfos also supports the local school through sponsorship of a computer and other equipment.
Another village in the Guangdong province receives support from Grundfos in a similar three-year project, where villagers are given assistance to supplement their own efforts rather than pure gifts of money. Efforts are made to back up initiatives that can make the villagers self-sufficient with necessities of life by contributing equipment and know-how.


text:
Hi all,
Here's is the full vignette I put together combining our four Austerlitz sets.
As some of you may have noticed, the whole vignette idea is freely based on Canton Woodville's painting which titles the vignette. We've tried to mend some historical inaccuracies, and adapt the painting's two dimension view to 3D (tricky that is!).
Huge close up shots are really unforgiving with the brushstrokes in this small-scale figures, but I think they are helpful for those who may want to examine how I work on this scale, and how results are achieved.
In any case, I hope you like how it's turned out.
Thank you for your support.

subset: commoncrawl


text:
George Clooney loves politics, knows the issues and ... won't be running for office.
The hunky actor, who raised money for New Orleans after Katrina, Haiti after the earthquake and the Sudan amid ethnic strife, told Newsweek he knows he has too many skeletons in his closet to survive a campaign. Not that he sounds sorry about it.
"I didn't live my life in the right way for politics, you know ... I [was with] too many chicks and did too many drugs, and that's the truth," Clooney said in an eight-page article on the actor's humanitarian efforts in the Sudan.
U.S. & World
Owning up to past indiscretions would have to come earlier, said Clooney. A rogue determined to clean up his image would have to come clean sooner in life.
"[They] would start from the beginning by saying, 'I did it all. I drank the bong water. Now let's talk about issues.' That's gonna be my campaign slogan: 'I drank the bong water,'" he said.
Clooney said he and socially-minded stars like Bono will continue to use their celebrity clout to sway the media, which he claims has "abdicated" its "responsibility."
"We can't make policy, but we can 'encourage' politicians more than ever before," the actor said. "Bono's model really worked. There is more attention on celebrity than ever before — and there is a use for that besides selling products."
Clooney said he admires several other younger stars for their own interest in helping others in embattled nations.
"A lot of the young actors I see coming up in the industry are not just involved, but knowledgeable on a subject and then sharing that with fans," Clooney said. "No one's just a 'peace activist' anymore — they have a specialty."
Selected Reading: Access Hollywood, Newsweek, IMDb.


text:
Cross-posted from Talk Tyria. As always, please go there if you want to comment on the article. Thank you. :)
As I said in my last entry here on Talk Tyria, Nerdy Bookahs had been invited to the EUFanDay that took place this Monday and Tuesday in Brighton. I was the one representing our blog there (a first post about this went up on our blog. It includes a growing link collection for write-ups etc. from the EUFanDay). As part of this event, we got to talk with some of the developers about Guild Wars 2. Or rather, each of us (the invited fan sites) were allowed to ask one question. I'd collected a few more than just that, so that was a bit sad. Fortunately, I didn't have as many questions as some others, so the disappointment from those who sent in their questions wasn't that big on my site. ;)
Tasha Darke and Dutch Sunshine have just posted the transcription of the interview. You can find the first part on her blog and the second one on GuildMag.
As those two already transcribed the interview, I will refrain from doing the same. It's a lot of work and time, after all (thank you for doing that, by the way!). Time which I rather want to spend on ranting and musing about which we got to know from the interview. ;)
I'll assume that you've read the interview now. But I'll try to write in a way that you know what I'm talking about even if you haven't. ;) As I said, we had about 25 people (give or take 3) who all asked one question. So the questions were very mixed. We had a few about PvP and what we now know is that ArenaNet want to have structured PvP as an esport. We don't know anything new about the observer mode but it's probably a safe bet that they'll do everything they can to include this as fast as possible post-launch because it's needed if they want it to succeed as esport. Other than the observer mode, I don't see a reason why they shouldn't succeed here. Every character in structured PvP is the same level, has the same quality gear, access to all skills, etc. They also want their structured PvP (and WvW) to be easy to understand and get into. Overflow shards will also allow you to join structured PvP matches (but not WvW), so even if your server is crowded, you can still join those PvP matches. From the interview, I take it that we can expect some kind of announcement about additional PvP maps before release. They mentioned one that has lots of underwater combat and a pirate ship! Another one is supposedly going to make GW1 players feel nostalgic.
On to another area of the game, the community. It was stated again that there will be no restrictions or penalties for switching guilds. You're supposed to be able to switch whenever you feel like it. How that works in the end remains to be seen. It requires us to let go of what we've gotten used to (it really shouldn't surprise us anymore as it's not the only thing that will work differently than in previous MMOs). Another thing that a lot of people are worried about is how the fansites will survive (I think there was a huge discussion about this on guildwars2guru) when Guild Wars 2 will have official forums. Regina said that while they will have less time, they're still going to read the inofficial forums, fan sites etc. and that there will, of course, be people who'll rather post on non-official sites than on the official ones out of fear of being censored on the official forums. If you ask me, I think it'll be like we have it now: There isn't just ONE fan site and ONE blog out there. We have so many different ones and so far, there's space for all of them. Because people have different preferences and thus, will want to post on one site but not on the other. The official forum will just be "one more" site that you can go to but it won't be necessary. If all you want is get news about the game and chat with a few friends, why not do that where you're currently doing it already? There's no need to move on to the official forums as ArenaNet won't ask us to shut down our fan sites or blogs.
Something that disappointed me greatly were the answers about the customization for female humans mostly. ArenaNet want them to be idealized and beautiful. So no wrinkles, scars, etc. From what I have seen in pictures (or the customization videos from GamesCom), it looks like all female humans are dolls. I'd really like there to be the option to have different faces (I'm thinking of Warhammer Online here which made it possible to add scars. We're fighting dragons here, after all! It'd make sense to have scars!). But oh well, it can't be changed, I guess. And since I want to play Asura and Charr anyway, I don't really need to worry about the humans. The thing that then made me squeal again was when they mentioned that there will be dances. I feared that we wouldn't get those (again, like in Warhammer Online where I first realised that I really love fluff like that and I miss it when it's not there… just like minipets, emotes,… – thankfully, Guild Wars 2 will have all of those!).
One last thing that I want to comment on is the question by gaming-insight.de about where to get the "good items" (that is, the high-level armor). ArenaNet's philosophy about how we should be playing the game is "do what is fun for you". In other words: If you enjoy WvW, you should be able to get the gear from WvW. If you enjoy crafting, you should be able to get similar gear with similar stats (in power) from crafting, and so on. However, certain looks will only be obtainable through WvW, crafting etc. So that when you see a player in a certain armor, you know they have done WvW a lot. But they're not more powerful than you are when it comes to the stats they have on their armor. If you ask me, this is a great direction and one they've already done in Guild Wars 1. There's nothing wrong with having bragging rights. But make them about the look/uniqueness of the gear and not about the stats on the gear! This will make the game much better than handing out gear with much better stats because it means that the whole game world remains open to you even if you decide to ignore a certain part.


text:
Here Kitty! Twinkle Twinkle Little Star. Man Hypnotizes Rabbit! AcceleRoundup 4/15
It's finicky, diffident, and loves fish. OK, not really, but there's a project at the University of Michigan to biologically model a computer after a feline brain. "A cat can recognize a face faster and more efficiently than a supercomputer."Read More »


text:
Video Sources 67600 Views
what going on?
Ferdinand, a little bull, prefers sitting quietly under a cork tree just smelling the flowers versus jumping around, snorting, and butting heads with other bulls. As Ferdinand grows big and strong, his temperament remains mellow, but one day five men come to choose the "biggest, fastest, roughest bull" for the bullfights in Madrid and Ferdinand is mistakenly chosen. Based on the classic 1936 children's book by Munro Leaf.
Original title Ferdinand
IMDb Rating N/A N/A votes
TMDb Rating 6.4
Ferdinand (voice)
Angus (voice)
Bones (voice)
Cuatro (voice)
Lupe (voice)
Klaus (voice)
El Primero (voice)
Moreno (voice)
Paco (voice)
Una (voice)


text:
First let us start out by saying that we are completely biased here. We have been online as a Stephenie Meyer fansite since March 2006. And because of our relationship built over three years with Stephenie Meyer, we have no reason to doubt her word. So when the story first broke today on TMZ, we decided to do several things:
1. We looked at the version of the book in question that is available online
2. We asked Little Brown the publishing company for an official response
3. We started to research Ms. Scott herself
So we wrote up our preliminary findings here. Now what we found particularly interesting is that the attorney involved then decided to give a follow up to MTV. That's right, MTV. It's a unique tactic first TMZ now MTV. Could it be that he has something for initials, or is it possibly that those sites generally have a target audience that mirrors the demographic Ms. Scott's novel and career are directed towards? Oh heck, maybe it's just sheer coincidence.
As many of you know, much of Breaking Dawn came from Stephenie's first sequel she wrote to Twilight called Forever Dawn. In fact, Alphie got to read this book back in February of 2006 and stands by what Stephenie says on her website.
"The basic story [between Forever Dawn and Breaking Dawn] is the same. Bella and Edward get married and go to Isle Esme for their honeymoon. Bella gets pregnant with Renesmee. The birth just about kills Bella, but Edward makes her a vampire in time. Jacob imprints on Renesmee. Alice has a vision of the Volturi coming to destroy the Cullens with the "immortal child" as their excuse. Alice bails. Bella's shielding abilities turn the tide in the Cullen's favor, along with Alice bringing home another half-vampire to prove that Nessie isn't a danger."
We decided to do some more research. We wanted to see for ourselves when Ms. Scott actually copyrighted her book. Well we got a whole lot more than we bargained for. We not only looked up Ms. Scott, but Stephenie Meyer as well. We were after the date that Twilight was copyrighted. Little did we know that not only was Twilight copyrighted, but so is Forever Dawn. This was news to us.
The following information is readily viewable to anyone doing a simple site search at the copyright office. If anyone had thought to try this a year ago they would have had a hell of a spoiler in the name of the Application Title. additionally Stephenie has stated in various interviews and as reflected in her "craptstic covers" that she originally toyed around with publishing under a pen name that included her maiden name of Morgan. You can see that name reflected in the registration as well.
Forever dawn.
|Type of Work:
|Registration Number / Date:
|TXu001163060 / 2004-01-05
|Application Title:
|Forever dawn.
|241 p.
|Copyright Claimant:
|Stephenie Morgan Meyer (Morgan Meyer)
|Date of Creation:
|Rights and Permissions:
|Rights & permissions info. on original appl. in C.O.
|Meyer, Stephenie Morgan
|Meyer, Morgan
Now when one looks up Ms. Scott's work what is discovered is that nothing was legally filed until AFTER, Breaking Dawn was published. Now the work itself (though not filed for copyright) was online starting in 2006 which is a full two years after Stephenie Meyer filed her Forever Dawn manuscript:
|Type of Work:
|Registration Number / Date:
|Application Title:
|The Nocturne.
|The Nocturne.
|Electronic file (eService)
|Copyright Claimant:
|Jordan Scott.
|Date of Creation:
|Date of Publication:
|Nation of First Publication:
|United States
|Authorship on Application:
|Jordan S Scott, 1988- ; Domicile: United States; Citizenship: United States. Authorship: Entire text, editing, orginal work.
|Scott, Jordan S, 1988-
|Scott, Jordan
So all in all, given the above easily accessible information, we are satisfied with Stephenie Meyer's version of events.


text:
OK-SAFE, Inc. – This was forwarded by a friend in Idaho. A few key legislators have signed a letter urging the state Governor's to reject Obamacare State Exchanges. Twelve Senators and 61 Legislators have signed the letter already – don't you think OK Governor Mary Fallin should sign this letter, too?
See below for details and a link to the letter.
DeMint, Bachmann, Jordan Urge Governors to Reject Obamacare State Exchanges.
Twelve Senators, 61 Representatives join them in sending a letter to all 50 governors
(Washington, D.C.) Senator Jim DeMint (SC), Congresswoman Michele Bachmann (MN-06) and Congressman Jim Jordan (OH-04) sent a letter to all 50 governors urging them to oppose the implementation of the state health care exchanges mandated under President Obama's health care law. Twelve Senators and 61 Representatives joined them in writing in opposition to these exchanges, which could cost businesses up to $3,000 per employee.
"Now that we know the courts will not save us from this harmful and unsustainable law, we urge all governors to join our fight full repeal by stopping its implementation," said DeMint. "Americans have loudly rejected this law because it raises costs, lowers quality of care, and hikes taxes. The President's health care law will not reform anything, but will hurt state budgets, destroy jobs, and reduce patient choices. States should reject these complex and costly exchanges. We cannot build a free market health care system on this flawed structure of centralized government control, we must repeal all of it and start over with commonsense solutions that make health care more affordable and accessible for every American."
"While Republicans in Congress will continue to push for a full repeal of Obamacare, the states can take immediate action to reject these exchanges that will increase health care costs and add more layers of bureaucratic red tape. I encourage all 50 governors to do what's best for the American people. They should refuse to implement an exchange and instead work towards common sense solutions that lower costs and return important health care decisions to patients and their doctors," said Bachmann.
"The harmful impact on jobs is just one of many reasons we remain committed to fully repealing this law. If governors want to raise the cost of hiring people in their states, they should create an Obamacare exchange. If they want more jobs in their state, they should not. It's that simple," said Jordan.
The text of the letter is included below, and a list of signers is available here.
Dear Governors:
The Supreme Court has ruled significant parts of the Medicaid expansion of the President's health care law unconstitutional as well as ruling that the individual mandate violated the Commerce Clause and will therefore be implemented as a punitive tax on the middle class. This presents us with a critical choice: Do we allow this reprehensible law to move forward or do we fully repeal it and start over with commonsense solutions? The American people have made it clear that they want us to throw this law out in its entirety.
As members of the U.S. Congress, we are dedicated to the full repeal of this government takeover of healthcare and we ask you to join us to oppose its implementation.
Most importantly, we encourage you to oppose any creation of a state health care exchange mandated under the President's discredited health care law.
These expensive, complex, and intrusive exchanges impose a threat to the financial stability of our already-fragile state economies with no certainty of a limit to total enrollment numbers. Resisting the implementation of exchanges is good for hiring and investment. The law's employer mandate assesses penalties – up to $3,000 per employee – only to businesses who don't satisfy federally-approved health insurance standards and whose employees receive "premium assistance" through the exchanges. The clear language of the statute only permits federal premium assistance to citizens of states who create a state-based exchange. However, the IRS recently finalized a regulation that contradicts the law by allowing the federal government to provide premium assistance to citizens in those states that have not created exchanges. The IRS had no authority to finalize
such a regulation. By refusing to create an exchange, you will assist us in Congress to repeal this violation which will help lower the costs of doing business in your state, relative to other states that keep these financially draining exchanges in place.
State-run exchanges are subject to all of the same coverage mandates and rules as the federally-run exchange. Clearing the hurdles of crafting an exchange that complies with the 600 plus pages of federal exchange regulations will only result in wasted state resources and higher premiums for your constituents.
Implementation of this law is not inevitable and without the unconstitutional individual mandate it is improbable. Join us in resisting a centralized government approach to health care reform and instead focus on solutions that make health care more affordable and accessible for every American. Let's work to create a health care system of, for, and by the people, not government or special interests.
(Signers include Jim DeMint, Michelle Bachmann, Tom Coburn (yes, Coburn), and more.)
Say NO to any insurance exchange in Oklahoma, whether state-based or otherwise.


text:
Egret Toasted Almond on Maple
Product photography and illustrations have been reproduced as accurately as print and web technologies permit. To ensure highest satisfaction, we suggest you view an actual sample from your dealer for best color, wood grain and finish representation.
Egret is a glowing, sophisticated neutral cabinet paint* that is beautiful on its own or when paired with wood tone finishes and other opaques. The addition of Toasted Almond cabinet glazing creates a beautiful accent that enhances the soft beauty of Egret.
*When this finish/color is chosen, the door and/or drawer front center panel may be constructed of Medium Density Fiberboard (MDF), except when LaGrange and Liberty door styles or Distressing or Heirlooming are specified.


text:
Posts Tagged 'sage 300 erp'
Synchronizing Data with Sage 300
Often there is a need to synchronize data from an external source with Sage 300 data. For instance, with Sage CRM we want to keep the list of customers synchronized between the two systems. This way if you enter a new customer in one, it gets automatically added to the other. Similarly, if you update say an address in one, then it is updated in the other. Along the way there have been various techniques to accomplish this. In this blog post I'll cover how this has been done in the past and present a new idea on how to do this now.
In the past there have been a number of constraints, such as supporting multiple databases like Pervasive.SQL, SQL Server, IBM DB2 and Oracle. But today Sage 300 only supports SQL Server. Similarly, some suggested approaches would be quite expensive to implement inside Sage 300. Tied closely to synchronization is the desire by some customers for database auditing which we will also touch upon since this is closely related.
Sage CRM Synchronization
The first two-way data synchronization we did was the original Sage 300 to Sage CRM integration. The original integration used sub-classed views to capture changes to the data and to then use the Sage CRM API to make the matching change to Sage CRM. Sage CRM then did something similar and would write the change back to Sage 300 via one of its APIs.
The main problem with this integration technique is that its fairly brittle. You can configure the integration to either fail, warn or ignore errors in the other system. If you select error, then both systems need to be running in order for any one to use either. So if Sage CRM is offline, then so is Sage 300. If you select warn or ignore then the record will be updated in one system and not the other. This will put the databases out of sync and a manual full re-sync will need to be performed.
For the most part this system works pretty well, but isn't ideal due to the trade off of either requiring both systems always be up, or having to run manual re-syncs every now and then. The integration is now built into the Sage 300 business logic; so sub-classed Views are no longer used.
The Sage Data Cloud
The intent of the Sage data cloud was to synchronize data with the cloud but not to require the on premise accounting system be always online. As a consequence, it couldn't use the same approach as the original Sage CRM integration. In the meantime, Sage CRM added support for vector clock synchronization via SData. The problem with SData synchronization was that it was too expensive to retrofit that into all the accounting packages that needed to work with the Sage Data Cloud.
The approach the Sage Data Cloud connector took was to keep a table that matched the accounting data in a separate database. This table just had the key and a checksum so it could tell what changed in the database by scanning it and re-computing the checksums and if they didn't match then the record had been modified and needed synching.
This approach didn't require manual re-synchs or require both systems be online to work. However, it was expensive to keep scanning the database looking for changes, so they may not be reflected terribly quickly or would add unnecessary load to the database server.
What Does Synchronization Need?
The question is then what does a modern synchronization algorithm like vector clock sync require to operate efficiently? It requires the ability to ask the system what has changed since it last ran. This query has to be efficient and reliable.
You could do a CSQRY call and select based on the audit stamps that are newer than our last clock tick (sync time). However, the audit stamp isn't and index and this query will be slow on larger tables. Further it doesn't easily give you inserted or deleted records.
Another suggested approach would be to implement database auditing on the Sage 300 application's tables. Then you get a database audit feature and if done right, you can use this to query for changed records and then base a synchronization algorithm on it. However, this has never been done since it's a fairly large job and the ROI was never deemed worthwhile.
Another approach that is specific to SQL Server would be to query the database transaction logs. These will tell you what happened in the database. This has a couple of problems namely the queries on the transaction logs aren't oriented around since the last sync, and so are either slow or return too much information. Further SQL Server manages these logs fairly aggressively so if your synchronization app was offline for too long, SQL Server would recycle the logs and the data wouldn't be available anymore. Plus, this would force everyone to manage logs, rather than just have them truncated on checkpoint.
SQL Server 2008 to the Rescue
Fortunately, SQL Sever 2008 added some nice change tracking/auditing functionality that does what we need. And fortunately Sage 300 only supports SQL Server so we can use this functionality. There is a very good article on MSDN about this and how it applies to synchronization here. Basically the SQL Server team recognized that both data synchronization and auditing were important and quite time consuming to add at the application level.
Using this functionality is quite simple, you need to turn on change tracking for the database, then you need to turn on change tracking for each table you want to track changes for.
Then there is a SQL function that you can select from to get the data. For instance, I updated a couple of records in ARCUS and then inserted a new one and the result is shown.
This is giving me the minimal information, which is all I require for synchronization since I really only need to know which records to synchronize and then can get the full information form the main database table.
If you want to use this to audit all the changes in your database, then there are more options you can set to give you more complete information on what happened.
If you are writing an application that needs to synchronize data with Sage 300 (either one way or two way), consider using these features of SQL Server since you can add them externally to Sage 300 without affecting the application.
Similarly, if you are writing a database logging/auditing application you might want to look at what Microsoft has been adding to SQL Server starting with version 2008.
Passing the Torch
As many people already know, I've now retired after 23+ years with Computer Associates/Sage working on the Accpac/Sage 300 product line. I'm now happily living in Gibsons, BC which is a short 40 minute ferry ride from Vancouver.
John Thomas (aka JT)
John Thomas will be taking over for me as the Chief Architect for the Sage 300 product line. He will also be taking over my role as Sage 300's main blog writer. His blog is on WordPress here: https://jthomas903.wordpress.com/. Follow this blog to keep up to date on Sage 300.
It will also be posted on Sage City here: http://sagecity.na.sage.com/support_communities/sage300_erp/b/sage_300_erp_r_and_d/archive/2016/03/21/sage-300c-transition. He will continue to post articles to the Sage 300 In Development blog area on Sage City as well as on WordPress.
Check out his first blog posting where he introduces himself and you can learn a little about him. Introduce yourself via the comments section. All bloggers always appreciate any suggestions on topics for future articles.
My Blog
I'll continue writing my blog, but it probably won't be on Sage 300 anymore. A lot of my blogs relied on having the support and expertise of the team around me to help out. I really appreciate all the help and support I've received over the years from everyone at Sage as well as all the people in the wider Sage 300 community.
Of course I won't delete my blog, or delete any articles. They will remain on WordPress as long as WordPress keeps hosting them. They will also remain on Sage City where I have always mirrored them. I'll probably continue to fix typos or make corrections to any errors that I notice or are pointed out to me.
Also feel free to keep asking questions, but beware that I can't go down the hall to ask an expert on a topic and I can't consult the source code anymore. But I'll still do my best to answer, though the answer may be to go ask tech support.
I am very tempted to finish a few projects I never had time for at Sage, like investigating tying Azure Machine Learning (or perhaps Google's or Amazon's machine learning) to Sage 300. Or perhaps using Azure Logic App (or Azure App Service) to create workflows around Sage 300. Or perhaps do a POC with Sage 300 and Microsoft's Power BI. But I think I'll leave those projects to others for now. I do have a few opinions and bias's on Accounting Software, Software Development, the Cloud and future trends that I may still blog on in the future.
Chances are what I will be blogging on will be more around my other interests that I've been getting back to now that I'm retired. These would include:
- Photography – including via DLSR and via my Drone.
- Guitar – now that I have time to practice again.
- Triathlon – running, swimming and biking.
- Hiking – there's great hiking here on BC's Sunshine Coast.
- Video Games – I've been playing with the Amazon Lumberyard game engine.
- Artificial Intelligence – I've been reading quite a bit about this lately and there are some amazing advances currently in the works. For instance, Google's AI just beat the world Go champion.
- Travel – I do plan to do a lot more travelling and suspect I'll be blogging about it.
The nice thing about being retired is that I can pursue a lot of diverse interests. So who knows where these will lead over the coming months.
As I move on to the next phase of my life, so will my blog. But I have full confidence in JT and the Sage 300 team to carry the torch forward. I'm eagerly waiting to see JT's future blog postings and see the various press releases as Sage 300 continues to evolve.
Sage Connect 2016
The Sage Connect 2016 conference has just wrapped up in Sydney, Australia. I was very happy to be able to head over there and give a one-day training class on our new Web UIs SDK, and then give a few sessions in the main conferences. This year the conference combined all the Sage Australia/New Zealand/Pacific Islands products into one show. So there were customers and partners from Sage HandiSoft, Sage MicrOpay, Sage One as well as the usual people from Sage CRM, Sage 300, Sage CRE and Sage X3.
The show was on for two days where the first day was for customers and partners and then the second day was for partners only. As a result, the first day had around 600 people in attendance. There was a networking event for everyone at the end of the first day and then a gala awards dinner for the partners after the second day.
A notable part of the keynote was the kick-off of the Sage Foundation in Australia with a sponsorship of Orange Sky Laundry. Certainly a worthwhile cause that is doing a lot of good work helping Australia's homeless population.
There was a leadership forum featuring three prominent Australian entrepreneurs discussing their careers and providing advice based on their experience. These were Naomi Simpson of Red Balloon, Brad Smith of Braaap Motorcycles and Steve Vamos of Telstra. I found Brad Smith especially interesting as he created a motorcycle manufacturer from scratch.
The event was held at the conference center at the Australian Technology Park. This was very interesting since it was converted from the Eveleigh Railway Workshops and still contains many exhibits and equipment from that era. It created an interesting contrast of 2016 era high tech to the heavy industry that was high tech around 1900.
Sage 300
The big news for Sage 300 was the continued roll out of our Web UIs. With the Sage 300 2016.1 release just being rolled out this adds the I/C, O/E and P/O screens along with quite a few other screens and quite a few other enhancements. Jaqueline Li, the Product Manager for Sage 300 was also at the show and presented the roadmap for what customers and partners can expect in the next release as well.
Sage is big on promoting the golden triangle of Accounting, Payments and Payroll. In Australia this is represented by Sage 300, Sage Payment Solutions and Sage MicrOPay which all integrate to complete the triangle for the customers. Sage Payment Solutions (SPS) is the same one as in North American and now operates in the USA, Canada and Australia.
Don Thomson one of the original founders of Accpac and the developer of the Access-C compiler was present representing his current venture TaiRox. Here he is being interviewed by Mike Lorge, the Managing Director Sage Business Solutions, on the direction of Sage 300 during one of the keynote sessions.
Development Partners
Sage 300 has a large community of ISVs that provide specialized vertical Accounting modules, reporting tools, utilities and customized solutions. These solutions have been instrumental in making Sage 300 a successful product and a successful platform for business applications. Without these company's relentless passionate support, Sage 300 wouldn't have anywhere near the market share it has today.
There were quite a few exhibiting at the Connect conference as well as providing pre-conference training and conference sessions. Some of the participants were: Altec, Accu-Dart, AutoSimply, BSP Software, Dingosoft, Enabling, Greytrix, HighJump, InfoCentral, Orchid, Pacific Technologies, Symphony, TaiRox and Technisoft.
I gave a pre-conference SDK training class on our new Web UIs, so hopefully we will be seeing some Web versions of these products shortly.
It's a long flight from Vancouver to Sydney, but at least it's a direct flight. The time zone difference is 19 hours ahead, so you feel it as 5 hours back which isn't too bad. Going from Canadian winter to Australian summer is always enjoyable to get some sunshine and feel the warmth. Sydney was hopping with tourist season in full swing, multiple cruise ships docked in the harbor, Chinese new year celebrations in full swing and all sorts of other events going on.
The conference went really well, and was exciting and energizing. Hopefully everyone learned something and became more excited about what we have today and what is coming down the road.
Of course you can't visit Australia without going to the beach, so here is one last photo, in this case of Bondi Beach. Surf's up!
Sage 300c Web Services
ASP.Net MVC Web screens tend to have quite quickly changing interfaces between the Views, Controllers and Models which makes using then same Web Services as the UI a bit problematic, especially as the screens evolve quickly. You want a stable Web Services interface that preserves compatibility from version to version and provides a wider more general interface. At the same time the developer of an ASP.Net MVC program doesn't want to do a completely different implementation for exposing Web Services.
The way ASP.Net MVC solves this dilemma is by allowing you to add a Web Services stack on top of your existing models (which in our case means fully leveraging the business repositories and Sage 300 Business Logic as well). But it uses a custom controller to handle the Web Services requests. In the Microsoft stack there are several supported standards for Web Services, but the one we used is OData. This means that using our Web Services you can do all the standard OData queries and supports the standard OData meta-data.
With our Sage 300 2016 Product Update 1 we have included a number of Web Services in the product. These are automatically installed if you select the Web UIs option from the main installation. So if the Web UIs are up and running then you can try playing with the Web Services. In this article we'll show how to get started using these. Over next couple of releases, we'll be fleshing these out to support all the Business logic as well as services beyond the basic CRUD operations.
Some Examples
If you type:
into the Chrome browser you will be prompted for your Sage 300 login credentials, which you can enter. Note that from this browser prompt the password is case sensitive, so you need to uppercase your normal Sage 300 password (since our regular login screen normally does this).
Then after entering the correct data you will get back a JSON object with all the information in your chart of Accounts (including details like optional fields):
Working with the Browser directly, although fun, will soon become tedious. Another easier approach is to install the Chrome add-in PostMan which will remember your Web Services so you can adjust and repeat them. You need to set the Basic Authorization header with your Sage 300 login and password. Below we use the shortened URL to get the list of all the available feeds for SAMLTD with the URL:
using PostMan:
And we get the returned JSON object containing the list of Web Services we support. It by company since not all accounting application may be activated in the database.
You can do standard OData queries to filter the returned data. For instance:
https://yourservername/Sage300webapi/sdata/-/SAMLTD/GL/Accounts?$filter=UnformattedAccount eq '1020'
will result in just this one account being returned:
The way we implement queries is via adding LINQ support that will convert the LINQ query to a Browse filter for our Sage 300 View. This means we will support any query as long as we can translated it into a Browse filter. If the filter contains a SQL function we don't support, then you will get back a not supported error for your query. Note that often people writing code for the regular Web UIs just use our C# LINQ support to browse/fetch rather than calling browse/fetch directly since this lets you leverage other advanced features in C# and .Net.
Other Clauses
You can specify a sort order as long as what you requests matches an index in the Sage 300 database:
https://yourservername/Sage300webapi/sdata/-/SAMLTD/GL/Accounts?$orderby=UnformattedAccount desc
You can specify to get the top n records or to skip n records via:
which is useful to page data.
Meta Data
You can get meta data for all the feeds using the $metadata tag. For instance:
will return the meta data for all the feeds that are relevant for SAMLTD:
(Note that this is quite a large JSON object to process).
This initial implementation includes sufficient G/L feeds for supporting financial reporting. Hence these G/L feeds are read only at this point. We do support inserting G/L Batches, O/E Orders and A/R Customers. Many of the non-G/L feeds support updating, inserting and deleting. If the entity supports these then you can delete the record by specifying DELETE as the HTTP verb (which is easy in PostMan), similarly insert if via POST and update if via PUT or PATCH.
Generally, the best way to figure out the format of the payload to include with these is to do a GET and then use that payload as a template to build the JSON object with the data you want to update or insert.
Since these Web APIs are built on the Sage 300 Business Logic all the usual validation will take place and you will get back Sage 300 error messages in the response payload if the request fails.
Ideally the responses from the server will include error messages to tell you what went wrong, so always check these. If they aren't helpful, then on your web server check the Web API trace log which is located at:
This will usually have the raw error when something has gone wrong.
If you don't see anything in either of these places, perhaps check your IIS log to make sure that the request didn't get rejected for some other reason. Especially remember to include your basic authorization header.
If you expose your Web Services to the general Internet, ensure that you follow all the security measures in this article. You will need to do this if you are integrating with an external cloud service or other client located outside your network. Generally, you want to keep your Web Service communications private, so they can't be accessed by hackers or spied on by hackers. Using good practices around enforcing HTTPS is crucial here.
The set of Web Services included in the Sage 300 2016 Product Update 1 are intended to support Financial Reporting on General Ledger as well as basic e-Commerce functionality like accessing Customers and entering Orders. Part of the intent of this release is to let people play with these and provide feedback as we move to complete out the full set of Web Services for our next version.
Accessing Sage 300c's Business Logic from the Web UIs
In the Sage 300 VB UIs, a user would do something in the UI (press a button or tab out of a field) and then the VB UI would be notified of this and would possibly execute a number of Sage 300 Business Logic (View) calls and based on their results update various other fields and possibly provide user feedback via a message box.
This blog post talks about where you put your code to access the Sage 300 Business Logic and how a UI interaction in the Browser flows through the system to execute this business logic.
In the new Web UI architecture, we access the Sage 300 Business logic from our Business Repository classes. The base classes for these provide a wrapper of the Sage 300 .Net API to actually access the Views, but hiding the details of things like session and database link management. Then above this layer are the usual ASP.Net MVC Models and Controllers.
Generally, we want to put all this logic in the Business Repository so it can be used by multiple higher level clients including the Web UIs, our new RESTful WebAPI and services which are available for other applications to utilize.
Some of the layering is in place ready for additional functionality like customization. We need provide the common interfaces that can act as the basis for programmatic customization by inserting custom modules into the processing flow via Unity Interception.
Moving VB Code
The easiest way for the repository to transfer data is to have the model provide extra fields for this communication. This way no extra layers need to be involved, the business repository just populates these fields and the JavaScript layers pull them out of the returned JSON object and use them.
But you only want to add so much to the model, since you don't want it to be too cumbersome to move around and you might want more focused calls. For these we usually define special calls in the controller and these go through a services layer to execute the code in the repository. The service call only passes the exact data needed (like parameters to a function) and knows what data to expect back.
Adding extra fields to the model is fairly straight forward, so let's trace through the logic of making a services call. In this example we'll look at the simple case of checking a customer's credit limit in A/R Invoice Entry (which is using a stateful business repository). We'll start up in the JavaScript code and work our way down through the layers to get an idea of who does what.
So let's start near the top. In the A/R Invoice Entry UI there are various times when the credit limit needs to be looked up. So the JavaScript code in the InvoiceEntryBehaviour.js file has a routine to initiate this process. Note that server calls are asynchronous so the response is handled in a callback function.
showCreditLimit: function (result) {
// Open Credit Check pop up window
if (result) {
var jsonResult = JSON.parse(result);
if (jsonResult.ShowCreditCheck) {
"n" + invoiceEntryUI.CurrencyDecimals, jsonResult.totalPaymentAmountScheduled,
} else {
This calls a function in the InvoiceEntryRepository.js file to actually make the call to the server:
getCreditCheck: function (customerNumber, documentDate, dueDate, decimals, invoiceAmount,
prepaymentAmount) {
var data = {
id: customerNumber,
docDate: documentDate,
dueDate: dueDate,
decimals: decimals,
totalPaymentAmountScheduled: invoiceAmount,
prepaymentAmount: prepaymentAmount
sg.utls.ajaxPostHtml(sg.utls.url.buildUrl("AR", "InvoiceEntry", "GetCreditLimit"), data, onSuccess.loadCreditLimit);
This will initiate the call to the server. The URL will be built something like servername/Sage300/AR/InvoiceEntry/GetCreditLimit. The ASP.Net MVC infrastructure will use configuration by convention to look for a matching entry point in a loaded controller and hence call the GetCreditLimit method in the InvoiceEntryController.cs file:
public virtual ActionResult GetCreditLimit(string id, string docDate, string dueDate,
string decimals,decimal totalPaymentAmountScheduled, decimal prepaymentAmount)
return PartialView(AccountReceivable.ARInvoiceCreditCheck,
ControllerInternal.GetCreditLimit(id, docDate, dueDate, decimals,
totalPaymentAmountScheduled, prepaymentAmount));
catch (BusinessException businessException)
return JsonNet(BuildErrorModelBase(CommonResx.NotFoundMessage, businessException,
Which will call the InvoiceControllerInternal.cs GetCreditLimit method:
internal ViewModelBase<CustomerBalance> GetCreditLimit(string customerNumber,
string documentDate,
string dueDate, string decimals
, decimal totalPaymentAmountScheduled, decimal prepaymentAmount)
var creditBalance = Service.GetCreditLimit(customerNumber, totalPaymentAmountScheduled,
if (creditBalance.CalcCustomerOverdue == CalcCustomerOverdue.Yes &&
creditBalance.CustomerBalanceOverdue > creditBalance.CustomerAmountOverdue)
creditBalance.CustomerCreditMessage = string.Format(
if (creditBalance.CalcNatAcctOverdue == CalcNatAcctOverdue.Yes &&
creditBalance.NatAcctBalanceOverdue > creditBalance.NatAcctAmountOverdue)
creditBalance.NationalCreditMessage = string.Format(
creditBalance.CustomerCreditLimit =
creditBalance.CustomerBalanceVal =
creditBalance.PendingARAmount =
creditBalance.PendingOEAmount =
creditBalance.PendingOtherAmount =
creditBalance.CurrentARInvoiceAmount =
creditBalance.CurrentARPrepaymentAmount =
creditBalance.CustomerOutstanding =
creditBalance.CustomerLimitExceeded =
creditBalance.NatAcctCreditLimit =
creditBalance.NationalAccountBalance =
creditBalance.NatAcctOutstanding =
creditBalance.NatAcctLimitLeft =
creditBalance.NatAcctLimitExceeded =
return new ViewModelBase<CustomerBalance> { Data = creditBalance };
This routine first calls the GetCreditLimit service in InvoiceEntryEntityService.cs:
public virtual CustomerBalance GetCreditLimit(string customerNumber,
decimal totalPaymentAmountScheduled, decimal prepaymentAmount)
var repository = Resolve<IInvoiceEntryEntity<TBatch, THeader,
TDetail, TPayment, TDetailOptional>>();
return repository.GetCreditLimit(customerNumber,
totalPaymentAmountScheduled, prepaymentAmount);
Who then calls the repository GetCreditLimit routine in InvoiceEntryRepository.cs. This routine then appears to do regular View processing using the base repository wrapper routines that insulate us from the session/dblink handling logic as well as do some basic error processing:
public virtual CustomerBalance GetCreditLimit(string customerNum,
decimal totalPaymentAmountScheduled, decimal prepaymentAmount)
_creditCheck.SetValue(CustomerBalance.Fields.CustomerNumber, customerNum);
return _creditCheckMapper.Map(_creditCheck);
Finally, down in the business repository, the code should look fairly familiar to anyone you has done any C# coding using our Sage 300 .Net API. Further this code should also appear somewhere in the matching VB code, and besides being translated to using the .Net API, its become quite separated from the UI control code (in this case the JavaScript).
At the end of this all the calls return propagating the returned data back to the Browser in answer to the AJAX call that it made.
It might look like a lot of code here, but remember the business repository and JavaScript bits have corresponding VB code. Then the other layers are there to make all the code more re-usable so that it can be used in contexts like WebAPIs and allow interfaces to provide the hooks needed for customization.
This article is intended to give you an idea of where to put your code that accesses the Sage 300 Business Logic and then how to call that from the Web UIs. There are a lot of layers but individually most of the layers are fairly simple and most of the code will appear in the Business Repository and the JavaScript behavior code.
Stateless Versus Stateful Sage 300c Web UIs
When two computers communicate they use a well-defined communications protocol. In Browser to Server communications these are often broadly categorized as either stateless or stateful. A stateless communications protocol doesn't require that anything be remembered between calls. In web applications this is desirable for a number of reasons:
- often calls are load balanced across multiple servers (perhaps even in different locations).
- storing state in memory can be expensive and will limit how many users can be accessing a web server at once.
On the other hand, maintaining server state has some advantages:
- less information needs to be transferred between the client and server since the server knows what has gone before.
- having things handy in memory can make operations faster and more context aware.
Often in the real world these components are combined or stacked on each other, for instance the TCP protocol is stateful and then the HTTP stateless protocol is layered on top of TCP.
The Sage 300c Web UIs use both stateless and stateful technology. This article will talk about when we use each, how to program either case and what are the advantages and disadvantages of each method. Like many things in programming the lines between these two things can become quite blurred.
Since we do have stateful UIs, this does require that if you scale out to multiple web servers then the load balancer must use sticky sessions as we explained in this blog posting. Basically guarantee that all the requests from a given client go to the same web server in case they are running a stateful UI.
Stateless Sage 300 Web UIs
Most of the Sage 300c setup UIs, processing UIs and report UIs are all stateless. This means IIS could be reset between requests and things would still work. It would just be quite slow since it would need to re-open a Sage 300 session and re-open the Views to process the next request. To avoid this we keep a cache of open sessions along with their open Views. This way when a stateless request comes in we match up a session for the right company, user and with the right Views from the session pool and use that to handle the request. If a session in the pool hasn't been used for a while we will release it and if too many sessions are in use, we will release the oldest if we need another one. This way practically speaking you usually open a session for your first stateless request and then keep using it from the cache of the duration of your work.
Every Sage 300c business logic entity (View) will have a stateless repository defined for it. This is because only the document entry UI needs stateful operation, everything else like finders, export and other UIs will want to use the stateless version. You get all the default behavior for your stateless repository by having your specific repository inherit from one of the stateless base repositories in Sage.CA.SBS.ERP.Sage300.Common.BusinessRepository.Base like FlatRepository, ProcessingRepository or InquiryRepository.
Generally stateless operation fits very well with ASP.Net MVC since this is the natural way that it works. There is a lot of infrastructure to pass the data model back and forth between the client and server in a stateless manner. Add to that our use of knockout data binding and this makes most basic CRUD operations all handled by the framework.
This doesn't mean that a stateless UI can't dynamically interact with the user. By default, you have the CRUD operation off the basic navigation and save/delete buttons. But you can certainly add your own custom AJAX calls to dynamically update areas of your form. We provide support in the framework to update things like descriptions of external keys, but in fact you have a lot of power to make your UI very interactive and polished.
Stateful Sage 300 Web UIs
Most of the main Accounting document entry UIs are stateful. This includes UIs like Order Entry, Purchase Orders, G/L Journal Entry and A/R Invoice Entry. These UIs have a lot of sophistication in building up the Accounting document and the size of these documents can be quite large. Sending this entire document back and forth between the browser and the server as a JSON object is quite impractical. When one of these UIs is started, a session and set of Views are assigned to it for the duration that it runs. As changes are made to the UIs they are sent to the server to make the attendant changes to the server model.
To create a stateful business repository, just inherit from one of the stateful base repositories in Sage.CA.SBS.ERP.Sage300.Common.BusinessRepository.Base.Statefull like BatchHeaderDetailRepository or SequencedHeaderDetailRepository.
You don't need to send something to the server every time every field changes, only the fields that cause some business logic to execute. So you don't need to do anything say when the user changes a description field. When a field changes that causes business logic on the server to execute then you need to send that to the server and get back all the fields that changed as a result. We tend to mostly do this using the default ASP.Net MVC mechanisms along with the knockout data binding. But only doing it for the component record. So say the item number in a detail record is changed, then we would refresh that record by sending it to the server, which would set the changed fields, do the Sage 300 business logic operations (puts and gets) and return the newly updated record where a number of fields have changed.
This works for most cases, but there is room for optimization. If something is rather a major operation, you might want a more tailored AJAX call for the processing. Similarly, if multiple records are affected you might want to denormalize a bit to reduce the dataflow. For instance, when dealing with details, often header totals change, but you might want to associate these with the detail, rather than also refreshing the header.
This was a quick overview of the main modes or how our Sage 300 Web UIs operation. Stateless operation reduces server overhead, while stateful operation lets us fully leverage our existing business logic, while reducing our bandwidth requirements.
Adding a Grid to Your Sage 300 Web UI
The grid or table control is a key element for data entry in any Accounting application. With Sage 300 we use the grid control to enter things like Order or Invoice details. Interactions with a grid control tend to be quite complex. The data has to be managed so it is loaded only a page at a time (often called virtual scrolling), since there could be thousands of detail lines and loading them all at once would be quite slow. There is the ability to edit, delete and add lines. Tabbing has to be handled well to enhance data entry. People also have the ability to re-arrange the grid columns, hide columns and then expect these changes to be remembered.
This blog article will talk about the key elements to adding a grid control to your Sage 300 Web UI and what sort of support you need in your UI to support all the desired functionality. A fair bit is handled for you in the Sage 300 Web UI Framework, however you have to handle various events and there is a lot of power to add your own programming.
There is a lot of support for standard grid operations in the Sage 300 Web UI framework. Much of this is controlled by a config JSON object which is passed to our @Html.KoKendoGrid function that defines the grid in the Razor View. This file defines a number of properties of the grid along with a number of standard callout functions you can define to add your custom processing. The good news is we have a utility to generate much of this from the ASP.Net MVC Model.
JavaScript Generation Utility
To generate this code we provide a utility which will generate the Razor View code and a lot of the standard JavaScript code that you need. So for instance the code for the Razor View might be:
And then some of the JavaScript code for the config object might be:
Server Side Pagination
In our VB UIs, we had virtual scrolling in our grids, which would basically bring in a page or two at a time. It supported scrolling one page ahead or one page back, go to the top or bottom but you couldn't go to an arbitrary point in the file without searching (in fact the scroll bar would always be at the top, bottom or right in the middle). In the Web UIs we use the Kendo UI Grid control and try to keep the scrolling mechanism standard for the Web, which means the control tells you how many pages there are and lets you go to any page you like as well as going to the next or previous one.
ViewListControl vs AccpacGrid
In our VB UIs, we actually had two grid controls. One was the ViewListControl which would show a separate View record in each line and supported virtual scrolling. Then we had the AccpacGrid control which would usually show an array of fields from a single record (like tax information, or perhaps item structure information).
In the Web UIs we only have one Grid control. It naturally works more like VB's ViewListControl. So how do we handle the other case of the AccpacGrid? We do this in our controller by translating the array of fields into what looks like a list of details. This way to the Grid control, it doesn't really see a difference. Usually you don't need to enable virtual scrolling in this case since there is typically 5 or 10 records and you just provide them all at once. So typically your ViewModel will have a list of records which the controller will populate and then this is set as the Grid's data source.
Like VB, the intent of editing cells is to place the correct edit control over the grid cell to perform the edit. There is a lot of framework support for this as well as lots of callouts for you to do your own custom processing. The same is true for adding a new line and deleting a set of lines (note that the Web UI grid supports multiple selection). Also note that the add line, delete line, edit columns buttons aren't part of the Grid, these are separate buttons styled to look like part of the grid in a region just above the Grid. This means you can easily add your own buttons and controls to this area if you wish.
Saving Preferences
We have API support to help with loading and saving grid column preferences. In VB these are stored in the *_p.ism files, in the Web UIs these are stored in the SQL database in the new USRPROP table. So emptying USRPROP is the Web UI equivalent of deleting the *_p.ism files. Generally, we want to move everything into the database and remove our reliance on the shared data folder over time.
This article was just a quick introduction to adding a Grid control to a Web UI. Similar to the VB UIs, the grid control is potentially quite complicated as it supports a lot of diverse functionality. But, if you are doing fairly standard functionality, look for a lot of support in the Web UI framework to help you get the job done.


text:
Tweets for Today
- 07:06 Before I left, most of the way to reinstalling AVG on Viv's pc. Very icy underfoot, but at least trains are running today. Nearly light too! #
- 07:35 So, why is my train retimed? Instead of 09.38 into Euston, I'm told it will arrive at 10.06. Are we going via Coventry? Or Northampton? #
- 08:29 Snow on the ground. Thick fog. This is the Trent Valley. #
- 09:44 Just on the final approach to Euston, so guess it was just a timetabling ploy. En route entertainment from Chuck Missler and Tom Petty. #
- 10:13 I'm between Euston and Liverpool Street, finding a route with a "good service" so far as I am able. #
- 17:10 I got a ticket for London Twestival on Thursday night. Yay for me!!! #
- 18:43 The end of the office day. It's one degree and pourong with rain. Wish I'd brought my coat with me. #


text:
The days of relying on Congress to automatically renew expiring tax provisions—including those governing the tax-free IRA charitable rollover and bonus depreciation—might finally be coming to a close as the strain on the federal budget becomes more evident with each new round of budget negotiations. Unfortunately, this reality comes at a time when your clients need every tax break they can get, whether they are individual or small business clients. Individual clients may have one final chance to satisfy required minimum distribution (RMD) requirements without increasing taxable income. Small business clients, on the other hand, should be advised that the time to expand is now, as special expensing and bonus depreciation rules are also set to expire at year's end. Regardless of your client's situation, the list of expiring tax breaks is robust enough to grab everyone's attention.
The Tax-Free IRA Charitable Rollover
The provision that allows taxpayers aged 70 1/2 and older to make tax-free charitable donations directly from IRA accounts is scheduled to expire at the end of 2013. For many taxpayers, this allows them to take their annual RMD from retirement accounts without the corresponding increase in taxable income.
The tax-free treatment of charitable donations from IRA accounts lets these taxpayers take an RMD of up to $100,000 per year ($200,000 per couple if each spouse has a separate IRA) without increasing their tax burden as long as the funds are transferred directly to a qualified charity (such as churches and hospitals—most private foundations and donor-advised funds are excluded).
Taking advantage of the tax-free IRA charitable rollover can prevent a taxpayer from exceeding the annual income thresholds for higher tax rates and limitations on deductions and exemptions in 2013. A tax-free rollover can also help clients avoid higher Medicare premiums and any taxes that may be imposed on Social Security payments based on income levels.
The downside of this strategy is that the donation cannot also be used as an itemized deduction if tax-free rollover treatment is elected. However, because the value of your clients' itemized deductions will now be phased out if income exceeds the annual threshold level ($250,000 individual/$300,000 joint), electing tax-free treatment may now be more beneficial than ever, allowing your clients to reduce taxable income to enjoy the full benefit of their other itemized deductions.
Depreciation Breaks for Small Business Clients
Under IRC Section 179, small business clients are permitted to accelerate the deduction for the cost of depreciable assets of up to $500,000 (on purchases of up to $2 million) into the year of purchase, but this provision is also set to expire at the end of 2013. The special treatment generally applies to depreciable assets with a lifespan of less than 20 years. Absent Congressional action, the $500,000 figure will drop to $25,000 on January 1, 2014.
Further, the current bonus depreciation rules allow your small business clients to deduct up to 50% of the cost of certain property in the year it is placed into service (rather than spreading the deduction over a number of years). The rest of the purchase price is depreciated over the remaining life of the property. Unlike the Section 179 expensing provision, there are no dollar limits placed on bonus depreciation. However, bonus depreciation is similarly permitted only for property with a 20-year-or-less lifespan and certain computer software.
Therefore, small business clients with enough taxable income to offset the deduction in 2013 may want to consider accelerating large purchases into 2013 to take advantage of these expiring provisions.
The list of expiring provisions is much more lengthy than can be covered in a single article—the deduction for mortgage insurance premiums, the exclusion for forgiven mortgage debt, and the deduction for qualified tuition expenses are also set to expire at the end of 2013. Since these provisions may be more valuable than ever in reducing clients' 2013 tax bills, it is important to examine the entire list of expiring provisions to make the most of them before they are gone.
For more tax and retirement planning ideas from Messrs. Bloink and Byrnes, please see:
Court Eases Use of Annuities to Avoid Medicaid Spend-Down
IRS Gives Double Tax Benefits of Health FSAs a Boost
Can a Twitter Freeze Slash Your Client's Tax Bill?
LTC's Future Lies in New Crop of Hybrid Products
For additional coverage of this issue and similar ones, we invite you to sign up with ThinkAdvisor's Summit Professional Networks partner, National Underwriter Advanced Markets, for a free trial.
You may also be interested in signing up for a free trial with another Summit Professional Networks partner, Tax Facts Online.


text:
Arroyo on re-signing with Miami: "Looking forward to a championship"
Carlos Arroyo has told the South Florida Sun-Sentinel that he will fly back from his native Puerto Rico on Thursday to sign a deal with the Heat. Arroyo started Miami's final 21 regular-season games and all five playoff contests at point guard.
"Looking forward to a championship!!!" Arroyo wrote in an email to the Sun-Sentinel. "Excited!!!!"
He will join Mario Chalmers as Miami's second point and become the team's 13th player under contract.
HoopsVibe`s Very Quick Call: Dub him All-State because Carlos Arroyo will serve as insurance for the Miami Heat.
Of course, the veteran table-setter filled in nicely down the stretch in 2010 when young starter Mario Chalmers struggled. More of the same is expected in 2011.
Arroyo could start or come off the bench; however, he'll likely be the third point guard behind LeBron James and Chalmers.
The native of Puerto Rico will handle whatever role he's given like a professional. This is another solid move by executive Pat Riley and the Heat.
Got thoughts? Well, get at HoopsVibe News in the comment box below.


text:
The Lady Bisons unveiled a 3-4-3 attack, inspired by the University of North Carolina, and scored two second half goals Friday night in a 2-1 win over Tennessee-Chattanooga from the Southern Conference.
"We won the game because of our pressure," Lady Bisons coach Jon Ireland said.
It was the season opener for both teams at the Lipscomb Soccer Complex.
Down by one goal at the end of the first half, and held to only four shots on goal, Ireland stressed the need for his players to go all out in the second half.
"The last part of the first half I thought we kind of lost our sense of direction," Ireland said. "And when Chattanooga got the goal we kind of hung in there, but we didn't play with much purpose.
"I knew if we could get to halftime and only be down by one goal we had a chance to regroup. I told them the first 10 minutes of the first half would set the tone."
The second half effort was even more impressive considering that Ireland only has a couple of healthy players to use as substitutes at this stage of the season.
"For those girls to be able to fight that long and play high pressure showed that our fitness was very good," Ireland said. "Overall we played a high pressure system for a good part of the game.
"Our girls ran and ran and ran. They put Chattanooga under so much pressure in the second half. There were a lot of times in the second half where we put them under so much pressure all they could do was kick it out of bounds or hit it right to us. "
The Lady Bisons were credited with 10 shots in the second half. Seven of them were shots on goal.
"We were like a swarm in the second half," Ireland said. "It gave us so many more opportunities."
Hunter Summers, playing in her first collegiate game, was credited with the first goal for the Lady Bisons on a deflection in front of the Chattanooga goal at the 63:18 mark. Tatjana Shirley, also making her collegiate debut, was credited with the assist.
"Tatjana crossed it and I just got in front of a Chattanooga player," Hunter said. "I may have slightly hit it, but when I got in the other girl's way she couldn't see what she was doing and she kicked it in the goal."
Hunter admitted that she was nervous and excited to play her first college game.
"It was a lot more physical and a lot faster than high school," Hunter said. "But I knew what was coming and I was prepared for it." Meghan McGuire scored what proved to be the game-winning goal at 65:48.
Erin Zerio was in goal for the Lady Bisons. She made six saves with three in each half.
One of the primary concerns for the Lady Bisons was forward Donna-Kay Henry, one of the top two goals scorers in the Southern Conference last season. Becca Smith, the top scorer in the conference in 2009 as a freshman, saw limited action.
"Our defenders stepped up and worked hard," Zerio said. "With our new system we shut them down pretty well. We knew we had to be strong and double-team D.K. "
Kelly Downs scored the opening goal of the game for Chattanooga taking advantage of a rebound off of a corner kick at 19:08.
The Lady Bisons opened the 2009 season with a 1-0 win over Austin Peay. They also tied Middle Tennessee State 0-0 in a season opener in 2005.
The Lady Bisons return to action Monday night at 7 when they travel to Clarksville to face Austin Peay.
Written by Mark McGee, Senior Publisher/Director of Media Relations.


text:
My question is about insulating the ground floor. I have a crawlspace under the floor which is vented and therefore quite cold (average temp in the winter is 4 °C and in the summer 13 °C plus there are loads of cold winds).
I think I would like to do it without stripping all the flooring - I would like to use the crawlspace to insulate it from below.
I have spoken to some 'well versed colleagues' and there is no consensus - options that have been suggested so far are
- Squeeze blocks of styrofoam between the joists from below
- 'Hug' entire floor with insulation foil from below
- Take glass wool and 'hang it' between the joists with some foil or panels
Now I am not sure which method is best (or none of the above?).
Can you please suggest best course of action?


text:
It's lonely at the top. Anyone who has started a company can tell you that. All the decisions rest in your hands, and if you don't have a board of directors behind you, then the buck stops with you and you alone.
However, business owners often find that having a voting board of directors or a nonvoting board that acts as an advisory board can be a huge help in starting a company or growing an existing one.
Betsy Ludlow started Slim and Tone, a circuit-based club for women, 14 months ago. Instead of installing a voting board of directors, Ludlow has been putting together an informal advisory board to guide her.
"Bringing on a board brings insight and direction to manage your growth," says Ludlow. Having a council with different backgrounds assists in growing a company from a strategic standpoint to a management issue standpoint, Ludlow says.
Club owners can put together one of two types of boards — a voting board with fiduciary responsibilities or a nonvoting (or advisory) board. Advisory boards may be easier to recruit because members can't be sued, says David R. Carpe, principal at Clew LLC in Boston, a company that helps companies with board recruiting. Voting boards are given more responsibility generally and often are given compensation.
Whichever board you choose, having one isn't without downsides. At her previous company, Ludlow spent about 20 percent of her time managing the board, including putting together updates and presentations for them. In addition, she felt obligated to follow up on suggestions offered by the board.
"The upside is that there may be a seed of an idea there that you followed up on that has merit," Ludlow says. "On the other side, it takes time to do data collection, assemble the materials and do a presentation to the board. Every day you do that is a day you are not spending with a customer."
Ludlow advises startups or smaller companies to wait to put together a voting board and instead put together an advisory board that eventually could become your board of directors.
Carpe agrees. If a club owner is not raising money through outside investors, there is no need for a voting board, he says. If you are extending your own credit to start a small club or expand it, then why give up voting rights?
Still, some type of board can be invaluable.
"You get so immersed day to day that you might miss the big picture," says Ludlow. "The board can help prevent that a little. It forces the issue in terms of keeping your eye on the big picture."
The two offer the following advice for setting up a board of directors:
Know where to look for board members. "Really good founders, regardless of education background, are deeply dedicated," says Carpe. "When they truly believe in what they are doing, the ability to attract people is easier."
A lot of recruitment has to do with your network, which includes involvement in the right trade and business associations, says Ludlow. Headhunters also can help.
Know whom to recruit. If you don't have the cash to hire a headhunter, then start by recruiting the owner or founder of an area business that sells to consumers, such as a restaurant or clothing chain. Pick one that has expanded operations so they understand how to grow. Since they are not your direct competitors, they can offer insight and expertise on how they expanded, which banks to deal with, which custodial services companies to work with, etc.
You can also turn to local people, particularly a professor at a local business school. "These are people who teach for a living," says Carpe. "Giving wisdom and advice is their life."
The added benefit to finding local members is that expenses are cheaper since they will be limited to lunch during the meetings rather than flight and hotel expenses for out-of-town members.
Ludlow suggests a board with two to three traditional business people and two to three health club specialists. The traditional board members should have a strong track record or experience in business, perhaps even experience as a CFO or in law. The specialists should have experience in fitness, nutrition or health, such as a former gym owner, a nutritionist or a doctor. A club might also want someone with expertise in education and training. To pull as much expertise from outside the club as possible, the board shouldn't include more than two operational members from the club, says Carpe.
Sometimes, owners put together boards in their own image, which creates group think, says Carpe. Instead, look for the most uniquely qualified person — someone who can challenge every assumption and who can offer insight into how to rethink everything you do.
In addition, find board members with market knowledge specific to current/future goals, specialized marketing expertise, finance and legal issues. With small to medium-sized clubs, these areas of expertise are even more critical. Owners should think of board members as vital and active resources, not poster children for "proof that an organization exists," Carpe says.
Share your vision with the board before you recruit them. Let potential board members know how you want to grow your business — with an eye toward expanding and selling or with an eye toward maintaing one club. They must be on board with that vision.
Recruit an uneven number of members. Boards need a swing vote for critical ties. The owner wants to be in control of that swing vote, which often means the owner is the swing vote.
Set terms for the board. Often, board terms can be for three years, but you must decide how you want to set up your board.
Find board members who are not overcommitted. Active board members tend to agree that no board member can effectively serve on more than seven boards due to time commitments.
Define the meeting frequency and communication. When developing a board, define the frequency of meetings. In a startup phase the board will want to offer input often. However, later, quarterly meetings are manageable and allow more input than twice a year or annual meetings, Ludlow says. Let board members know how you will communicate with them between meetings — through e-mails, newsletters, conference calls or in-person. Make sure those communication methods are acceptable to the board.
When you can, offer compensation. Once your business is financially able, you can change your advisory board to a voting board — if you wish — and offer the board compensation. This can help you retain valuable board members, says Carpe.


text:
Oct 17, 2008 (CIDRAP News) – A recent Associated Press (AP) report revealed that, in the name of preventing biological attacks, the United States has rules barring the exportation of vaccines for avian influenza, smallpox, yellow fever, and many other pathogens to five countries classified as sponsors of terrorism.
Under Department of Commerce rules, vaccines for a long list of viruses, bacteria, and biological toxins cannot be exported to Cuba, Iran, North Korea, Sudan, and Syria unless they obtain a special export license, which can take weeks.
Pandemic flu vaccines are not restricted under the rules. But the Department of Commerce confirmed that—as reported by the AP—Cuba, Iran, and Sudan are subject to a ban on pandemic flu vaccines as part of general US trade embargoes covering nearly all products. Those embargoes are based on "broader foreign policy reasons," said Kevin Kurland, a spokesman for the department's Bureau of Industry and Security.
The list of pathogens subject to the rules includes many viruses, some of which are little known and some of which there is no vaccine for. Examples, besides those mentioned, are the viruses that cause dengue fever, Ebola fever, Marburg fever, Rift Valley fever, and monkeypox. A list of animal pathogens covered by the restrictions includes highly pathogenic avian flu viruses.
Bacterial pathogens on the restricted list include anthrax and the microbes that cause tularemia and plague. Not on the list are the causes of common vaccine-preventable diseases, such as measles, mumps, rubella, chickenpox, and seasonal influenza.
It can take up to 40 days for a country to obtain an export license for a restricted product, Kurland told CIDRAP News. But he said humanitarian needs are considered, and licenses can be granted much faster in emergencies.
Rules go back to 1990s
The AP report said the restrictions were quietly established in the mid 1990s and were strengthened after the Sep 11, 2001, attacks and subsequent anthrax mailings. Officials from the Department of Health and Human Services (HHS) and the Centers for Disease Control and Prevention were not even aware of the regulations until the AP asked about them, the story said.
Disease and bioterrorism experts say there is little reason to think that exporting the vaccines would increase the risk of biological attacks, but a Commerce Department official quoted in the AP story defended them.
"Legitimate public health and scientific research is not adversely affected by these controls," Assistant Commerce Secretary Christopher Wall told the AP.
Concerning avian flu vaccines for poultry in particular, Wall declined to explain what kind of threat they pose, but said there are valid reasons for taking steps to ensure they "do not fall into the wrong hands," according to the story.
In response to questions from CIDRAP News, Bill Hall, an HHS spokesman in Washington, DC, said HHS is not usually consulted about trade sanctions, even when they involve medical products. "The United States government currently requires a license for the export from the US of a wide range of goods, products, and services to Cuba, Iran, and Sudan as part of its overall foreign policy," Hall commented by e-mail.
"Although these licensing requirements cover exports of medical products such as human influenza vaccine, HHS is not routinely consulted on the foreign policy decisions to impose sanctions on exports of U.S. goods to state sponsors of terrorism, even including medical products such as vaccines.
"In the meantime, HHS is working closely with the Department of Commerce and other government agencies to determine the most effective and humane actions the US government could take to help protect global public health, regardless of the nation or nations involved."
Vaccines into weapons?
Scientists quoted in the AP report said the idea that vaccines could be used to make biological weapons makes little sense. Vaccines typically contain inactivated viruses or bacteria or pieces of a virus or bacterium, though some vaccines use live but weakened microbes. Smallpox vaccine contains live vaccinia virus, a less dangerous relative of the smallpox virus.
Referring to avian flu vaccines, Ian Ramshaw, an immunology and biosecurity expert at Australian National University in Canberra, told the AP, "I can think of no scientific reason how a terrorist organization could use such a vaccine for malicious intent. I personally think it's a rather silly attitude and the U.S. is probably going overboard as it has in the past with many of its bioterrorism initiatives."
Infectious disease expert Michael T. Osterholm, PhD, MPH, said he doesn't see the logic behind the restrictions either. He is director of the University of Minnesota Center for Infectious Disease Research and Policy, which publishes CIDRAP News.
"There really isn't any reason that using the vaccine to create the agent would be a concern," he said. "The only potential implication is if you had individuals working on [weaponizing] the agent, by vaccinating them you could protect them so they could work on it."
He observed that the idea of weaponizing the H5N1 avian flu virus, for example, is not a concern, since the virus does not easily infect humans or spread easily from person to person. The virus could be used as a weapon against poultry, "but that's not about the vaccine," he said. "So I don't understand the logic about this at all."
"Anywhere in the world you can reduce the potential for these diseases, we should do that," Osterholm said.
Kurland said countries subject to the restrictions can get export licenses fairly quickly in emergencies.
"By executive order, the process for reviewing licenses can take up to 40 days, although this can be expedited in emergency situations," he said via e-mail. "Humanitarian issues are considered in license applications. During recent hurricane relief efforts in Cuba, for example, license applications for such humanitarian efforts were processed in 4 days or less."
See also:
Commerce Department regulations supplement listing pathogens whose vaccines are subject to export restrictions for countries classified as sponsors of terrorism (see pages 57-60, 70)


text: This week we rolled out a new release at cloudnumbers.com which implements two new main features: cloudnumbers.com now supports Batch processing. Due to some changes in the architecture we were able to reduce our system requirements. In detail, we do not need that much open ports in your firewall. Please check our updated System Requirements


text:
Posted on July 23, 2012
Today's post comes from the Scholl Center's fantastic summer intern, Maggie Grossman. Maggie will be a senior at the University of North Carolina at Chapel Hill this fall, and this is her second summer working with the Scholl Center. Last summer, Maggie mainly focused on the Scholl Center's forthcoming Civil War exhibit. This summer, she has contributed to our "Out of Many" program. Here Maggie reflects on insights she had during the program's weeklong workshop, as well as sources at the Newberry that illustrate them.
When I first heard about the NEH Bridging Cultures at Community Colleges program, "Out of Many: Religious Pluralism in America," I started thinking about what sort of instruction I'd had on this topic in my ongoing undergraduate studies. It turns out, none. I remembered something about Puritans in my A.P. US history class, and maybe a mention of a Great Awakening or two, but religion had otherwise not made much of an impact on my undergraduate syllabi. But once I started prepping for the Scholl Center's seminar, I started seeing religion everywhere in American life. For instance, did you know that in Major League Baseball, the game includes singing of "God Bless America," but only on Sundays? Or that CNN has a religion blog? It's called CNN's Belief Blog: The faith angles behind the biggest stories. A recent article: "Would Jesus support Obamacare?" Which brings me to the question that kept coming up over and over again during the weeklong seminar: What is government's role in religion?
We began the seminar by starting with the source, to the document that made all of this religious pluralism possible: the First Amendment. For those of you who might be a little rusty on your Constitution, here's the text:
Congress shall make no law respecting an establishment of religion, or prohibiting the free exercise thereof; or abridging the freedom of speech, or of the press; or the right of the people peaceably to assemble, and to petition the Government for a redress of grievances.
I had no idea that a one-sentence piece of legalese had so much to say. First of all, notice that even though freedom of speech has become synonymous with the First Amendment, it's actually the religion clauses that come first. What also impressed me was the divide between the Establishment Clause and the Free Exercise Clause. People tend to think of the First Amendment as granting this abstract "freedom of religion," while in reality it's more nuanced than that. And at last month's "Out of Many" workshop, two issues kept coming up again and again: what is the government's role in religion? And how have conceptions of America as a "Christian Nation" shaped that role?
At least one of the Founders, it turns out, thought extensively about the relationship between Christianity, social governance, and rational thought. Thomas Jefferson made a point throughout his life to keep his thoughts on religion absolutely private. But he did leave behind a document that gives us a glimpse of his thoughts on the sacred. He titled it "The Life and Morals of Jesus of Nazareth," but you may have heard of it simply as "The Jefferson Bible." In it, Jefferson edited the four Gospels to take out anything mystical, magical, or inherently irrational. He carefully cut these passages out and repasted them in chronological order into a blank book.
The original, handmade copy of Jefferson's Bible remains at the Smithsonian, where it was recently restored, digitized, and put on display. The Newberry, however, holds a unique 1904 government printing of the text that includes the Greek, Latin, French, and English translations of the Bible Jefferson used, as well as a foldout map of Palestine and Asia Minor. As the introduction to the Newberry's edition states, "It is printed in pursuance to the following concurrent resolution adopted by the Fifty-seventh Congress, first session: 'That there be printed and bound, by photolithographic process, with an introduction of not to exceed twenty-five pages, to be prepared by Dr. Cyrus Adler, Librarian of the Smithsonian Institution, for the use of Congress, 9,000 copies of Thomas Jefferson's Morals of Jesus of Nazareth, as the same appears in the National Museum; 3,000 copies for the use of the Senate and 6,000 copies for the use of the House.'" While not quite the Smithsonian's original, the photolithographic printing captures Jefferson's handwriting, as well as the meticulously cut-and-pasted segments. What are the implications of offering this document to Congress? And what does it reveal, whether in the eitghteenth, twentieth, or twenty-first centuries, about the relationship between religion and American life?


text:
The new Resistance 3 Dev Diary says it's about the game's motion capture. And yes, for the most part, that's true. But it also spends a fair amount of time delving into something that I feel isn't shown nearly enough by devs in this era of AAA titles that routinely feature plots in which entire universes blow up: stunt work.
I'm serious. I want to know more about video game stunt work. You should too.
Watch the Resistance 3 Motion Capture Documentary via The PlayStation Blog