Blog

Home / Archive by category "Blog"

Is the new bipartisan infrastructure bill trying to kill crypto?

Last night I read an interesting article:

Bitcoin & Crypto facing the end? This law should put an end to the industry by Lukas Wiesflecker

This short version is that there is some language in this bill that seems geared toward getting rid of miners in the US at a minimum, and potentially trying to get rid of cryptocurrency completely.

Well, if this is true, it certainly would not surprise me.  Leave it to the US government to attempt to force trillions of dollars out of the country.  The premise is that this bill needs funding, and supposedly this is one way that the government hopes to pay for all this infrastructure.  However, the article points out that you can’t do a 1099 in the crypto world because you don’t know who you are dealing with.  How can you collect a name and a tax ID from a crypto wallet?  it’s the whole point.  Leave it to the government to try to collect taxes on this, only to realize that they will cripple the industry in this country and end up losing money in the process.  A small part of me also wonders if there are lobbyists out there that don’t like crypto and are pushing to get rid of it…  but like the old saying going “Never ascribe to malice that which is adequately explained by incompetence.”  And let us face it, the government is not filled with people that understand cryptocurrency.  So it’s pretty likely that they really just don’t get it, and have no concept of what they might do.

Anyway, like all things in government, it will take time before this goes into effect, and might possibly never make it into the final bill, but keep your eyes open.  One thing you can guarantee, is that any big bill that is bipartisan, is sure to carry a whole bunch of garbage that we don’t need, all cleverly hidden under “saving the nation”.

Oh well, enjoy and thanks for reading,

Voluntary Government

So I’ve been following a new website, 1729.com.  I love this site because they keep exposing me to new technologies and new ideas.  The most recent one I read was a post about Voluntary Government.

https://1729.com/voluntary-governments#task

Well, I wanted to start by saying that I loved the idea.  I have been fundamentally a libertarian (small “l”) for a long time.  Ever since I heard the concept, it resonated with me.  I just want to be left alone… 🙂  But anyway, back to point.  This article discusses the rise of new technologies and how these constantly disrupt business, no matter how big the the business is.  (old school example, Kodak ruled the camera world…  until they refused to jump on board the digital camera movement…  because it would put their film out of business…  uh oh.  You get the idea).

The problem is that government seems to be immune to these rapidly evolving systems, and instead leaves us in the same predicament, year after year, we are forced to vote for the lesser of two evils…  or “we are just throwing our vote away”.  Personally, I swing back and forth between throwing my vote away and not voting anyway.  My belief is why would I vote for someone that is just another crook, that is been in the system for decades…

The article continues on to talk about the system I just mentioned, and how engrained everything is, so it is nearly impossible to make changes.  Sadly, totally agree with this.  The post does give us some possible hope for the future.  The idea is that with the idea of virtual reality, it would be possible to try out different forms of government without changing the current form.  The concept is that radically changing the government of a large nation could be devastating.  It’s one thing to try out try out a film camera and a digital camera side by side, but you can very well have a Libertarian government, a Republican and a Democratic lead system all at the same time.

As much as I want to believe in the idea of a VR political experiment, I’m afraid that it just would not ever be conclusive enough to change any one’s mind about the system. The reason I don’t think it could ever work, is how could really simulate our world in VR.  There are so many variables out there, good and bad.  For example, how do you really know what would happen if a new political policy of legalizing cocaine were enacted.  How could you predict (accurately) how criminals would respond, how would average citizens respond.  would a new form of illegal activity pop up in it’s place? would violence go down?  would it be helpful for harmful to currently impoverished areas?  Until we could get to a full blown simulation (like the Matrix), I don’t think you could ever really understand the impacts of a decision, much the far reaching impacts of multiple different policy changes.  They may seem unrelated, but eventually, all policies begin to intersect…  the problem is that you can’t always predict where and what will happen when they do.  Something as helpful as giving money to everyone seems like a great idea until you start to see small businesses die because they can’t afford to hire people and pay more than the “free money” being mailed every month.

My counter proposal would be to set up real world experiments.  Setup actual cities in the world with different sets of governing rules.  Let people opt in, or opt out as they see fit.  In an ideal world, you could setup enough of these cities so that you could change 1 variable at a time.  More police, less police, legalize drugs, make everything illegal (including alcohol).  It would be relatively easy to see how many people come in vs. leave the city.  You could compare crime, revenue, taxes, etc.  Clearly, if most people leave within the first 6 months, it’s not a good model 🙂  You would also be able judge who benefits from the model.  For example, if minorities flock to the new city, but big business won’t come there, you have another data point.

My belief is that you won’t be able to see the “real” world consequences (or benefits) in VR.  I believe the representation of who participated would be skewed, and the effects of policy changes could not be captured in a VR world.  I would like to see small cities become experiments.  These cities would need to be completely exempt from Federal and State laws.  They would need to be allowed to set their own policies (within reason) without the oversite of any other governing body.  This would give you real world experience of what happens when you lower the drinking age, raise the speed limit, make all schools private, raise taxes, lower taxes, required public service by all adults over the age of 25, term limits on all public officials, eliminate property taxes, let individuals fund their own public works projects (roads, utilites, etc.) in exchange for lower or no taxes.  The possibilities are endless, and I believe that if you give people a taste of freedom, they will begin to demand it.

If possible, take it to the next level and let a state like Vermont act as it’s own “country”.  they already have the free state country, let them take things to the next level.  You get the idea.

I feel like this is all wishful thinking, as those in power will fight like hell to keep that power (and continue taking more), and experiments like this would quickly expose how little we need those people and their antiquated ideas.

Anyway, thanks for reading,

SAP Service Management – Changing an Equipment Type

Here is one of those things that I keep running into over and over again.  Someone created an equipment, but now they want it to be a different type.  Well, after so many years, I found a great blog post to show you exactly how to do it.

It’s pretty easy, but like the link points out, there are a couple of things that must happen.  The biggest being that you must have the same status profile on both equipment types.  If they don’t have the same profile, you can’t save the change.  Otherwise, the status data would be corrupted, and make a big mess (probably even a shortdump).

So I hope this helps someone out,

thanks for reading,

SAP Service Management – User Exits – Maintenance Plans

Now, this is a section that I have not dug into.  I have yet to use user exits for the maintenance plans, but truly, I haven’t used maintenance plans a whole lot.  I tend to do prototypes for companies, and initially, they are interested, but don’t like the manual effort of getting them setup, especially if you have a large volume of equipment.  Anyway, it’s still good to have these user exits in your back pocket, just in case.  So I hope you can find these useful.

Enhancement Description
IPRM0002 Determine planned date info for maintenance plan
IPRM0003 User field: Maintenance plan
IPRM0004 Maintenance plan / item: Customer check for time “SAVE”
IPRM0005 Determine Offset for Performance-Based Strategy Plans

Thanks for reading,

SAP Service Management – User Exits – Service Orders

Well, the next set of user exits I wanted to document are the service orders.  I’ve used several of these in my time consulting (many of them I have never touched).  As always, you never know when you might need one.  So, without further typing…  Here are the user exits for service orders (IW31/IW32/IW33/etc…)

Enhancement Description
CNEX0013 Order: Cust. enhancement: Default item category comp. assgmt
CNEX0026 Customer enhancement for general inspection of material
CNEX0027 Customer enhancement: Plant, storage loc. finding for comp.
COI20001 Changing of person found
COI20002 Alternative procurement of HR availability data
COOM0001 Customer Functions for Overhead Percentages
COOPA_01 Customer check modules for internal orders
COOPA002 Customer function for master data maint. – internal orders
COOPA003 User-Defined Fields in the Order Master
COOPA004 Customer function: Print order master data
COOPA004 Customer function: Print order master data
COZF0001 Change purchase req. for externally processed operation
COZF0002 Change purchase req. for externally procured component
CYPP0001 Change sequence criteria and sequencing
ICSV0003 Partner selection
ICSV0004 Check PM object and display object information
ICSV0005 Determining reason for rejection – resource-related billing
ICSV0007 Serial Number Partner Transfer on Goods Issue and Returns
ICSV0008 Validation of additional partner types
IWMI0001 User exits for SM/PM IDOCs
IWO10001 Create a PM sub-order
IWO10002 PM maintenance order: Customer check for order release
IWO10004 Maintenance order: Customer check for order completion
IWO10005 Maintenance order: Cust.-specif. determination of profit ctr
IWO10006 Maint. order: Fcode exclusion through cust. enhancement
IWO10007 Maint.order: Customer enhancement – permits in the order
IWO10008 Cust. enhancement: Determination of tax jurisdiction code
IWO10009 PM Order: Customer Check for ‘Save’ Event
IWO10010 Maint. order: Cust. enhancement for determining WBS element
IWO10011 Maint. order: Customer enhancement for component selection
IWO10012 Maintenance order: Priority handling on central header
IWO10015 Maintenance order: F4 Help for user fields on operation
IWO10016 PM Order: Cust. enhancement to check operation user fields
IWO10017 Determine external order number by customer logic
IWO10018 Maintenance order: User fields on order header
IWO10018 Maintenance order: User fields on order header
IWO10020 Maintenance order: Automatically include task list
IWO10021 Automatic task list transfer when creating order from notif.
IWO10022 Determine calendar from user exit
IWO10023 Service order: Change header data for advance shipment doc.
IWO10024 Service order: Changes to items for advance shipment
IWO10025 PM/SM order: Finding responsible cost center
IWO10026 User check on setting status ‘Do not perform’
IWO10027 User exit: Generate user-defined settlement rule
IWO10029 Inclusion of bill of material in PM/SM order
IWO10030 Predefining the fields for the profitability segment
IWO10031 Hide personnel number in PM/SM order
IWO10033 Customer-Specific Authorization Check Maint./Service Order
IWO10034 Operation status based on the status of capacity reqs
IWO20001 PM order: User exit to pass routing to order
IWO20001 PM order: User exit to pass routing to order
IWOC0001 Create PM/SM notification: Determine reference object
IWOC0002 PM/SM notification: Check whether status change is allowed
IWOC0003 PM/SM authorization check of ref. object and planner group
IWOC0004 Change single-level list editing PM/QM/SM ALV settings
PPCO0001 Application development: PP orders

 

Thanks for reading,

SAP Service Mangement – User Exits – Notifications

Well, back to my series on service management (and PM for that matter) user exits.  No need to go into a lot of explanations.  If you found this post, you were looking for a good user exit to solve some challenge.  Hope you find what you are looking for.

Enhancement Description
ICRP0201 Search Help CS_ORG_02: Authorization Check
ICRP0202 Search Help CS_ORG_02: Internally-Programmed Selection
ICRP0203 Search Help CS_ORG_02: Propose Task
ICSV0001 Display of geographic location data
ICSV0002 Automatic task determination for service notifications
ICSV0003 Partner selection
ICSV0004 Check PM object and display object information
ICSV0005 Determining reason for rejection – resource-related billing
ICSV0007 Serial Number Partner Transfer on Goods Issue and Returns
ICSV0008 Validation of additional partner types
IWOC0002 PM/SM notification: Check whether status change is allowed
QQMA0001 QM/PM/SM: User Subscreen for Notification Header
QQMA0008 QM/PM/SM: User Subscreen for Additional Data on Notif. Item
QQMA0010 QM/PM/SM: User Subscreen for Additional Data on Cause
QQMA0011 QM/PM/SM: User Subscreen for Additional Data on Task
QQMA0012 QM/PM/SM: User Subscreen for Additional Data on Activity
QQMA0014 QM/PM/SM: Checks before saving a notification
QQMA0015 QM/PM/SM: User-Exit before Call-Up of F4 Help on Catalogs
QQMA0016 QM/PM/SM: “User data” Function “Goto” –> “Task” Menu
QQMA0017 QM/PM/SM: “User data” Function “Goto” –> “Activity” Menu
QQMA0018 QM/PM/SM: Deadline setting based on entered priority
QQMA0019 QM/PM/SM: Default Partner when Creating a Notification
QQMA0021 QM/PM/SM: Function “User data” in “Goto” menu
QQMA0022 QM/PM/SM: “User data” function in “Goto -> Causes” menu
QQMA0023 QM/PM/SM: “User data” function in “Goto -> Item” menu
QQMA0024 QM/PM/SM Deactivate function codes in CUA menu
QQMA0025 PM/SM: Default values when adding a notification
QQMA0026 PM/SM: Auth. check when accessing notification transaction
QQMA0027 PM/SM: Default values when adding a task
QQMA0029 QM/PM/SM: Change Notification Type
QQMA0030 Check validity of status change

Thanks for reading,
Piehl

Blockchain – Linking Meta Mask to a website

So, one of the things I struggled with while making my new token, was getting Meta Mask to link to my website.  So, I could see that it was connected to Meta Mask through web3, but for some reason when I wanted to return my address, or anything like that, it kept coming back as null.  After digging into my front end for a while, I finally decided to check Meta Mask.  And here is how I finally solved the issue.

Press Settings

click on Connected sites

Press Manually connect to current site

click in front of the accounts you want to connect.

Press Connect

You should now see that it is connected.  Hope this helps,

Thanks for reading,

SAP Service Management – User Exits – Technical Objects

One of the things I never blogged about is the many user exits that service has to offer.  Like all good consultants, this is a last resort, but inevitably, you will need these from time to time.  So I’ll be putting out some posts with the user exits I have found for the different areas that service management touches.  Hope you find these as useful as i have.  Many of these I have not personally used, but just being to run through the list and get an idea of where to look has been invaluable in my career.

Thanks for reading,

Enhancement Description
ICSV0001 Display of geographic location data
ICSV0003 Partner selection
IEQM0001 Add. checks for equip. installation at functional locations
IEQM0002 Additional checks for definition of equipment hierarchies
IEQM0003 Additional checks before equipment update
IEQM0004 Object is allowed for contract partner (Order->MaintCont.)
IEQM0005 Object allowed for SD contract (MaintContract->MaintCont.)
IEQM0006 Object allowed for SD contract (Maintain maintenance cont.)
IEQM0007 Check/change manufacturer field in equipment master
IHCL0001 Create equipment using material template: Classes/chars
ILOM0001 Additional checks before saving a functional location
ILOM0002 User exit when checking structure of location numbers
IQSM0001 Automatic serial number assignment
IQSM0002 Check when copying object list
IQSM0003 Serial numbers, user exit for additional data
IQSM0004 Serial numbers, user exit after exiting the serial screen
IQSM0005 Serial numbers, user exit in the update
IQSM0007 Serial numbers, user exit for goods movements
IQSM0008 Serial number character string check
ITOB0001 PM: Customer include subscreen for techn. obj. master data
ITOB0002 ITOB: Field changes to copy model
ITOB0003 PM: Customer Include subscreen for fleet object data
ITOB0004 PM: Customer Exit fleet identification data: Checks

Adventures in Blockchain

It’s crazy how quickly you forget things when you don’t use them.  For example, I spent months learning blockchain, Solidity, smart contracts and how these all integrate.  Well, I have spent the last 5 days working through a prototype to build my own Token.  And a lot of the knowledge eventually came back to me…  but a lot slower than I would have liked.  So, the smart thing to do would be to document the things I just relearned.  So maybe I won’t forget it next time.

I used a lot of the material from Dapp University.   The problem is that the tutorial I was following is a couple of years old, and ultimately not exactly what I wanted to do, so it was good to remind me of “a” way to do it, but there are better ways.  Let me walk down the path of what I learned.

  1. Install node.js – since my development was all done in windows, everything requires a few extra hoops to jump through.  I had to install it globally with an executable, instead of installing it into my conda instance.
  2. Use Truffle.  This package has so many cool options, that without it, I can’t imagine developing in Solidity
    1. it’s an easy way to compile projects, migrate projects to any network setup in your truffle-config.js file.
    2. Truffle Boxes can let you start a project with everything you need, then you just need to update the given files and add your own stuff to it.  But it can give you starter websites and lots of code.  Great for starting out.
    3. truffle test is another handy command to quickly determine if your contracts work as expected.  You can couple these with chai for even more testing options.
    4. handy commands include:
      1. truffle compile
      2. truffle test
      3. truffle migrate –reset –network rinkeby
      4. truffle console
  3. Setting up the truffle-config.js file has a lot of subtle features and a lot of power.  Much of this depends on installing the correct packages.
      1. be sure to check your package.json to ensure you have the correct version and packages.
      2. Set your solidity version here.  Depending on what packages you choose, may force you to use a higher version.
      3. certain things can become obsolete, so pay attention and use your search engine to understand where errors came from.  it is often due to a version mismatch or  the package being complete replaced.  For example, Truffle-hdwallet-provider has become @truffle/hdwallet-provider since I originally did my blockchain projects.
  4. Be sure to install Ganache – and use it liberally while you are testing the contracts.
    1. Save a particular ganache instance so that you can copy several accounts into meta mask for easy use.
  5. Writing the smart contracts can be done in 2 ways…  both are pretty slick.
    1. Sublime Text with a bolt-on to help with the syntax.
    2. remix.ethereum.org – I totally forgot how handy this tool is.  It can connect to local files, or you could code the whole thing in their website.  Remix is nice because it offers you a compile option with just a push of a button.
  6. Build your smart contracts and test in tandem.  One of the lessons I walked away with from the DappUniversity tutorial is that it really does work well to write the test first, then add the code to the smart contract.
  7. Get to know Meta Mask really well.  I’m quickly learning that Meta Mask is the really the key to everything.
    1. it can link to any of the many Ethereum networks.  You can even configure it to talk to ganache on your local machine. (see point 3-1)
    2. Linking to a website is a little more cumbersome than I hoped, but still able to be linked relatively quickly, once you know the steps.  (I’ll do a blog post on this soon).
    3. install it ASAP.  in my opinion, it’s the initial steps to web 3.0.
  8. Get some rinkeby ether sooner, rather than later.  No matter what you choose to do, you’ll need this.  The cool thing is that a single wallet can hold Ether from multiple systems.  (or you could up different wallets like I did).
    1. https://faucet.rinkeby.io/
    2. you can get ether by simply doing a tweet or facebook post.  Then you can get as much as 18.5 Ether (and you can repeat it again after a certain time period if you need more).
  9. When you are ready to move a test network like rinkeby, Use Infura, not geth or something similar.
    1. Using Geth can work just fine, but dealing with the massive download (if you aren’t already doing it) takes a lot of time, and in my opinion a lot of extra hassle.
    2. Setup an infura site, make a project, and using @truffle/hdwallet-provider“, you can link your project using infura to talk to many different blockchains (mainnet, rinkeby, etc.)
  10. When you want to interact with your contract in the test network but haven’t build a frontend for everything, use Remix.
    1. Remix has a very nice interface that allows you to easily interact with your contract (I’ll do a post on this soon).

And this doesn’t even include the front end.  LOL.  Anyway, I hope some of these pointers can help, and there will be more posts in the future to go into details on these steps.

Thanks for reading,

Experimenting with Upwork… AKA Looking for an internship

So one of the website I recently stumbled upon, Dapp University, has some great blockchain tutorials, and it also gave me some great advice.  Namely, if you want to start doing any sort of blockchain programming, you need to get some experience.  It turns out there is sit called Upwork.com, it’s like a job site for freelancers.  Well, that pretty much suits me perfectly.  Let’s face it, just because someone has done a bunch of tutorials doesn’t mean they are worth hiring.  So this site allows you to setup a profile, add your resume, experience, etc, and set your rate.  After consulting forever, it’s funny to think I’d be be low-balling, but I decided that exactly what I would do in order to try to get some gigs.

First a little about upwork.  While it’s a great place to get started, keep in mind they take a hefty piece of your rate.  20% initially, and eventually, it drops to only 10%.  Given how a lot of headhunters work, it’s probably not that bad (since must of the body shops probably try to keep at least 20% of your rate for themselves).  So at least it’s transparent of what you get versus what they bill you at.  Well, since I’m basically looking for an internship, I dropped my rate down to $25/hr.  that means, for any gig I get, I’m getting about $20/hr.  Pretty low, but since I need to build my portfolio, it’s gonna get me in the door.

I built my profile about 4 days ago, I already have one gig, and just got invited to a second.  I have been overly honest, stating that I have no formal experience, and that’s why my rate is low.  Turns out, people are looking for cheap (at least for now), so if all goes well, I’ll be able to spend some time over the next few weeks building up some real world experience, building some blockchain applications, and finally putting some of this education to work.

Anyway, it’s worth a try if you are looking to try something new.  Just be smart (if you have no experience, low-ball your rate and let the client know),

Thanks for reading,